前两篇文章介绍了两种加花的方法

  1. call $+5等技巧获得当前EIP,并跳转到指令中间
  2. 子函数劫持父函数流程

本文介绍一些更复杂的jxx,各种迷惑反汇编引擎的花式patch技巧

失败的尝试

先吐槽一下,jz&jnz跳转到同样的地址,形如

这个技巧根本就对抗不了IDA的反汇编引擎,线性扫描算法递归下降算法已经有所了解,但是各种资料都会提到这个做法,我这里尝试了根本就没用,不知道是不是我的打开方式不对

除非jz&jnz又跳转到之前提过的EB花指令上,但这也没有什么新意

jmp到jmp+1

首先我们在一堆noppatch EB FF,效果如下

jmp的指令位于地址0x140001018,而跳转到的指令是0x140001019,跳转到了jmp指令中间

接下来我们利用FF做一些手脚,比如改成序列EB FF C0

注意到FF C0表示的是inc eax

再在之后添加FF C8,也就是dec eax

IDA中如图

这里我手动把0xEB看作了数据,但实际上这样会导致IDA的栈平衡分析失败

点击收藏 | 1 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖