兄弟,没办法。你的需求太高端了。 代码量应该还可以。这两种,现在都有开源的项目可供参考。
指令应该hook不着了。 但不是没办法。可以使用硬件虚拟化。 硬件虚拟化依赖于Intel 80386+的几个特性。其中一个是I/O许可掩码,使操作系统可能诱捕(Trap)对任何一个端口的所有IN/OUT指令。 可这局限性仍然存在。CPU必须支持硬件虚拟化。而且AMD,intel的CPU下硬件虚拟实现方式也有不同。
如果人家没有用in out直接读写端口就行了。inline hook满大街了,网上找个例子临摩下吧, 用MDL或者改CR0都行,总得来说,就是先设内存属性为可写。另外,定位函数地址可以用MmGetSystemRoutineAddress. 引用 3 楼 wskz876 的回复:先获取SSDT或者ShadowSSDT函数表,然后呢,你应该懂的... 如果你不懂,请……
先获取SSDT或者ShadowSSDT函数表,然后呢,你应该懂的... 如果你不懂,请你先去看看书,把基础打好。
原理介绍: Nt系统下用户层(Ring3)下写注册表的程序大都调用ntdll.dll导出的ZwSetValueKey,该API简单通过int 2e并传递一个服务号进入内核调用同名系统服务(NTSetValueKey)。所以在用户层(Ring3)下拦截写注册表的操作最后的也是最底层的方法便是拦截该API。 同时为了实时监控系统中当前运行的所有进程对该AP……
9,506
社区成员
28,984
社区内容
加载中
试试用AI创作助手写篇文章吧