windows 应用程序如何阻止其他进程访问ReadProcessMemory?

xqkwcwgp  于 2022-12-14  发布在  Windows
关注(0)|答案(1)|浏览(410)

Windows Internals (7th edition)中,作者提到:
线程不会意外地引用另一个进程的地址空间[...],除非另一个进程使其部分专用地址空间[...]可用,或者除非一个进程有权打开另一个进程以使用跨进程内存函数,如ReadProcessMemory和WriteProcessMemory(默认情况下,使用相同用户帐户运行且不在AppContainer或其他类型的沙箱中的进程可以获得该值,除非目标进程具有某些保护)。
(第1章,用户模式调度线程,重点是作者添加的)。
我可以在进程中添加哪些“特定保护”来防止其他进程调用ReadProcessMemoryWriteProcessMemory?默认情况下是否启用此保护?
这是否意味着我可以编写一个粗略的程序,从其他应用程序中抓取内存,而不需要管理员?
Disclaimer: I work for Microsoft.

8ljdwjyq

8ljdwjyq1#

你必须以管理员身份运行才能写入外部进程的内存。但是你不需要以管理员身份运行才能读取。
是的,你可以编写程序,刮外部进程内存。
你在用户模式下做的所有保护都可以很容易地从用户模式中绕过。
如果你想阻止人们在你的进程上使用ReadProcessMemory,你需要创建一个内核驱动程序来剥离OpenProcess()打开的句柄。
作为一个更简单的用户模式保护,你可以枚举所有打开的进程句柄,并在你的进程中发现一个你不喜欢的句柄(来自一个看起来很危险的进程)时关闭进程。

相关问题