ret这个操作本质上都干了什么?
这是一个C函数的汇编代码:
int func(int i,int j)
{
return i+j;
}
汇编:
push ebp
mov ebp,esp
mov eax,dword ptr[i]
add eax,dword ptr[j]
pcp ebp
ret 8
上面的ret 8如果不用ret而用,pop,jmp等直接操作可行吗,代码是什么?
[解决办法]
16位far过程的ret等价于:
pop ip
pop cs
16位near过程的ret等价于:
pop ip
32位段间返回的ret等价于:
pop eip
pop cs
32位段内返回的ret等价于:
pop eip
[解决办法]
pop eip
pop ecs
jump ecs:[eip]