滴水逆向三期-JCC
断点:他可以让cpu一条指令一条指令执行
EIP寄存器,里面存储了一个地址,这个地址决定了我们cpu下一行要执行的代码是什么,如果想CPU的行为,那我们要修改EIP这个寄存器
mov tip,0x12345678 虽然说这个不可以 但是jmp可以 jmp 0x4183FD
跳转的位置如果离这个相差128个字节 那就会加了个SHORT 如果超过就不会有SHORT
什么是JMP JMP和跳转没有关系,他的作用就是修改EIP,CPU自己才能跳,CPU走的时候会根据EIP里面的值去跳,所以JMP就是——修改EIP 别的跟他没有关系
执行JMP的时候发现寄存器没有变红的,堆栈没有变化 JMP唯一影响的是EIP的值
JMP指令,修改EIP的值
MOV EIP,寄存器/立即数 简写为:JMP 寄存器/立即数
CALL指令
PUSH 地址B
MOV EIP,地址A/寄存器 简写为:CALL 地址A/寄存器
记得要在call 后面的地方下断点F2(测试时候希望cpu跑到这里的时候停一下)测试的时候,为了可以让call的地方成功,一定要下断点,这样在他跳过来的时候,立刻让他停下来,要不然堆栈就出错了
CALL跟JMP相同的地方,把一个值放到EIP中
不同的地方ESP变了,说明忘堆栈里压了一个值——返回地址,是call的下一个地址
一行多少字节跟下一个差多少个字节
ret和call是成对出现的,call出去了 ret回来的
ret相当于pop eip
————2019.9.19 DT