Decompilers v2.1
x64 decompiler已经支持了!更新说明请看
http://www.commuch.com/p/tools/programming/complier/Hex-Rays-Decompiler/Update.aspx
另增加了该款型号的报价。
Decompilation 对比 Disassembly,这个文档说明了汇编数十行代码反编译成C代码只有一行。
Hex-Rays Decompiler带来的好处
汇编代码 | 反编译C代码 |
; == S U B R O U T I N E === ; int __cdecl sub_4061C0(char *Str, char *Dest) sub_4061C0 proc near ; CODE XREF: sub_4062F0+15p ; sub_4063D4+21p ... Str = dword ptr 4 Dest = dword ptr 8 push esi push offset aSmtp_ ; "smtp." push [esp+8+Dest] ; Dest call _strcpy mov esi, [esp+0Ch+Str] push esi ; Str call _strlen add esp, 0Ch xor ecx, ecx test eax, eax jle short loc_4061ED loc_4061E2: ; CODE XREF: sub_4061C0+2Bj cmp byte ptr [ecx+esi], 40h jz short loc_4061ED inc ecx cmp ecx, eax jl short loc_4061E2 loc_4061ED: ; CODE XREF: sub_4061C0+20j ; sub_4061C0+26j dec eax cmp ecx, eax jl short loc_4061F6 xor eax, eax pop esi retn ; --------------------------------------- loc_4061F6: ; CODE XREF: sub_4061C0+30j lea eax, [ecx+esi+1] push eax ; Source push [esp+8+Dest] ; Dest call _strcat pop ecx pop ecx push 1 pop eax pop esi retn sub_4061C0 endp | signed int __cdecl sub_4061C0(char *Str, char *Dest) { int len; // eax@1 int i; // ecx@1 char *str2; // esi@1 signed int result; // eax@5 strcpy(Dest, "smtp."); str2 = Str; len = strlen(Str); for ( i = 0; i < len; ++i ) { if ( str2[i] == 64 ) break; } if ( i < len - 1 ) { strcat(Dest, &str2[i + 1]); result = 1; } else { result = 0; } return result; } |
最强大的反汇编工具,支持大量的处理器