//可以死循环,不断+2并输出
int main()
{
int a = 0;
unsigned uesp;
DWORD fuc = 0;
__asm
{
mov uesp, esp
fldz//retnhere get this address ,next 7 bytes ,before 3 bytes ,all 10 bytes
fnstenv[esp - 0x0c]
pop ebx
mov fuc, ebx
mov esp, uesp
}
printf("%d\n",a);
a += 2;
__asm
{
jmp fuc
}
printf("结束\n");
return 0;
}
//这个程序有bug,输出0 2 0 2之后崩溃退出
int main()
{
int a = 0;
DWORD fuc = 0;
__asm
{
call next_line
next_line :
pop eax
mov fuc, eax
}
printf("%d\n",a);
a += 2;
__asm
{
jmp fuc
}
printf("结束\n");
return 0;
}