我使用IDA来反汇编文件,其中一个部分包含了这个。这是做什么的?它在C中会是什么样子?
我相信它会将edx推入堆栈,并使用_atoi将其转换为整数,但之后在eax中留下了什么,为什么将它与5进行比较?
mov ecx, [ebp+argv]
mov edx, [ecx+4]
push edx ; char *
call _atoi
add esp, 4
mov [ebp+var_60], eax
cmp [ebp+var_60], 5
jle short loc_401167
答案 0 :(得分:3)
C代码看起来像这样
int var_60;
if ( (var_60 = atoi( argv[1] )) > 5 )
{
// execute the instructions after the 'jle' instruction, e.g.
printf( "Invalid argument\n" );
exit( 1 );
}
换句话说,代码检查程序的第一个参数是否小于或等于5的数字。它还保存转换后的值以供以后使用。