首页
社区
课程
招聘
[旧帖] 到底有几种Hook呀。。。 0.00雪花
发表于: 2012-4-19 11:28 8886

[旧帖] 到底有几种Hook呀。。。 0.00雪花

2012-4-19 11:28
8886
很迷茫,在罗云彬书中介绍的hook只是挂勾鼠标,键盘,日志等消息,用SetWindowHookEx,以为hook就是这了,但是最近从网上发现还有Inlinehook,ssdthook,idthook等,彻底晕掉了。
绕过Hook又是什么原理呢?
求资料或教程。。。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 130
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
inline \ ssdt \ object \ iat \eat \ idt \ irp hook
2012-4-19 11:46
0
雪    币: 6400
活跃值: (4160)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
3
应用层:inline hook,iat hook;
内核层:inline hook,ssdt hook,shadow ssdt hook,Object hook,iat hook,eat hook,idt hook,ipr hook;
//大概就这么多吧.
2012-4-19 12:00
0
雪    币: 297
活跃值: (235)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
4
擦。。。消息hook跟api hook是两回事,楼主前面说的是消息hook,截获消息的,后面算是函数hook吧,改变函数功能或流程
2012-4-19 12:20
0
雪    币: 275
活跃值: (51)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
HOOK方法总结
1、HOOK SERVICE TABLE:HOOK SSDT
这种方法对于拦截 NATIVE API 来说用的比较多。
SSDT hook,一句话——Windows把需要调用的内核API地址全都存在了
一个表中(System Service Dispatch Table),要想hook一个内核API,比较简单的办法就是把
该内核API在表(SSDT)中保存的地址修改为自己撰写的函数地址。

2、HOOK INT 2E 方法:IDT HOOK
IDT是中断描述表,可以替换其中的中断处理程序。
这种方法对于跟踪、分析系统调用来说用的比较多。原理是通过替换 IDT
表中的 INT 2E 中断,使之指向我们自己的中断服务处理例程来实现的。掌握
此方法需要你对保护模式有一定的基础。

3、 HOOK PE 方法:EAT HOOK
这种方法对于拦截、分析其他内核驱动的函数调用来说用的比较多。原理
是根据替换 PE 格式导出表中的相应函数来实现的。
EAT是可执行文件的导出表,记录DLL中可供其他程序使用的函数,可执行文件装载时会使用相应DLL的EAT表来初始化IAT表,通过替换EAT表中的函数地址,就可以使依赖于本DLL的程序得到一个假的地址。

4.IAT HOOK (ring3 用)
IAT是可执行文件的导入表,记录可执行文件使用的其它DLL中的函数,通过替换IAT表中的函数地址,可以hook相应DLL中的函数调用。

5、Inline Hook方法 (ring 0和ring3 都可以用)

Inline hook的工作流程:
1)验证内核API的版本(特征码匹配)。
2)撰写自己的函数,要完成以上三项任务。
2)获取自己函数的地址,覆盖内核API内存,供跳转。
Inline Hook的缺点:
1) 不够通用。各个windows版本中,内核API的开始一段不尽相同,要想通吃,就要多写几个版
本或者做一个特征码搜索(因为有的内核API在各个版本中非常相似,只是在“特征码”之前或之
后加一点东西)。
2) 已被一些检测工具列入检测范围,如果直接从内核API第一个字节开始覆盖,那么很容易被检
测,如果把覆盖范围往后推,并加以变形,也许能抵挡一气。具体情况,我才疏学浅,尚未试验

6.SYSENTRY hook
为了性能的考虑,xp后的系统都改用sysentry命令来进入ring0,去调用SSDT中的服务,不再是通过IDT中的 int
2E。这也使得我们hook也变得相对容易了。
首先获得sysentry的地址,然后改之,不用再考虑IDT了

7)IRP hook
IRP是 I/O request packets,驱动程序中有一系列分发例程来处理请求,这些例程保存在驱动设备对象的数据结构中的一个表中,也很容易替换。
2012-4-19 13:09
0
雪    币: 275
活跃值: (51)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
看雪里面有讲后面那些钩子的教程
你自己找找呗
楼上的说了
setwindowhookex那个玩意是hook 消息的
是系统提供的接口
后面的那几种hook技术那是 够函数的
那算是非正常技术
不是系统提供的功能
2012-4-19 13:19
0
雪    币: 31
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
汗,那像inline这种钩函数的钩子,起码的有权限去修改系统代码吧,难道得用sys来做?
能给个入门资料链接吗?
2012-4-19 16:43
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习中~~~~~~~~~~~~~~~~
2012-4-19 16:57
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
9
64 位很难在驱动层玩 inline hook
2012-4-19 17:18
0
雪    币: 31
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
32位的就可以了,Windows内核情景分析 里面有讲不?
2012-4-19 17:38
0
雪    币: 275
活跃值: (51)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
我记得坛子里面有hook 的资料下载啊
你自己找找吧
2012-4-19 22:05
0
雪    币: 31
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
楼上能给个链接吗?非常感谢。
2012-4-19 23:11
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
这贴不错,哈哈
2012-4-19 23:40
0
雪    币: 31
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
快沉了哇,顶顶。
2012-4-20 10:59
0
游客
登录 | 注册 方可回帖
返回
//