This one is a very simple one and for the beginners. Translate the following code to C++ or pseudocode. Do this line by line adding explanation what is going on here!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | .text:00401000 _main proc near .text:00401000 .text:00401000 var_8= dword ptr -8 .text:00401000 var_4= dword ptr -4 .text:00401000 argc= dword ptr 8 .text:00401000 argv= dword ptr 0Ch .text:00401000 envp= dword ptr 10h .text:00401000 .text:00401000 push ebp .text:00401001 mov ebp, esp .text:00401003 sub esp, 8 .text:00401006 mov [ebp+var_4], 5 .text:0040100D mov [ebp+var_8], 6 .text:00401014 mov eax, [ebp+var_8] .text:00401017 mov [ebp+var_4], eax .text:0040101A xor eax, eax .text:0040101C mov esp, ebp .text:0040101E pop ebp .text:0040101F retn .text:0040101F _main |
int main()
{ int var_4;
int var_8;
var_4 = 5;
var_8 = 6;
var_8 = var_4;
return 0;
}
TEHb, I think this program is assigning var_8 to Var_4. Because it is doing a mov of var_8 to eax, and then moving eax into var_4.
int main( int *argc, int *argv)
{
int var_8, var_4;
var_4 = 5;
var_8 = 6;
var_4 = var_8 ;
return 0;
}
BTW, argv should have been char *argv not int, my mistake.