Descompile todas as coisas!
IDA Batch Decompile é um plugin para IDA Pro do Hex-Ray que adiciona a capacidade de descompilar em lote vários arquivos e suas importações com anotações adicionais (xref, stack var size) ao arquivo .c de pseudocódigo
pssst! - ida-batch_decompile também faz parte do projeto: unbox - uma ferramenta de linha de comando simples para descompactar e descompilar todo tipo de coisa.
abra o alvo, aguarde a conclusão da análise
IDA Pro -> File/Script file... -> <this_python_script>
IDA Pro -> File/Produce file-> IdaDecompileBatch ...
marque Annotate StackVarSize
, Annotate Func XRefs
clique em OK
para descompilar.
Nota: O arquivo será salvo na pasta de destino como <target_image_name.c>
<path_to_ida>/ida(w|w64)(.exe) -B -M -S"<path_to_this_script> "--option1" "--option2"" "<target>"
Observe que as opções precisam ser citadas com "
Opções disponíveis, consulte --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
Siga a documentação do IDA Pro sobre como adicionar plugins python.
IDA Pro -> File/Produce file -> IdaDecompileBatch ...
[__main__/36908][DEBUG] [idabatchdecompile.PLUGIN_ENTRY] [+] inicializando IdaDecompileBatchPlugin[__main__/36908][DEBUG] [idabatchdecompile.__init__] [+] is_windows: True[__main__/36908][DEBUG] [idabatchdecompile.__init__] [+] is_ida64: False[__main__/36908][DEBUG ] [idabatchdecompile.wait_for_análise_to_finish] [+] aguardando a conclusão da análise... [__main__/36908][DEBUG] [idabatchdecompile.wait_for_análise_to_finish] [+] análise concluída. [__main__/36908][DEBUG] [idabatchdecompile.load_plugin_decompiler] [+] tentando carregar plug-ins descompiladores[__main__/36908][DEBUG] [idabatchdecompile.load_plugin_decompiler] [+] plug-ins descompiladores carregados. [__main__/36908][DEBUG] [idabatchdecompile.PLUGIN_ENTRY] [+] Modo: linha de comando sem argumentos[__main__/36908][DEBUG] [idabatchdecompile.set_ctrl] [+] IdaDecompileBatchPlugin.set_ctrl(<__main__.IdaDecompileBatchController objeto em 0x056FCF90>) [__main__/36908][DEBUG] [idabatchdecompile.init] [+] IdaDecompileBatchPlugin.init() [__main__/36908][DEBUG] [idabatchdecompile.init] [+] configurando menus[__main__/36908][INFO] [idabatchdecompile.PLUGIN_ENTRY] [i] IdaDecompileBatch carregado, veja Menu: ('Arquivo/Produzir arquivo/', 'IdaDecompileBatch...') ... O aplicativo foi completamente descompilado. [__main__/36908][DEBUG] [idabatchdecompile.decompile_all] [+] concluiu a descompilação de 'dbghelp.dll' como 'dbghelp.c'
//----- (03052800) -------------------------------------------- ----------------// **** Variáveis ****// * tamanho da pilha: 20// {"diff_size": 4, "offset_text": "[bp +0h]", "tamanho": 4, "nome": " s", "offset": 0}// {"diff_size": 4, "offset_text": "[bp+4h]", "tamanho": 4, "nome": " r", "offset": 4}// {"diff_size": 4, "offset_text": "[bp+8h]", "tamanho": 4, "nome" : "arg_0", "offset": 8}// {"diff_size": 4, "offset_text": "[bp+Ch]", "tamanho": 4, "nome": "dwBytes", "offset": 12}// {"diff_size": 4, "offset_text": "[bp+10h]", "tamanho": 4, "nome": "arg_8", "offset": 16 }// *******************// ***** XREFS *****// * # 1// sub_30733D0+30// *******************int __stdcall sub_3052800(int a1, SIZE_T dwBytes, int a3) {int resultado; // eax@17 MANIPULAR v4; // eax@21...
//github.com/tintinweb