JMP地址公式推导
来源:互联网 发布:青蛙网络 编辑:程序博客网 时间:2024/04/29 10:53
以上有个问题:为什么同样的汇编指令JMP 12345678却对应不同的机器码呢?
首先,机器码E9表明这是一个近跳转(Near Jmp)
这里需要补充下相关知识:
JMP分3种:
①短跳转(Short Jmp,只能跳转到256字节的范围内),对应机器码:EB
②近跳转(Near Jmp,可跳至同一段范围内的地址),对应机器码:E9
③远跳转(Far Jmp,可跳至任意地址),对应机器码: EA
短跳转和近跳转指令中包含的操作数都是相对于(E)IP的偏移。
远跳转指令中包含的是目标的绝对地址。
所以短/近跳转会出现跳至同一目标的指令机器码不同,不仅会不同,而且应该不同。
而远跳转中包含的是绝对地址,因此转移到同一地址的指令机器码相同 。
至此,我们知道了跳转指令所对应的机器码根据E(IP)计算出来的,那到底是怎么计算的呢?
比如:
上图的第一条指令:01007568 - E9 0BE13311 JMP 12345678
此时的EIP=01007568
12345678- 01007568 = 1133E110 这里只是指向当前指令的EIP处,实际计算跳转地址要去掉当前指令的长度,当前的跳转指令需要5个字节, 1133E110 -5= 1133E10B
注意颠倒顺序,高位在后
原创文章,转载请注明出处:http://blog.csdn.net/php_fly
- JMP地址公式推导
- JMP地址公式推导
- JMP指令转换公式推导
- JMP指令转换公式推导
- JMP指令转换公式推导
- 公式推导
- JMP 地址计算
- 缓冲区溢出 jmp esp 地址
- JMP CALL 二进制指令计算公式
- Catalan数公式推导
- 平方和公式推导
- 推导坐标旋转公式
- 点乘公式推导
- POJ1183 公式推导
- plsa 公式推导
- hdu4602 - Partition(公式推导)
- HDU4602+数学+推导公式
- 推导坐标旋转公式
- C++删除一个文件
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程
- Sobel边缘检测算法
- 数据库访问抽象类实现项目数据库灵活切换
- linux基础知识
- JMP地址公式推导
- LSH: Locality Sensitive Hashing Theory
- 工厂模式(简单工厂,工厂方法,抽象工厂)
- php错误:non-static method xxx()should not be called statically
- 数字证书原理
- IP头、TCP头、UDP头详解以及定义
- LSH: Locality Sensitive Hashing Theory
- 机房收费管理系统 大二下学期数据库课程设计题
- ACE学习(九)ACE_Timer_Queue