网站开发目的意义,wordpress上图片不显示,建设一个下载资料的网站,学编程怎么入门修改RIP相关指令 0x70-0x7F #xff08;JCC#xff09;
条件跳转#xff0c;后面跟一个字节立即数的偏移#xff08;有符号#xff09;#xff0c;共两个字节#xff08;定长指令#xff09;如果条件成立#xff0c;跳转到当前指令地址 当前指令长度 lb向前跳7FJCC
条件跳转后面跟一个字节立即数的偏移有符号共两个字节定长指令如果条件成立跳转到当前指令地址 当前指令长度 lb向前跳7F向后跳80 上图中70-7f的硬编码为jcc跳转指令定长可以看到大于等于80是向上跳而小于80是向下跳
这是一个字节的情况
我们来看下两个字节的JO等指令如何查表指令相同但硬编码不同 首先查主表Table A-2 0F的位置 他告诉我们这个指令是2个字节要我们去查Table A-3的表我们再接着查Table-3 80的位置 Table A-3. Two-byte Opcode Map: 80H — F7H (First Byte is 0FH) * 查这张表 对应的是Jcc指令再看一下上面的一排小字 Jccf64, Jz - Long-displacement jump on condition意思是64位模式下忽略操作数大小前缀强制使用64位长位移跳跃条件 这些2个字节的jcc指令也有向上跳和向下跳的区分大于等于0x80000000向上反之向下 其他修改RIP的指令
0xE0 RCX RCX -1 当 ZF标志位 0 ECX ! 0 时跳转到当前指令地址 当前指令长度 偏移 0xE1 RCX RCX -1 当 ZF标志位 1 ECX ! 0 时跳转到当前指令地址 当前指令长度 偏移 0xE2 RCX RCX -1 当 ECX ! 0 时跳转到当前指令地址 当前指令长度 偏移 0xE3 当RCX 0 时跳转到当前指令地址 当前指令长度 便宜 0xE8 CALL指令的下一条地址 0xE9 JMP指令跳转 0xEA JMP 跨段跳转 0xEB JMP 短地址跳转 0xC3 RIP出栈 0xC2 RIP出栈后RSP RSP Iw 0xCB 出栈8个字节低4个字节赋值给RIP高4个字节中低2位赋值给CS 0xCA 出栈8个字节低4个字节赋值给RIP高4个字节中低2位赋值给CS,RSP RSP Iw