日期:2014-05-17  浏览次数:20779 次

求大侠解救啊 怎么Hook 系统内核层的函数?
我现在遇到个问题,就是想把系统内核里面I/O操作函数里面把操作0X378地址的操作给拦截下来从而执行自己的代码,大概就是WRITE_PORT_UCHAR、READ_PORT_UCHAR、ULONG USHORT这几个函数了,求大神支招啊,谢谢了

------解决方案--------------------
如果人家没有用in out直接读写端口就行了。inline hook满大街了,网上找个例子临摩下吧,
用MDL或者改CR0都行,总得来说,就是先设内存属性为可写。另外,定位函数地址可以用MmGetSystemRoutineAddress.

引用:
先获取SSDT或者ShadowSSDT函数表,然后呢,你应该懂的...
如果你不懂,请你先去看看书,把基础打好。


楼上,人家要hook的hal的端口读写函数,关SSDT毛事?
------解决方案--------------------
指令应该hook不着了。
但不是没办法。可以使用硬件虚拟化。

硬件虚拟化依赖于Intel 80386+的几个特性。其中一个是I/O许可掩码,使操作系统可能诱捕(Trap)对任何一个端口的所有IN/OUT指令。

可这局限性仍然存在。CPU必须支持硬件虚拟化。而且AMD,intel的CPU下硬件虚拟实现方式也有不同。