汇编系列16-修改EIP的指令(jmp,call,ret)

EIP 不叫通用寄存器,它里面存放的值,是CPU下次要执行的指令的地址。那么如何去修改它的值呢?

使用MOV 0xxxxx,是不可以的。

mov eip,0x12345678   ===相当于  jmp 0x12345678

 

 CALL指令,与jmp指令相同的点----修改EIP的值。

不同的点,会将call指令下一条指令的内存地址压入堆栈,esp栈顶指针的值减4。

遇到call指令,要想单步执行,不要按F8,要按F7--涉及调试器相关的知识,暂时不深入了解。

做底层的人知道 call指令是敏感指令。一般会做变形处理,用其他指令组合完成call指令完成的事情。

 将当前栈顶指针的值赋给EIP,同时让栈顶指针加4。

学习指令的时候,不要只关注指令的表面形式,而要关注指令到底做了什么事情。

原文地址:https://www.cnblogs.com/RevelationTruth/p/13917485.html