ida batch_decompile
0.1
反編譯所有東西!
IDA Batch Decompile 是 Hex-Ray IDA Pro 的一個插件,它添加了批量反編譯多個文件及其導入的功能,並帶有附加註釋(外部引用、堆疊變量大小)到偽代碼 .c 文件
噓! - ida-batch_decompile也是專案的一部分:unbox - 一個簡單的命令列工具,用於解壓縮和反編譯各種東西。
開啟目標,等待分析完成
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[8]/3__3__8]DEli; [+] is_ida64: False[__main__/36908][DEBUG] [idabatchdecompile.wait_for_analysis_to_finish] [+] 等待分析完成... [__main__/36908][DEBUG] [idabatchdecompile.wait_for_analysis_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__.Imda ( 0x056FCF90 >) [__main__/36908][調試] [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]”,“大小”:4,“名稱”:“arg_8”,“偏移”:16} // ******** * **********// ***** XREFS *****// * # 1// sub_30733D0+30// ************** ****int __stdcall sub_3052800(int a1, SIZE_T dwBytes, int a3) { int 結果; // eax@17 手柄 v4; // eax@21...
//github.com/tintinweb