Здравствуйте, гость ( Вход | Регистрация )
![]() |
Форум переехал на новый адрес: forum.elfse.com Текущий форум остаётся в качестве архивного. Обсудить текущее положение дел можно здесь. |
![]() ![]() |
|
|
15.9.2009, 11:49
Сообщение
#1
|
||||
![]() 292 SE
О пользователе |
Основная идея программы: встроенный, готовый набор скриптов (короткий обзор некоторых из них, приведён ниже) для работы с файлами прошивки. Скрипты можно применить для любой прошивки. Скрипты генерируют библиотеки, есть дисассемблер и прочие вкусности (QuickFindPattern, GetByte, SetWord...)
Скрипты програмы написаны непосредственно на языке С, в программе TriX - встроенный анализатор языка С, таким образом скрипты выполняются непосредственно из источника. Пример: При анализе и поиске функций в прошивке используется Lib_Clara.h с соответствующими номерами swi. SVN для загрузки проэкта: ]]>https://svn.g3gg0.de/svn/default/trunk/nokia/TriX]]> Прим.: Желательно настроить обновления TriX с использованием TortoiseSVN, иначе по даной ссылке будете загружать очень долго. Всего выложенного на SVN, можно не качать (достаточно того, что приложил к сообщению). Для доступа на SVN: Код User: mados Login: behave! Прим.: у меня загрузка с этого SVN, работает очень плохо, с другими SVN (Perk11, Yael) всё работало намного лучше. Хотя, я настроил и всё загрузил. Если, не хотите качать с SVN, то берите, уже готовый набор. TriX со всеми аддонами и скриптами, для SE:
TriX.zip
( 7.67 мегабайт )
Кол-во скачиваний: 112Отдельно скрипты:
scripts.zip
( 478.36 килобайт )
Кол-во скачиваний: 115Пример загрузки прошивки и построения библиотеки с swi_number начиная от 0x112 и до 0x396 1) На вкладке General отмечаем чекбокс Input File и выбираем файл прошивки: 2) На вкладке Scripts выбираем скрипт для работы: 3) Жмём Add, жмём Start 3.1) Если скрипт требует вводу команд, то вводим их и жмём "Enter" Прим.: показал, на примере создания библиотеки. Но лично мне больше нравятся другие опции. Короткий обзор скриптов программы locate.trx - вводим имя ф-ции, получаем её адрес. Имя функции должно быть такого вида:GVI_FillSolidRoundRect. Но зачем этот скрипт, если есть либбилдер?! Хотя и этим, тоже можно пользоваться. dis_arm_vkp_patch.trx - вводим патч и получаем его исходник (нужно переключать режим GNU_FASM), можно загрузить либу в память... и через воркспейс смотреть память\адреса. Этот скрипт опишу чуть более подробно. Вот в двух словах мои "эксперименты": CODE ============================================ Сохраню тут c:\temp\1.vkp, так будет проще вводить адрес ============================================ Код ;K800 SW-R8BF003 ;permanent sms remainder counter/постоянный счётчик остатка символов смс ;(с) den_po ;(p) Ax +44140000 10bf2d4: 1528 A128 10bf2e2: 584903A808239B1ECA5AC252FBD16846 6B461B7803A206210E98C4F22EFC2AE0 10bf2f2: 00780A216B463CF7 FFFF250064000000 ============================================= как выше, мне не привычно, лучше пусть будет так... прибавим калькулятором :-) ============================================= Код 451FF2D4: 1528 A128 451FF2E2: 584903A808239B1ECA5AC252FBD16846 6B461B7803A206210E98C4F22EFC2AE0 451FF2F2: 00780A216B463CF7 FFFF250064000000 ============================================= так... ковыряем дисАРМом... переключим режим, в FASM ============================================= Код include "x.inc" sub_451FF2D4 equ 0x451FF2D4 sub_451FF2E2 equ 0x451FF2E2 off_451FF2F4 equ 0x451FF2F4 sub_454C3B4C equ 0x454C3B4C loc_0 equ 0x451FF348 ;------------------------------------------------- code 16 org sub_451FF2D4 cmp r0, 0xA1 ;------------------------------------------------- code 16 org sub_451FF2E2 mov r3, sp ldrb r3, [r3] adr r2, off_451FF2F4 mov r1, 6 ldr r0, [sp, 0x38] bl sub_454C3B4C b loc_0 remove_high_brightness_msg, remove_keypad_lock_msg, remove_loud ringtones warning, remove_main_menu_shortcut и другая "фигня", всей не пишу, разберётесь кому нужно. это готовые наборы для создания одноимённых патчей. Всю просто грузим скрипт проганяем и получаем готовый патч. Зачем "оно" нужно, так и не понял... Но патчи создаёт. change_file_info.trx Создаёт патч, в котором позволяет выводить полный путь к файлу, в информации о файле. get_fw_version.trx - можно, подумать, что я не знаю какой мэйн грузил :-) find_free_space.trx - поиск свободного места в прошивке. Результат работы - диапазон адресов, в котором имеется своодное место > 256 байт. pause.trx - скрипт не делает ничего. Загружает прошивку, для того, что б предоставить возможность просмотра и редактирования памяти. Выводит Start, End, Lenght (просмотр через: "Show workspace"). Особенно удобно при работе с *.mbn файлами (такие файлы обрабатываются значительно медленней, чем *.raw) key_ID_reader.trx Выводит шеснацетеричные коды клавиш. se_babe_defs.trx Скрипт необходимый для коректной работы остальных скриптов. Содержит информацию о функциях и прочем материале. Самостоятельно не используется. create_elflib.trx - Создание/проверка библиотеки. Можно и создать от 112 до 396 ф-ции Прим.: "ковырял" скрипты, там так прописано.. может можно, со временем, если добавится ф-ций, то и дальше. Можно и создавать и проверять/сверять с уже готовой библиотекой. У меня нашло некоторые различия (несущественные, но нашло). Но если честно, то использовать те адреса, которые "оно" находило у меня особого желания нет, библиотека моя довольно нормальная и без того. В принципе можно попробовать ковырять те, которые расходятся с моей, но смысла пока не вижу... Хотя вещь действительно не плохая. find_book_names - ничего не пишу... Этот скрипт может такое: Код 0x4568C784: 'FAILED_EVENT' 0x4568C92C: 'EVENT' 0x4571CBEC: 'SI_INTERNAL_EVENT_NO_EVENT' 0x45B568C5: ' EVENT' 0x45B5EA04: 'EVENT_SYNCML_DEVMAN_ALERT_EVENT' 0x45B5EA24: 'EVENT_SYNCML_DEVMAN_SESSION_EVENT' 0x45B5EA48: 'EVENT_SYNCML_DEVMAN_READY_EVENT' 0x45B889CC: 'DWLD_UNHANDLED_MMI_EVENT' find_function_wrapper - ничего не пишу... Этот скрипт может такое: Код Searching for PUSH {LR} BL FUNC POP {PC} : 0x441501D0 -> 0x44150A9C : 0x4415017C -> 0x44150AA4 : 0x44150194 -> 0x44150AAC : 0x44166BF6 -> 0x44151534 : 0x441D58C0 -> 0x44151534 Если работы над программой будут продолжатся, то эта статья пополнится новым материалом. Общее впечатление: TriX может работать практически с любой прошивкой не зависимо от платформы. При этом имеет ряд преимущест, по сравнению с аналогичными решениями для автоматизации (APAP) - высокая скорость работы TriX, возможность написания собственных скриптов, широкие возможности "автоматизации" анализа прошивки и тд. create_elflib работает, но некоторые адреса с моей библиотекой не совпадают?! Находит он НЕ всё, но в принципе много чего. В create_elflib есть функция проверки библиотеки. Созданую програмой библиотеку можно сравнить с Вашей и просмотреть различия. Прим.: 1) Есть возможность запуска нескольких скриптов, но естестественно не одновременно, а по очереди. 1.1) Скрипты можно использовать готовые, а можно писать самостоятельно. 2) Программа несколько нестабильна при работе. Статья написана по мотивам: mobilefree.ru
Автор программы: скорее всего: Bartec, копирайтов не вижу Сообщение отредактировал khodomay - 15.9.2009, 17:23 |
||||
![]() ![]() |