【发布时间】:2014-09-17 15:09:55
【问题描述】:
在 Windows Server 2008 上,我有一个实例,有人正在写入应用程序的指令内存。有人写的大多是零,每 16 到 32 个字节穿插一个不同的哨兵字节,没有模式。我很确定,为了写入指令内存,必须有人调用VirtualProtect。我也很确定它是另一个应用程序(可能是病毒扫描程序)。
有没有办法跟踪内核对VirtualProtect 的调用?
是否有其他方法可以找出谁可能正在解锁和/或写入指令空间?
我看过WinDbg 和Performance Monitor
【问题讨论】:
-
使用调试器。在 {,,ntdll.dll}_NtProtectVirtualMemory@20 上设置断点
-
但我需要中断/跟踪系统。我需要找出哪个 exe 正在调用 VirtualProtect。
-
另一个调用 VirtualProtect() 的 EXE 将毫无意义,它只能更改自己的页面。如果它不是 DLL 注入,那么你会遇到更大的问题。重新安装。
-
严格来说是
VirtualProtectEx。调试器使用它来设置调试异常指令。所以它当然可以并且已经完成。但就我而言,它也在做一些坏事。
标签: windows debugging kernel32