看完郁金香第020课总结:

同样的一句指令 JMP 88881234在不同位置有以下现象

找规律:

88881234 - 010073bb = 87879E79

88881234 – 010073c0 = 87879E74

88881234 – 010073c5 = 87879E6F

因为机器码 如E9 749e8787 是按字节排列的所以87879E74显示出来是749e8787

所以可得以下公式

JMP的地址(88881234) – 代码地址(010073bb) – 5(字节) = 机器码跳转地址(E9 87879e74)

typedef struct _JMPCODE

{

BYTE E9;

ULONGJMPADDR;//88881234=B

}JMPCODE,*PJMPCODE

应用:

跳过ssdt_hook

例如:NtOpenProcess 被hook 真正的地址为 0xAAAAAAAA(old) ,hook之后的地址为0xBBBBBBBB(cur)。

那么我们可以修改0xBBBBBBBB里的内容,内容为一条JMP指令。以达到绕过ssdt_hook的目的。

//jmp结构
typedef struct _JMPCODE
{BYTE E9;ULONGJMPADDR;//88881234=B
}JMPCODE,*PJMPCODE//定义jmp结构
JMPCODE JCode;
JCode.E9=0xE9;  //jmp机器码
JCode.JMPADDR=cur-old-5;//计算JMP 后面的数值
_asm
{
mov ebx,cur  //取当前地址lea  ecx,Jcode //取结构地址mov ax,byte ptr [ecx] Mov byte ptr[ebx],ax //写jmpmov eax,[ecx+1] //移动指针mov [ebx+1],eax //写跳转
}

JMP指令转换公式推导相关推荐

  1. 17-equ伪指令和jmp指令

    1. equ指令 equ指令(英文为:equal),在Nasm汇编器中是一条伪指令.我们知道伪指令不能直接执行,需要经过编译器处理转换成纯汇编指令.类似equ指令的语法,在很多编程语言中都存在,有的叫 ...

  2. jmp指令对应的机器码

    od随便打开一个记事本,汇编几条jmp指令,可以看到如下 地址           HEX              反汇编 010073B4     - E9 7B9E8787      JMP 8 ...

  3. 转移地址在内存中的jmp指令 检测点9.1

    转移地址在内存中的jmp指令有两种格式: (1)jmp word ptr 内存单元地址(段内转移) 功能:从内存单元地址处开始存放着一个字,是转移的目的偏移地址. mov ax,0123h mov d ...

  4. 转移的目的地址在指令中的jmp指令 转移地址在寄存器中的jmp指令

    机器码中并没有包含转移的目的地址,只是给了一个位移的范围,通过位移的方式,实现对ip寄存器的修改. 转移的目的地址在机器码中的jmp指令 jmp far ptr s 转移的目的地址在寄存器中的jmp指 ...

  5. 操作符offset 和 jmp指令

    转移指令的原理 转移指令:可以修改IP或者同时修改CS和IP的指令(jmp.loop.call) 总的来说,转移指令就是可以控制CPU执行内存中某处代码的指令. 8086的转移行为有一下几类: 只修改 ...

  6. 基于8086CPU微处理器的汇编学习之JMP指令

    JMP指令: 更改CS:IP寄存器的内容,以让CPU从新指定的内存地址开始继续执行指令. 格式: JMP  段地址:偏移地址 ------------------------------------- ...

  7. 贺利坚老师汇编课程47笔记:jmp指令无条件转移只修改IP

    指路老师的博客 JMP指令的功能 无条件转移,可以只修改IP,也可以同时修改CS和IP(段间转移) JMP指令要给出的信息 转移的目的地址 转移的距离 JMP 2000:1000;段间转移(远转移) ...

  8. 汇编jmp指令的理解与用法

    这篇文章是在学习过程中对于转移地址偏移地址的理解以及网上缺乏帮助理解计算转移地址偏移地址的前提下诞生的.初次写知识点分享,如有误,请指出多包含. JMP是在编写程序中经常使用的指令,它的功能是转移到指 ...

  9. jmp指令(0903)

    本文为<汇编语言程序设计>0903小节例程.点击链接-进课程主页. jmp指令:依据位移进行转移 程序1: assume cs:codesg codesg segmentstart: mo ...

最新文章

  1. 机器学习为NASA贡献了什么?
  2. JVM调优:-Xms40M -Xmx60M 指定堆的最小、最大大小
  3. union all怎么用在循环里_ai软件怎么使用?ai里基本功能怎么用?
  4. python程序写蛇_python蟒蛇绘制程序
  5. vmware ubuntu重置root密码
  6. Greenplum roaring bitmap与业务场景 (类阿里云RDS PG varbitx, 应用于海量用户 实时画像和圈选、透视)
  7. pythondjangoddos_django带服务器
  8. C语言PAT刷题 - 1024 科学计数法
  9. android逆向 arm,[原创]Android下ARM静态反编译逆向.(小试多玩YY协议)
  10. 五行灵根 鸿蒙珠,异世鸿蒙武神
  11. 【Flutter】应用开发笔记
  12. 我招聘了一名程序员,试用期都过了,结果发现他学历是假的...
  13. mysql pdf微盘下载失败怎么办_mysql线上常见故障剖析.pdf
  14. Vue3中reactive的理解
  15. 微博话题下的数据爬取
  16. 知乎热议:27岁高中文凭、想自学编程,还有机会成为程序员吗?
  17. 【Dubbo】no provider available for the service错误解决方案
  18. 小米10手机耗电量记录
  19. python波形分析库_Python科学计算——任意波形拟合
  20. Eclipse光标变成黑色方块解决方法

热门文章

  1. 文件下载的文件名中文乱码
  2. springboot属性注入
  3. BufferedWriter_字符缓冲输出流
  4. SpringBoot_入门-HelloWorld细节-场景启动器(starter)
  5. java 调用 dll 乱码_java调用c++ dll出现中文乱码
  6. 数字电路技术可能出现的简答题_数字电子技术复习题(本科)
  7. sql相同顺序法和一次封锁法_率土之滨追击战法攻略
  8. 04 数据操作 + 数据预处理【动手学深度学习v2】
  9. Heartbeat VIP/IP 与 别名/辅助IP
  10. lduan HyPer-V 虚拟机服务监控及更新(十一)