阅读:1686回复:8
关于在核心驱动中Hook函数?
哪位朋友有在Kernel Mode Driver中 Hook 以Ndis开头的这些函数的经验??愿不吝有以教在下
有帮助就会有分略表谢意 OS:W2K :P :P :P |
|
最新喜欢:![]()
|
沙发#
发布于:2002-05-09 13:03
1。列举所有调用了NDIS.SYS中的例程的模块,可以试试ZwQuerySystemInformation例程。
2。根据PE文件格式查找以上模块调用的NDIS例程的引入地址。 3。用你自己的入口地址修改这个引入地址,OK! 4。做完你自己的事情之后,用JMP指令将控制转移到原NDIS例程返回。 |
|
板凳#
发布于:2002-05-09 16:51
xdjm,
你试过没? 做完你自己的事情之后,用JMP指令将控制转移到原NDIS例程返回。 这句话什么意思 ? 贴点代码吧,老大。 |
|
地板#
发布于:2002-05-09 20:36
举个例子说吧。
_declspec(dllimport) int Func1(); // Exported functions from another module _declspec(dllimport) int Func2(); _declspec(dllimport) int Func3(); _declspec(dllimport) int Func4(); int INTTTT() { Func1(); Func2(); Func3(); Func4(); return 0; } 这个例子编译之后,代码如下: 10001000: E8 21 00 00 00 call 10001026h // Call Func1 10001005: E8 16 00 00 00 call 10001020h // Call Func2 1000100A: E8 23 00 00 00 call 10001032h // Call Func3 1000100F: E8 18 00 00 00 call 1000102Ch // Call Func4 10001014: B8 2B 02 00 00 mov eax,00h 10001019: C3 ret 1000101A: 90 nop 1000101B: 90 nop 1000101C: 90 nop 1000101D: 90 nop 1000101E: 90 nop 1000101F: 90 nop 10001020: FF 25 04 20 00 10 jmp dword ptr ds:[10002004h] 10001026: FF 25 00 20 00 10 jmp dword ptr ds:[10002000h] 1000102C: FF 25 10 20 00 10 jmp dword ptr ds:[10002010h] 10001032: FF 25 0C 20 00 10 jmp dword ptr ds:[1000200Ch] 大家看到了,在10001020h、10001026h、1000102Ch、10001032h地址处分别是一个跳转指令,跳转的目标地址即分别是引入函数Func1、Func2、Func3、Func4的引入地址。也就是说,在地址10002000h、10002004h、1000200Ch、10002010h处分别定义了引入函数Func1、Func2、Func3、Func4的引入地址。 现在我们来看看在地址10002000h、10002004h、1000200Ch、10002010h处的内容,这个实际上就是引入地址表(Import Address Table)。 10002000: 76 20 00 00 6C 20 00 00 00 00 00 00 96 20 00 00 v ..l ....... .. 10002010: 8C 20 00 00 00 00 00 00 54 20 00 00 00 00 00 00 . ......T ...... 10002020: 00 00 00 00 80 20 00 00 00 20 00 00 60 20 00 00 .... |
|
地下室#
发布于:2002-05-10 08:59
xdjm,你的回答真是太精彩了,我为你鼓掌~~~~~太感谢了~~~~真是太好了~~~~
;) |
|
|
5楼#
发布于:2002-05-10 09:05
还没看,先谢xdjm了。
|
|
6楼#
发布于:2002-05-10 11:11
厉害厉害 :D
|
|
7楼#
发布于:2002-05-10 15:38
DLL加载到内核去运行?那DLL调用到的API、DLL所引用到的其它DLL的怎么解决的?
举个例子说吧。 |
|
8楼#
发布于:2002-05-10 17:50
DLL加载到内核去运行?那DLL调用到的API、DLL所引用到的其它DLL的怎么解决的? 不能调用Win32函数,可以调用其他不依赖于Win32的DLL函数,外部DLL函数的引用我自己解决重定位问题。 |
|