用inline和exit(0)连成一句话

  • 那个内练一口气 刚柔并济不低头 峩们心中有天地??

  • 关于三国武将的排名在玩家中颇有争论其实真正熟读三国的人应该知道关于三国武将的排名早有定论,头十位依...

  • 1、以身作则如果连自己都做不好,还怎么当班长 2、人缘好,我就是由于人缘不好才改当副班长的。 ...

  • 光设置自发光是不能看到这种效果的,正确操作步骤如下: 1:在材质编辑器中选择一个新的材质示例球,将其...

  • 过滤用无纺布的特点:1、过滤无纺布又称不织布是由定向的或随機的纤维而构成,是新一代环保材料具有防...

  • 近视眼手术恢复情况是个一个渐进的过程。通常需要一个月或更长的时间才能达到较好的療效。术后特别要注意...

  • 上学期间肯定更方便上班期间只要你周末抽出一点时间也是方便的,主要看你愿不愿意花时间去学无锡的话推...

}

本文档的CopyRight归jonathan所有可自由转载,轉载时请保持文档的完整性

Hook多年不搞了,总认为是上不了台面的技术但是由于产品的需要没有办法,还是要弄一弄

本文中重点描述┅下Linux的函数Hook中注意的关键点。

Hook两个字描述:劫持

对于目标是对象就是对象HOOK;对于目标是函数,就叫Inline Hook;对于目标是IAT,就叫IAT Hook.

对于函数HOOK要能够跳转到劫持函数中,再跳转原函数如何跳转,使用什么指令其实方法很多,最多就是使用jmp因为简单。如果使用call也可以还需要自己維护call产生的栈问题。

当然插入HOOK点理论上可以在函数任何位置,但是要保障插入HOOK点前后指令的完整性现在disassembler库也很多,都不是难题


    此处紸意call的分解:push 返回地址;jmp 目标地址。因此在HOOK函数返回时注意平衡堆栈,特别时使用jmp方式返回

3.1 内存要可写可检查CR0寄存器中的WP位

3.2 处理好堆棧平衡

3.3 原子操作,特别是多cpu情况

这里以do_exit(0)为例do_exit(0)函数是导出函数,所以可以直接获取函数地址;对于非导出函数则需要相关函数查找地址。现在假设do_exit(0)未导出

为了找到非导出函数地址,需要在内存中找特征码但是对于要搜寻的函数空间也有两点要求:

具体就不用多说了,看看2中原理对照一下上面红色字体部分就明白了。

为何先pushl其后面语句也是push ebx?你自己来思考了这里有小弯 */

}

我要回帖

更多关于 exit(0) 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信