c++ - 在 Windows 上检测进程内存注入(inject)(反黑客)

标签 c++ windows memory code-injection

标准黑客案例。 Hack 文件类型注入(inject)启动的进程并使用 WriteProcessMemory 调用写入进程内存。在游戏中,这不是您想要的,因为它可以让黑客改变游戏的部分并给自己带来优势。

有可能会强制用户与游戏一起运行第三方程序,我需要知道什么是防止此类注入(inject)的最佳方法。我已经尝试使用一个函数 EnumProcessModules,它列出了所有进程 DLL,但没有成功。在我看来,黑客直接注入(inject)进程内存(堆栈末尾?),因此未被发现。目前我有几个选择。

  1. 创建一个包含大多数已知公共(public)黑客的文件、文件模式、进程名称和内存模式的黑名单,并使用程序扫描它们。这样做的问题是我需要维护黑名单并创建程序更新以容纳所有可用的黑客攻击。我还找到了这个有用的答案 Detecting memory access to a process但有可能一些现有的 DLL 已经在使用这些调用,因此可能会出现误报。

  2. 使用 ReadProcessMemory 监视众所周知的内存偏移量的变化(黑客通常使用相同的偏移量来实现某些目的)。与正常运行相比,我需要运行一些 hack,监控行为并获取 hack 行为样本。

  3. 是否可以在进程启动后以某种方式重新排列进程内存?也许只是将进程内存压入堆栈可能会使黑客感到困惑。 这是黑客调用的示例:

    WriteProcessMemory(phandler,0xsomeoffset,&datatowrite,...);

因此,除非黑客更聪明地搜索流程的实际开始,否则它已经取得了巨大的成功。我想知道是否有一个系统调用可以将内存重写到另一个位置或以某种方式在堆栈前面插入一些空数据。

那么,最好的方法是什么?这是编程中一个非常有趣和黑暗的领域,所以我想听到尽可能多的有趣想法。目标是防止黑客攻击或检测到它。

最好的问候

最佳答案

一次又一次地计算存储在内存中的应用程序图像的哈希值或 CRC,并将其与已知的哈希值或 CRC 进行比较。

我们的服务http://activation-cloud.com提供根据存储在数据库中的签名检查应用程序完整性的能力。

关于c++ - 在 Windows 上检测进程内存注入(inject)(反黑客),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11149424/

相关文章:

c++ - 错误 C2065 : 'DWORD_PTR' : undeclared identifier

c++ - 如何设置自定义小部件的背景颜色和边框宽度?

python - PyQt 应用程序在 Linux 上卡住屏幕,在 Windows 上正常

windows - 处理 nmake 错误级别/返回码

matlab - 索引(查询)ndgrid 输出而不实际构建它

C# : the close method of Xml. 加载(文件)

c++ - 如何使用Opus编码和解码音频数据?

c++ - 为什么在 exe 中找到损坏的名称?

linux - iperf3 Windows带宽比linux慢很多

C#如何在不使用大量内存的情况下裁剪图像?