流程控制--for循环
#include "stdafx.h"
int main(int argc, char* argv[])
{
int sum=0;
for (int i=0;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
return 0;
}
这是一个求1+2+3+...+100的和的过程。
int __cdecl main(int argc, const char **argv, const char **envp)
{
signed int v3; // eax@1
int v4; // ecx@1
v4 = 0;
v3 = 0;
do
v4 += v3++;
while ( v3 <= 100 );
printf("sum=%d\n", v4);
return 0;
}
我们看到,for循环被修改成了do-while循环,我们修改一下:
int __cdecl main(int argc, const char **argv, const char **envp)
{
signed int i; // eax@1
int sum; // ecx@1
sum = 0;
i = 0;
do
sum += i++;
while ( i <= 100 );
printf("sum=%d\n", sum);
return 0;
}
这里在把
sum += i++;
修改下:
sum+=i; i++;
即
sum=sum+i; i++;
我把它放到编译器里面在运行一次。
#include "stdafx.h"
int main(int argc, char* argv[])
{
signed int i;
int sum;
sum = 0;
i = 0;
do
{
sum=sum+i;
i++;
}
while ( i <= 100 );
printf("sum=%d\n", sum);
return 0;
其实我们更应该看的是反汇编代码,而不是IDA“翻译”后的代码。

浙公网安备 33010602011771号