-
-
[原创]inline hook和IDT hook结合
-
发表于:
2008-4-27 10:50
11581
-
[原创]inline hook和IDT hook结合
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的判断啊
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)