C++ 和进程内存保护

标签 c++ windows winapi memory-management

我知道 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/

相关文章:

c++ - 使用可变参数模板创建具有可变列宽的二维数组?

c# - 自动打开google chrome,点击按钮,然后关闭chrome C# WinForms

c - 禁用 WinAPI

c++ - Win32API - 如何从进程句柄中获取进程的文件名?

c++ - 如果图像文件的内容在 char 数组中,如何使用 cv::imdecode?

c++ - 在文本模式下使用 seekg()

c++ - 在 C++ 中以特定的间隔速率调用方法

mysql - 在 MySQL 的所有数据库中运行 SQL 的等效 Windows 脚本?

windows - 从远程机器收集日志文件的最佳方法?

c++ - 在 PreTranslateMessage 中按 Ctrl+C 时接收 Ctrl+R 消息