плагины ida : Патчестроение : Форум


 den_po:
30.10.10, 04:35
 обновил по мелочи jdprean и решил выложить всё, что я публиковал из своих плагинов, в одном месте.

ida babe loader - загрузчик для mbn файлов db2000/2010/2012/2020/pnx5230. для a2 не подходит. с ним в своё время было много непоняток, народ всё какие-то шаманства повторял. при открытии файла не нужно выбирать тип процессора, вообще ничего не нужно, только убедиться, что в верхнем списке выбрано "SonyEricsson firmware file", и нажать OK.

ida cxc loader - такая же штука, что babe loader, но открывает cxc файлы от a2. за исключением типов поддерживаемых файлов, работает так же.

плагины-лоадеры кладутся в ida\loaders

find bl - простой плагин для поиска вызовов текущей функции (ищет bl/blx). ставите курсор на начало функции, вызываете плагин, ждёте окончания автоанализа, смотрите xref'ы.

jdprean - мой первый плагин для анализа арм-кода. разбирает код по нескольким захардкоденым сигнатурам. достаточно тупой, но позволяет автоанализатору ida разобрать довольно внушительную часть прошивки. я сам очень давно им не пользовался, вот, решил попробовать снова. многие считают, что плагин работает очень долго. на самом деле плагин работает относительно быстро (на моём ноутбуке phone_app.cxc от w705 обрабатывает чуть меньше двух минут), а вот автоанализатор ida может после этого очень долго думать. в принципе, автоанализатор не особо мешает работе, так что не обязательно ждать, пока он закончит.

sub/page finder - второй плагин для анализа кода. разбирает гораздо меньше, чем jdprean, но при этом даёт нормальные имена куче структур и функций. очень помогает при исследовании кода и при портировании. чтоб функции имели более понятные имена, рекомендуется перед плагином выполнить скрипт getevents_fromtarget (при наличии таргета в исходниках dyn_const для данной прошивки; см. ссылку ниже).

плагины кладутся в ida\plugins

всё плагины для x86.


до кучи ещё ссылки:
разбор прошивки - скрипты от mnemo, адаптация lost
getevents_fromtarget - скрипт от slawwan, добавляет в базу ida константы из исходников dynconst
скрипт для IDA - обзывание функций из библиотеки от slawwan

Прикрепленный к сообщению файл:

findbl.zip findbl.zip (64.37 kb; 219 hits) Скачать файл
ida_babeldr.zip ida_babeldr.zip (64.04 kb; 144 hits) Скачать файл
ida_cxcldr.zip ida_cxcldr.zip (69.61 kb; 158 hits) Скачать файл
jdprean.zip jdprean.zip (22.37 kb; 196 hits) Скачать файл
subpagefn.zip subpagefn.zip (102.13 kb; 218 hits) Скачать файл

 den_po:
10.12.10, 14:29
 выложить, в общем-то, некуда, поэтому публикую здесь. простенький патч для модуля процессора ARM к IDA, который ставит двоеточия возле имён меток кода

Код:
ROM:00000000 label1:
ROM:00000000                 NOP
ROM:00000002                 NOP
ROM:00000002 ; ---------------------------------------------------------------------------
ROM:00000004 label2          DCD 0x12345678


Прикрепленный к сообщению файл:

idaarmw32patch.zip idaarmw32patch.zip (6.69 kb; 71 hits) Скачать файл

 den_po:
03.02.11, 14:11
 в ida 5.3 макрос MOVL заменили на MOV, чтоб не было путаницы с командой MOVLS (команды MOV в thumb дополняются битом "S"). можно было бы переименовать макрос movl, но мне больше нравится другое решение. я написал плагин, который отображает макрос по-старому.
надеюсь, другие макросы/команды он не трогает :D
ну и заодно плагин предотвращает перевод в команды последовательностей нулей.

Прикрепленный к сообщению файл:

armmovl.zip armmovl.zip (21.46 kb; 61 hits) Скачать файл

 den_po:
14.08.11, 23:17
 wraprenamer - плагин для переименования обёрток на лету.
к примеру, вызывается в каком-то месте функция
Код:
44F09640                 LDR     R0, [SP,#0x24+var_24]
44F09642                 BL      sub_45109760
44F09646                 CMP     R0, #1

а функция эта - обёртка для обозванной функции
Код:
45109760 sub_45109760:                           ; CODE XREF: sub_44F095BC+86p
45109760                 LDR     R3, =(BookObj_GetDisplayOrientation+1)
45109762                 BX      R3 ; BookObj_GetDisplayOrientation
45109762 ; End of function sub_45109760
45109762
45109764 off_45109764    DCD BookObj_GetDisplayOrientation+1 ; DATA XREF: sub_45109760r

так вот sub_45109760 будет автоматически переименована в j_BookObj_GetDisplayOrientation даже без перехода на неё
Код:
44F09640                 LDR     R0, [SP,#0x24+var_24]
44F09642                 BL      j_BookObj_GetDisplayOrientation
44F09646                 CMP     R0, #1



Добавлено 14.8.11 23:35

вот ведь, только выложил, нашёл ещё один вид обёртки, который не обрабатывался. перезалил. один-два человека успели скачать первую версию


Добавлено 15.8.11 00:26

ну и ещё обёртка. есть ещё пара необратабываемых вариантов, но я не уверен, буду ли их добавлять:

ldr pc, =...

push {lr}
bl ...
pop {pc}

Прикрепленный к сообщению файл:

ida_wraprenamer.zip ida_wraprenamer.zip (65.62 kb; 84 hits) Скачать файл

 den_po:
02.09.11, 17:37
 обновил wraprenamer:
- не обзывает обёртки для unk_*
- нормальное определение для адресов, если указатель лежит не сразу после thumb обёртки
- удаление имени обёртки при удалении имени фукнции

 den_po:
11.03.12, 00:53
 обновил wraprenamer. теперь в конце имени обёртки добавляется не порядковый номер, а адрес. без этого плагин переименовывал не больше 100 обёрток на каждую функцию

URL этой темы:
https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=5131

© 2005-2018 supertrubka.org