我知道 WinAPI 有内置的黑客功能。
我什至在 C# 中使用它们与 Pinvoke...破解扫雷...这很容易...所以...
我如何保护我的应用程序免受进程内存编辑、拒绝 DLL 注入(inject)和其他黑客攻击方式。怎么做?!
希望 WinAPI 有类似 void DontTouchMeOrIWillTerminateYou(bool protect)
...
最佳答案
Windows 中的访问控制是基于每个对象的。如果要保护进程对象,则需要在创建进程时(通过 CreateProcess 的 lpProcessAttributes)或之后(通过 SetKernelObjectSecurity)设置进程对象的 ACL。如果您向 ACL 添加“全部拒绝”条目,攻击者尝试打开该进程将失败。
当然,进程的所有者(以及用户运行的任何恶意代码)可以将 ACL 更改回原来的状态——尽管恶意代码可能不准备这样做。为了有效地防止来自用户空间的攻击,您需要以非交互式用户(例如 LocalSystem)运行该进程。
再多的保护也无法阻止来自内核空间的攻击,因此任何可以安装驱动程序的人也可以破解系统上的任何进程。
关于C++ 和进程内存保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1448302/