C++和进程内存保护

use*_*908 7 c++ windows winapi memory-management

我知道WinAPI具有内置的黑客功能.

我甚至在带有Pinvoke的C#中使用它们......要破解Minesweeper ......很容易......所以...

我如何保护我的应用程序免受进程内存编辑,拒绝DLL注入和其他黑客方式.怎么样?!

希望WinAPI有类似无效的东西DontTouchMeOrIWillTerminateYou(bool protect)......

Mar*_*wis 9

Windows中的访问控制基于每个对象.如果要保护进程对象,则需要在创建进程时(通过CreateProcess的lpProcessAttributes)或之后(通过SetKernelObjectSecurity)设置进程对象的ACL .如果向ACL添加"拒绝所有"条目,则攻击者尝试打开该进程将失败.

当然,进程的所有者(以及用户运行的任何恶意代码)都可以将ACL更改回原来的状态 - 但恶意代码可能不会这样做.为了有效防止来自用户空间的攻击,您需要以非交互式用户身份运行该过程(例如,作为LocalSystem).

没有多少保护可以防止来自内核空间的攻击,因此任何可以安装驱动程序的人也可以破解系统上的任何进程.