Декомпилируем все!
IDA Batch Decompile — это плагин для IDA Pro от Hex-Ray, который добавляет возможность пакетной декомпиляции нескольких файлов и их импорта с дополнительными аннотациями (xref, размер стека var) в файл псевдокода .c.
пссс! - ida-batch_decompile также является частью проекта: unbox - инструмента командной строки nobrainer для распаковки и декомпиляции всевозможных вещей.
открыть цель, дождаться завершения анализа
IDA Pro -> File/Script file... -> <this_python_script>
IDA Pro -> File/Produce file-> IdaDecompileBatch ...
отметьте Annotate StackVarSize
, Annotate Func XRefs
нажмите OK
чтобы декомпилировать.
Примечание. Файл будет сохранен в целевой папке как <target_image_name.c>
<path_to_ida>/ida(w|w64)(.exe) -B -M -S"<path_to_this_script> "--option1" "--option2"" "<target>"
Обратите внимание, что параметры необходимо заключать в кавычки с помощью "
Доступные параметры см. --help
--output ... output file path --annotate-stackvar-size ... annotate function stack variable sizes --annotate-xrefs ... annotate function xrefs --imports ... process imports --recursive ... recursive batch decompile --experimental-decompile-cgraph ... experimental: manually decompile function call graph
Следуйте документации IDA Pro о том, как добавлять плагины Python.
IDA Pro -> File/Produce file -> IdaDecompileBatch ...
[__main__/36908][DEBUG ] [idabatchdecompile.PLUGIN_ENTRY ] [+] инициализация IdaDecompileBatchPlugin[__main__/36908][DEBUG ] [idabatchdecompile.__init__ ] [+] is_windows: True[__main__/36908][DEBUG ] [idabatchdecompile.__init__ ] [+] is_ida64: False[__main__/36908][DEBUG ] [idabatchdecompile.wait_for_anaанализ_to_finish] [+] ожидание завершения анализа... [__main__/36908][DEBUG ] [idabatchdecompile.wait_for_anaанализ_to_finish] [+] анализ завершен. [__main__/36908][DEBUG ] [idabatchdecompile.load_plugin_decompiler] [+] попытка загрузки плагинов декомпилятора[__main__/36908][DEBUG ] [idabatchdecompile.load_plugin_decompiler] [+] плагины декомпилятора загружены. [__main__/36908][DEBUG ] [idabatchdecompile.PLUGIN_ENTRY ] [+] Режим: командная строка без аргументов[__main__/36908][DEBUG ] [idabatchdecompile.set_ctrl ] [+] IdaDecompileBatchPlugin.set_ctrl(<__main__.IdaDecompileBatchController объект в 0x056FCF90>) [__main__/36908][DEBUG ] [idabatchdecompile.init ] [+] IdaDecompileBatchPlugin.init() [__main__/36908][DEBUG ] [idabatchdecompile.init ] [+] настройка меню[__main__/36908][INFO ] [idabatchdecompile.PLUGIN_ENTRY ] [i] IdaDecompileBatch загружен, см. Меню: ('Файл/Создать файл/', 'IdaDecompileBatch...') ... Приложение полностью декомпилировано. [__main__/36908][DEBUG ] [idabatchdecompile.decompile_all ] [+] завершил декомпиляцию "dbghelp.dll" как "dbghelp.c"
//----- (03052800) ---------------------------------------- ----------------// **** Переменные ****// * размер стека: 20// {"diff_size": 4, "offset_text": "[bp +0h]", "size": 4, "name": " s", "offset": 0}// {"diff_size": 4, "offset_text": "[bp+4h]", "size": 4, "name": "r", "offset": 4}// {"diff_size": 4, "offset_text": "[bp+8h]", " size": 4, "name": "arg_0", "offset": 8}// {"diff_size": 4, "offset_text": "[bp+Ch]", "size": 4, "name": "dwBytes", "offset": 12}// {"diff_size": 4, "offset_text": "[bp+10h]", "size": 4, "name": "arg_8" , "смещение": 16}// *******************// ***** XREFS *****// * # 1// sub_30733D0+ 30// *******************int __stdcall sub_3052800(int a1, SIZE_T dwBytes, int a3) {интервал результата; // eax@17 РУЧКА v4; // eax@21...
//github.com/tintinweb