任何人都可以解释下面的asm代码吗?它能做什么? 我已经评论了一点了..
编辑:C++,与微软的Visual C++ 2008速成Eddition编译 - >重组x86 asm:帮助反汇编代码
.text:39552AF5 pop ecx
.text:39552AF6 push eax ; void *
.text:39552AF7 lea eax, [ebp+procedureVariable_C] ; get a proc variable from stack to eax?
.text:39552AFA call sub_39501565 ; call procedure with arguments: eax(void) and the lea result?
.text:39552AFF mov ecx, dword_395D0A44 ; dword_395D0A44("official") char gets moved into ecx
.text:39552B05 mov eax, ebx ; ?
.text:39552B07 call sub_39572981 ; ? no arguments?
.text:39501565 ; int __stdcall sub_39501565(void *)
.text:39501565 sub_39501565 proc near ; CODE XREF: sub_39501423+1Cp
.text:39501565 ; sub_39501803+1Cp ...
.text:39501565
.text:39501565 arg_0 = dword ptr 4
.text:39501565
.text:39501565 cmp [esp+arg_0], 0
.text:3950156A push edi
.text:3950156B mov edi, eax
.text:3950156D jnz short loc_39501573
.text:3950156F xor eax, eax
.text:39501571 jmp short loc_39501583
.text:39501573 ; ---------------------------------------------------------------------------
.text:39501573
.text:39501573 loc_39501573: ; CODE XREF: sub_39501565+8j
.text:39501573 mov eax, [esp+4+arg_0]
.text:39501577 lea edx, [eax+1]
.text:3950157A
.text:3950157A loc_3950157A: ; CODE XREF: sub_39501565+1Aj
.text:3950157A mov cl, [eax]
.text:3950157C inc eax
.text:3950157D test cl, cl
.text:3950157F jnz short loc_3950157A
.text:39501581 sub eax, edx
.text:39501583
.text:39501583 loc_39501583: ; CODE XREF: sub_39501565+Cj
.text:39501583 push eax ; int
.text:39501584 push [esp+8+arg_0] ; void *
.text:39501588 call sub_39501524
.text:3950158D mov eax, edi
.text:3950158F pop edi
.text:39501590 retn 4
.text:39501590 sub_39501565 endp
我怀疑这段代码使用了一个使用'EAX'和'ECX'作为参数的调用约定。像Borland的fastcall/register约定一样。但是,如果没有你所称呼的功能的内容,这很难说。如果你的程序使用某种全程序优化,这些甚至可能不是传统的调用约定。 – CodesInChaos 2011-06-12 12:03:20
添加您要调用的函数的代码。 – CodesInChaos 2011-06-12 12:06:24
太大又复杂,它是一个非常大的反汇编DLL。我想看到有关命令的一般信息..? – asm 2011-06-12 12:11:06