修改eip2015.1.20

一、eip

1、eip中存储了一个决定cpu下一行执行什么代码的地址,若想改变cpu的行为就修改eip寄存器

二、JMP指令(修改eip)

 

修改eip为4183FD,cpu自己跳转到相应位置

SHORT是跳转的位置离它所在的位置小于128字节会自动加上的,大于则没有

执行之后寄存器和堆栈都没有变化,只有eip改变

三、CALL指令

call到4183FD,为了cpu跑到4183FD处停下来堆栈不出错就在4183FD处下断点,选中那一行点击F2即可

 

eip的值改变了,ESP的值由0012FFC4变成了0012FFC0,而只有往堆栈里压东西的时候才会变成C0,堆栈中的0012FFC0压了一个值是CALL下面的地址即返回地址

 

CALL与JMP的

相同点:修改了eip的值

不同点:CALL把返回地址压到堆栈中

 

补充:怎么知道CALL指令下一条的地址是004183DC

 

看004183F7,后面的53是一字节,下一行地址就加一,D7有5个字节下一行就加5

 四、return指令(与call成对出现)

作用相当于pop eip

 

ESP和栈顶变回了C4,eip也变回了

 

posted @ 2024-10-24 11:40  Auriry  阅读(8)  评论(0编辑  收藏  举报