首页
社区
课程
招聘
[原创]X64系统中WIN32程序应用层拦截驱动层交互的通杀方案
发表于: 2018-3-20 17:55 8762

[原创]X64系统中WIN32程序应用层拦截驱动层交互的通杀方案

2018-3-20 17:55
8762

X64系统中WIN32程序应用层拦截驱动层交互的通杀方案(WIN7x64测试通过)

    在X64的时代,为了兼容WIN32程序的运行,使用了特殊的处理机制,https://bbs.pediy.com/thread-225175.htm这个帖子做了详细介绍,各位看官可以先脑补一下。

今天要讨论的问题是在一个应用的内部利用应用层(R3)HOOK来拦截驱动层(R0)调用的通杀方案,他能实现的效果是:

1、一个HOOK通杀所有。

2、R3层拦截驱动调用,可以篡改传递的参数。

3、可以修改驱动调用后的返回信息。

4、可以自己构造驱动返回信息而不调用驱动直接返回。

下面我们来看看是如何做到的:

Win32时代的 KiFastSystemCall大家应该不陌生,他是R3通过R0的一条道路,但在X64系统上WIN32程序中已经看不到他的影子,我们来看看变成什么样子了,如下图

 

我们会看到,首先是EAX,这个我理解成函数编号,ECX,我也理解成小编号,关键是call dword ptr fs:[C0],我们CTRL+G进入这个地址看看:

 


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-3-20 17:58 被xjj编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (12)
雪    币: 775
活跃值: (2292)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
学习了,感谢分享
2018-3-20 18:13
0
雪    币: 221
活跃值: (2326)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
学习了
2018-3-20 18:30
0
雪    币: 1485
活跃值: (1135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
驱动不会防r3的拦截?毕竟驱动在底层可以做任何事
2018-3-20 18:32
0
雪    币: 8188
活跃值: (2847)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
5
楼主也不用说那么隐晦,十年前就有一个叫野猪的力量的东西,翻了一下硬盘么找到,git了一下关键字:GetProcAddress KiFastSystemCall,应该是这个了。
https://github.com/MalwareTech/FstHook
印象中在win8以上不好使了,不记得是不是记错了。
最后于 2018-3-20 19:36 被layerfsd编辑 ,原因:
2018-3-20 19:35
0
雪    币: 11160
活跃值: (3115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
X64系统有  类似32位KiFastSystemCall的API吗?
2018-3-20 20:54
0
雪    币: 286
活跃值: (67)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
xjj
7
tomtory X64系统有 类似32位KiFastSystemCall的API吗?
X64系统下的WIN32程序里,依然有KiFastSystemCall这个API,但他已经没有了应有的作用,,取而代之的就是我这个帖子说的方法。
2018-3-21 08:01
0
雪    币: 286
活跃值: (67)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
xjj
8
冰雄 驱动不会防r3的拦截?毕竟驱动在底层可以做任何事
一个API的调用过程是R3->R0->R3,我这里讲的是第一个R3到R0间的HOOK,,R3->HOOK->R0->R3
2018-3-21 11:31
0
雪    币: 222
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
mov ebx, 1A    <--  这个应该是SSDT函数表的序号
在x64下 会直接syscall,想不到X86下会这么曲折


好文,打包PDF,可以收藏用
最后于 2018-4-26 14:49 被geoh编辑 ,原因:
上传的附件:
2018-4-26 14:24
0
雪    币: 5734
活跃值: (1737)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
没啥用  32调用门切64  然后syscall  直接就绕过去了  楼主你想多了
2018-4-27 10:35
0
雪    币: 4939
活跃值: (2360)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
mark
2018-4-27 22:09
0
雪    币: 33
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
mack
2020-1-17 04:55
0
雪    币: 1440
活跃值: (1350)
能力值: ( LV3,RANK:23 )
在线值:
发帖
回帖
粉丝
13
那个 jmp for 033: 不是跳到内核,是调到64位dll中(用windbg 转成wow64以后继续调后面代码),64位dll再通过syscall
2020-7-7 12:09
0
游客
登录 | 注册 方可回帖
返回
//