求大侠解救啊 怎么Hook 系统内核层的函数?

zhucaibing1989 2013-01-31 10:41:58
我现在遇到个问题,就是想把系统内核里面I/O操作函数里面把操作0X378地址的操作给拦截下来从而执行自己的代码,大概就是WRITE_PORT_UCHAR、READ_PORT_UCHAR、ULONG USHORT这几个函数了,求大神支招啊,谢谢了
...全文
1176 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oo纳兰筱DoO 2013-03-02
  • 打赏
  • 举报
回复
参考一下开源项目
zhucaibing1989 2013-03-01
  • 打赏
  • 举报
回复
引用 10 楼 ydfivy 的回复:
兄弟,没办法。你的需求太高端了。 代码量应该还可以。这两种,现在都有开源的项目可供参考。
还是要谢谢你!这项目都搞了一个多月了,头都大了,这几天一直在研究intel的手册,看那个几个DEBUG REGISTER好像是能让让处理器产生 DEBUG EXCEPTION,貌似可以TRAP,但是后续怎么处理就有点模糊,哎,
一个傻冒 2013-02-28
  • 打赏
  • 举报
回复
指令应该hook不着了。 但不是没办法。可以使用硬件虚拟化。 硬件虚拟化依赖于Intel 80386+的几个特性。其中一个是I/O许可掩码,使操作系统可能诱捕(Trap)对任何一个端口的所有IN/OUT指令。 可这局限性仍然存在。CPU必须支持硬件虚拟化。而且AMD,intel的CPU下硬件虚拟实现方式也有不同。
一个傻冒 2013-02-28
  • 打赏
  • 举报
回复
兄弟,没办法。你的需求太高端了。 代码量应该还可以。这两种,现在都有开源的项目可供参考。
zhucaibing1989 2013-02-28
  • 打赏
  • 举报
回复
引用 7 楼 ydfivy 的回复:
指令应该hook不着了。 但不是没办法。可以使用硬件虚拟化。 硬件虚拟化依赖于Intel 80386+的几个特性。其中一个是I/O许可掩码,使操作系统可能诱捕(Trap)对任何一个端口的所有IN/OUT指令。 可这局限性仍然存在。CPU必须支持硬件虚拟化。而且AMD,intel的CPU下硬件虚拟实现方式也有不同。
谢谢你的回答,我现在就在头疼这个TRAP方法在每个系统下是不是都不一样,如果那样的话,代码量也挺大了
guozhengronglele 2013-02-28
  • 打赏
  • 举报
回复
做个标记,Mark一下
zhucaibing1989 2013-02-27
  • 打赏
  • 举报
回复
引用 4 楼 TianXuanXingHe_ 的回复:
如果人家没有用in out直接读写端口就行了。inline hook满大街了,网上找个例子临摩下吧, 用MDL或者改CR0都行,总得来说,就是先设内存属性为可写。另外,定位函数地址可以用MmGetSystemRoutineAddress. 引用 3 楼 wskz876 的回复:先获取SSDT或者ShadowSSDT函数表,然后呢,你应该懂的... 如果你不懂,请……
那有没有办法HOOK汇编的in out指令呢,现在我已经能把这几个函数都拦截下来了,但是有的驱动还是使用in、out指令,拦截不到,局限性还是大大的啊
一个傻冒 2013-02-02
  • 打赏
  • 举报
回复
你说的这几个函数应该都是hal里的。 逆一下hal.dll吧。
星星眼 2013-02-01
  • 打赏
  • 举报
回复
如果人家没有用in out直接读写端口就行了。inline hook满大街了,网上找个例子临摩下吧, 用MDL或者改CR0都行,总得来说,就是先设内存属性为可写。另外,定位函数地址可以用MmGetSystemRoutineAddress.
引用 3 楼 wskz876 的回复:
先获取SSDT或者ShadowSSDT函数表,然后呢,你应该懂的... 如果你不懂,请你先去看看书,把基础打好。
楼上,人家要hook的hal的端口读写函数,关SSDT毛事?
战狼之羊 2013-02-01
  • 打赏
  • 举报
回复
先获取SSDT或者ShadowSSDT函数表,然后呢,你应该懂的... 如果你不懂,请你先去看看书,把基础打好。
zhucaibing1989 2013-02-01
  • 打赏
  • 举报
回复
引用 1 楼 huyaowen31 的回复:
原理介绍: Nt系统下用户层(Ring3)下写注册表的程序大都调用ntdll.dll导出的ZwSetValueKey,该API简单通过int 2e并传递一个服务号进入内核调用同名系统服务(NTSetValueKey)。所以在用户层(Ring3)下拦截写注册表的操作最后的也是最底层的方法便是拦截该API。 同时为了实时监控系统中当前运行的所有进程对该AP……
我说的内核层啊

9,506

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 安全技术/病毒
社区管理员
  • 安全技术/病毒社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧