|
inline hook就是修改一个函数里面的几个字节为一条跳转指令,jmp到自己的函数中执行......
IDT HOOK就是修改IDT表中正常的异常处理例程的入口函数,为自己的函数地址 把这俩种思想结合起来就是""""一个字节钩子"""" 请看 nt!NtOpenFile: 80579fd0 8bff mov edi,edi 80579fd2 55 push ebp 80579fd3 8bec mov ebp,esp 对这个函数进行inline hook没什么问题.....但是我们这里只修改一个字节....所以不是inline hook mov edi,edi的机器码是8bff...........我们就把8b这个字节改下,就改成0xCD吧.....然后执行 nt!NtOpenFile时候.....意味着执行了0xCD 0xFF 这个机器码表示的是INT 0XFF...呵呵.....然后就发生了异常......转到处理INT 0XFF的异常处理程序............我们可以IDT HOOK INT 0XFF.........所以就执行我们自己的函数了 总结:::这种方法可以绕过现在很过工具的inline hook检测...因为我们只修改函数开头的一个字节...本质上说不是inline hook,没有jmp嘛..... 但是修改了IDT.....随便DUMP一下IDT就知道是否异常拉..........所以检测IDT 还是很重要的...因为这张表对病毒来说还是可以利用的....除了这个""""一个字节钩子"""""还有键盘记录...禁止调试等.......... 接着你们就可以试下了...inline hook和IDT hook的代码看雪就有 PS::我对HOOK基本是没什么兴趣....检测HOOK倒是有兴趣........所以在检测一个函数是否干净..看来还是要来个对0xCD的判断啊 |
inline hook和IDT hook结合
最新推荐文章于 2019-01-03 17:18:55 发布
本文介绍了一种结合inline hook与IDT hook的技术——一咬钩子,通过仅修改目标函数首字节触发异常,并利用IDT hook处理该异常,从而实现对函数流程的接管。这种方式能有效规避传统inline hook检测手段。
1912

被折叠的 条评论
为什么被折叠?



