jmp指令对应的机器码
od随便打开一个记事本,汇编几条jmp指令,可以看到如下
地址 HEX 反汇编
010073B4 - E9 7B9E8787 JMP 88881234
010073B9 - E9 769E8787 JMP 88881234
010073BE - E9 719E8787 JMP 88881234
010073C3 - E9 6C9E8787 JMP 88881234
010073C8 - E9 679E8787 JMP 88881234
010073CD - E9 629E8787 JMP 88881234
010073D2 - E9 5D9E8787 JMP 88881234
010073D7 - E9 589E8787 JMP 88881234
010073DC - E9 539E8787 JMP 88881234
010073E1 - E9 4E9E8787 JMP 88881234
010073E6 - E9 499E8787 JMP 88881234
可以看到同样的汇编指令,在不同的地址上的机器码不一样。
有啥关系呢?看第一条:88881234-010073b4=87879e80
这个值跟E9后面的那个值差了5(E9后面那个值要反过来看,因为X86是大端模式)
同样这个规律也使用与后面几条。
为什么呢?
下面摘录一个网上的
直接的jmp分3种
Short Jump(短跳转)机器码 EB rel8
只能跳转到256字节的范围内
Near Jump(近跳转)机器码 E9 rel16/32
可跳至同一个段的范围内的地址
Far Jump(远跳转)机器码EA ptr 16:16/32
可跳至任意地址,使用48位/32位全指针
要注意的是,短跳转和近跳转指令中包含的操作数都是相对于(E)IP的偏移,而远跳转指令中包含的是目标的绝对地址,所以短/近跳转会出现跳至同一目标的指令机器码不同,不仅会不同,而且应该不同。而远跳转中包含的是绝对地址,因此转移到同一地址的指令机器码相同
下面的指令是这样计算偏移的.
004A2FCE ^ E9 072BFEFF jmp 00485ADA
========
485ADA-4A2FCE= FFFE2B0C 这里只是指向当前指令的IP处,实际计算跳转地址要去
掉当前指令的长度,当前的跳转指令需要5个字节,FFFE2B0C-5=FFFE2B07
我们一般就用E9了,所以计算公式就是 要跳转的地址-指令所在的位置-5=机器码
当然 如果我们要在内存中写的话,肯定是写机器码的。也就是也E9 机器码。
结合上面的博文,可以在被HOOK的地址出写入JMP指令跳回到原来的地方,
被HOOK的地址-原来地址-5 = 机器码(这个就是要写入到 被HOOK地址的地方)
为什么不直接修改SSDT表,因为很多程序都会循环去看又没有被改回来,又会被修改回去。
jmp指令对应的机器码相关推荐
- Linux中jmp指令,jmp指令对应的机器码
短跳转和近跳转指令中包含的操作数都是相对于(E)IP的偏移,而远跳转指令中包含的是目标的绝对地址,所以短/近跳转会出现跳至同一目标的指令机器码不同,不仅会不同,而且应该不同.而远跳转中包含的是绝对地址 ...
- jmp指令的机器码编写
1.首先直接的jmp分3种 : Short Jump(短跳转)机器码 EB rel8 只能跳转到256字节的范围内 Near Jump(近跳转)机器码 ...
- 转移的目的地址在指令中的jmp指令 转移地址在寄存器中的jmp指令
机器码中并没有包含转移的目的地址,只是给了一个位移的范围,通过位移的方式,实现对ip寄存器的修改. 转移的目的地址在机器码中的jmp指令 jmp far ptr s 转移的目的地址在寄存器中的jmp指 ...
- 操作符offset 和 jmp指令
转移指令的原理 转移指令:可以修改IP或者同时修改CS和IP的指令(jmp.loop.call) 总的来说,转移指令就是可以控制CPU执行内存中某处代码的指令. 8086的转移行为有一下几类: 只修改 ...
- JMP指令转换公式推导
看完郁金香第020课总结: 同样的一句指令 JMP 88881234在不同位置有以下现象 找规律: 88881234 - 010073bb = 87879E79 88881234 – 010073c0 ...
- 贺利坚老师汇编课程47笔记:jmp指令无条件转移只修改IP
指路老师的博客 JMP指令的功能 无条件转移,可以只修改IP,也可以同时修改CS和IP(段间转移) JMP指令要给出的信息 转移的目的地址 转移的距离 JMP 2000:1000;段间转移(远转移) ...
- jmp指令【原理详解 8086汇编语言+笔记】
笔记目录 jmp指令原理详解篇(无条件转移指令) 1 初步理解 2 jmp指令格式(小总结) 3 jmp指令本质-详解 3.1 引子 3.2 jmp short 标号(jmp short s为例) 怎 ...
- 汇编语言--jmp指令
jmp为无条件转移,转到标号处执行指令可以只修改IP,也可以同时修改CS和IP: jmp指令要给出两种信息: 转移的目的地址 转移的距离(段间转移.段内短转移,段内近转移) jmp short 标 ...
- 转移地址在内存中的jmp指令 检测点9.1
转移地址在内存中的jmp指令有两种格式: (1)jmp word ptr 内存单元地址(段内转移) 功能:从内存单元地址处开始存放着一个字,是转移的目的偏移地址. mov ax,0123h mov d ...
最新文章
- 使用SVN+Axure RP 8.0创建团队项目
- linux 卡在grub_安装Linux系统,Ubuntu时卡在这个界面不动了,有3个小时了。。显示:“正在运行update_grub”......
- Codeforces 1009D:Relatively Prime Graph
- Install GIT in Ubuntu
- OMNet++新建工程及运行
- Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.
- android 属性动画恢复,android – 使用AnimatorSet恢复动画
- 论文发表在什么期刊上_设计论文发表【期刊论文】设计论文发表
- HAproxy的安装配置及动静分离
- 尚硅谷Javaweb教程书城项目订单模块完整版
- 中国各省份边界json文件
- COS对象存储服务的使用
- JAVA系列之JVM优化
- Vue+Vant制作单选全选全不选以及删除按钮van-checkbox
- 【Verilog数字系统设计(夏雨闻)6-------模块的结构、数据类型、变量和基本运算符号2】
- 中国全国城市列表JSON数据2022最新
- dll文件导出对应的lib文件
- 2021年蚌埠学院的高考成绩查询,2021年蚌埠学院高考录取通知书查询 通知书什么时候可以收到...
- 关于用出生日期查询生日还有多少天的问题
- 三国现实主义的巅峰——贾诩