首页
社区
课程
招聘
[原创]初学驱动——绕过DNF的Inline Hook
发表于: 2009-4-5 16:31 51495

[原创]初学驱动——绕过DNF的Inline Hook

2009-4-5 16:31
51495
收藏
免费 0
支持
分享
最新回复 (68)
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
有用到 OpenProcess,不过是在GetWindowText条件吻合之后才用的,也就是说还没调用OpenProcess ,Np就出错了。
我想知道RKU是不是看R0的,看R3的是不是要用别的工具?
2009-4-7 17:10
0
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
ring3 层的np的HOOK 你去掉没
2009-4-7 17:44
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
我就是想知道np除了在RKU能看到的Hook之外还有什么Hook,问我去掉没我肯定没去掉。。。因为连有没有Hook都不知道呵呵
2009-4-7 18:18
0
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
好好看看 RKU  都可以扫出来
2009-4-7 18:35
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
嗯,刚才是没好好研究RKU,原来Np是Hook了GetWindowThreadProcessId,只获取窗口文本就没事了
看到还Hook了打开进程,读、写内存等等。。。
如果要解决,是不是要把所有给Hook掉的函数都搞定

如果最终写好了驱动,先加载自己的驱动再加载np,是不是np就失去作用,这时我开个没过np的ce之类的工具还会不会给发现?
2009-4-7 19:20
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
谢谢分享 我也要努力学习驱动开发了
2009-4-9 17:51
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
看不懂...看的头痛3..3!  我忍!  慢慢来...
2009-4-9 17:55
0
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
就是 复制 NtOpenProcess 的代码到自己驱动的代码空间

然后 用个函数修复CALL和JXX ,楼主给给出C版本,我给出ASM版本

然后修改SSDT表里的NtOpenProcess的地址指向我们山寨版本NtOpenProcess

完毕,希望楼上可以看明白

嘿嘿
2009-4-9 18:15
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
为什么我下不了。
2009-4-13 14:22
0
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
因为要注册CSDN才可以下
2009-4-13 14:34
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
我注册很久了,csdn。我点下载什么反应都没有。我现在的分数是7,应该可以下的。
2009-4-13 16:36
0
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
可能删除了把

其实看下思路就可以了
2009-4-13 17:10
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
正在学习中 好痛苦啊
2009-4-13 19:57
0
雪    币: 208
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
特别提下,就是TX的Inline Hook比较深入,他Hook的不是头5个字节,所以一般的RootKit软件都检测不出来,我用的是IceBoy牛人用VB写的PsNull,再配合WinDbg。。。。
P.S.:
那个源码我没有删到的,如果被CSDN判别为非法内容删了我就不知道了,我看了我的资源下载里面还是有的,而且是免费下载,但是要先申请一个CSDN的账号(也是免费的)
2009-4-14 00:26
0
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
SnipeSword  用这内核扫描,很爽的
2009-4-14 08:35
0
雪    币: 492
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
看不懂... 但是想学习...

windows 真麻烦 不应该任由 程序去修改撒... (*^__^*) 嘻嘻……
2009-4-14 11:09
0
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
看下 33 楼
2009-4-14 11:24
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
为什么KeServiceDescriptorTable可以直接用?
2009-4-14 12:11
0
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
因为已经此为导出函数
2009-4-14 13:11
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
RtlInitUnicodeString(&temp, L"KeServiceDescriptorTable");
        KeServiceDescriptorTable=MmGetSystemRoutineAddress(&temp);   
功能相同么?
2009-4-14 13:53
0
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
mov eax,dword ptr [KeServiceDescriptorTable]

这样的在编译的时候,编译器就弄好了

你的那是动态获取的

最终的结果都是一样的

如果没有导出,两种方法都获取不了地址

可以从SSDT表里找
2009-4-14 14:04
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
哈哈,这个办法我没想到,受教了
2009-4-23 20:28
0
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
把这东西 ObOpenObjectByPointer 从内核的导出表里,修改下字符,TX的驱动就获取地址失败了,直接KO
2009-4-23 20:36
0
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
statusT = ((NTOPENTHREAD)MyThread)(ThreadHandle, DesiredAccess, ObjectAttributes, ClientId);

这里是不是是不是错了奥,我编译时候出现 cannot convert from UCHAR to openthread错误
2009-4-27 12:12
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
不错学习了!~~
2009-4-27 12:28
0
游客
登录 | 注册 方可回帖
返回
//