首页
社区
课程
招聘
[原创]NDIS6 X86通用hook代码
发表于: 2011-11-29 10:07 20823

[原创]NDIS6 X86通用hook代码

2011-11-29 10:07
20823
收藏
免费 6
支持
分享
最新回复 (20)
雪    币: 12
活跃值: (773)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
膜拜下,这方面的资料好少啊,据说NDIS比文件过滤系统更复杂
2011-11-29 10:22
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
3
不懂,楼主上面是什么开发环境“?
2011-11-29 10:28
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
4
是比较少,所以我就发出来,希望给大家一些帮助,当然用正规的filter驱动应该比较正统
不过hook不需要inf什么乱七八糟的,而且指针替换,应该X64都是可以跑,稍微改改即可
2011-11-29 10:28
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
5
http://bbs.pediy.com/showthread.php?t=141890
VIM编辑器,因为我linux用这个,所以比较顺手一点,VC6老是有一些问题,报什么srb文件错误,BSCMAKE错误,导致无法查看定义,火大ing!
2011-11-29 10:32
0
雪    币: 12
活跃值: (605)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
发一个我写的~
http://www.vxjump.net/files/security_research/ndis_hook.txt
2011-11-29 12:01
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
7
看了下,站点不错哦~,不过你那没有技术细节,而且感觉不怎么通用,实际上ndis6数据结构还是有很多变化的,能上代码吗?
2011-11-29 12:18
0
雪    币: 12
活跃值: (605)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
恩 NDIS6的数据结构是跟5不一样
我讲了HOOK和MINIPORT HOOK两种~
里面讲到的几种都方法已经在实际产品里大范围使用了~
除了没有代码,我觉得熟悉NDIS的人应该可以看懂我说的东西
2011-11-29 12:59
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
9
很多时候,hook 比写 filter省事
2011-11-29 13:37
0
雪    币: 67
活跃值: (91)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
10
NDIS里,用IMD,filter的是普通青年,用inline hook的是文艺青年,用指针替换的是.... 介个,你懂的
2011-12-1 18:03
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
11
inlinehook 无法在X64上面跑,而且如果大家都用IMD,filter的话,指针替换反而很安全的说
object hook流不就是指针替换吗?哈哈,我不懂
2011-12-1 19:27
0
雪    币: 67
活跃值: (91)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
12
把PG爆菊了不就好啦~~
2011-12-1 22:44
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
13
这个基本上才是第三类青年干的。。。噢,你懂的
2011-12-2 08:07
0
雪    币: 129
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
学习
2011-12-4 19:57
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
opencn 自己的论坛,自己一个人玩啊
2011-12-4 23:13
0
雪    币: 128
活跃值: (27)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
16
我也这么认为
2011-12-4 23:20
0
雪    币: 280
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
路过,看看热闹。
2011-12-5 01:29
0
雪    币: 255
活跃值: (207)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
18
+ 8
+ 0x16c

看到这些常数,我就担心到跨操作系统版本的通用性,能用微软结构尽量用,不要直接偏移。
2011-12-5 08:26
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
19
这个是X86下的,由于我完全没有64的签名,所以就没有处理64位的了,
+ 0x16c 在目前NDIS6各个版本下都是一样的,这个数据结构没有公开,当然可以自己声明一个,不过这个数据结构比较大,考虑到简洁一点,就直接硬编码了,但是理论上修改成X64的代码应该改动不多。0x16c要修改下,还有那个搜索函数要修改下
2011-12-5 10:45
0
雪    币: 128
活跃值: (27)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
20
有点代码可读性的问题,鄙人是这么做的
这些偏移专门放一个地方
#ifdef _WIN64
#define _OPEN_BLOCK_xxx_Offset 0x???
#else
#define _OPEN_BLOCK_xxx_Offset 0x16c
#endif
2011-12-5 11:35
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
这个真可以吗?
2011-12-6 09:46
0
游客
登录 | 注册 方可回帖
返回
//