Est-ce que quelqu'un pourrait m'expliquer le code asm suivant s'il vous plaît? Qu'est-ce qu'il fait? J'ai déjà commenté un peu..
EDIT: C++, compilé avec MS Visual C++ 2008 Express Edition -> réassemblé
.text:39552AF5 pop ecx
.text:39552AF6 push eax ; void *
.text:39552AF7 lea eax, [ebp+procedureVariable_C] ; obtenir une variable de proc de la pile dans eax?
.text:39552AFA call sub_39501565 ; appeler la procédure avec les arguments: eax(void) et le résultat de lea?
.text:39552AFF mov ecx, dword_395D0A44 ; le caractère dword_395D0A44("officiel") est déplacé dans ecx
.text:39552B05 mov eax, ebx ; ?
.text:39552B07 call sub_39572981 ; ? pas d'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