标准黑客案例。Hack 文件类型注入到已启动的进程中,并使用 WriteProcessMemory 调用写入进程内存。在游戏中这不是你想要的,因为它可以让黑客改变游戏的一部分并给自己带来优势。
有可能会强制用户在游戏中运行第三方程序,我需要知道防止这种注入的最佳方法是什么。我已经尝试使用一个函数 EnumProcessModules 列出所有进程 DLL,但没有成功。在我看来,黑客直接注入进程内存(堆栈结束?),因此未被检测到。目前我有几个选择。
创建大多数已知公共黑客的文件、文件模式、进程名称和内存模式的黑名单,并使用程序对其进行扫描。这样做的问题是我需要维护黑名单并创建程序更新以保存所有可用的黑客攻击。我还发现这个有用的答案Detecting memory access to a process但可能某些现有 DLL 已经在使用这些调用,因此可能会出现误报。
使用 ReadProcessMemory 监控众所周知的内存偏移量的变化(黑客通常使用相同的偏移量来实现某些目标)。与正常运行相比,我需要运行一些 hack,监控行为并获取 hack 行为样本。
是否有可能在启动后以某种方式重新排列进程内存?也许只是将进程内存推入堆栈可能会使黑客感到困惑。这是 hack 调用的示例:
WriteProcessMemory(phandler,0xsomeoffset,&datatowrite,...);
因此,除非黑客更聪明地搜索过程的实际开始,否则它已经取得了巨大的成功。我想知道是否有一个系统调用可以将内存重写到另一个位置或以某种方式在堆栈前面插入一些空数据。
那么,最好的方法是什么?这是编程中一个非常有趣和黑暗的领域,所以我想尽可能多地听到有趣的想法。目标是防止黑客工作或检测到它。
此致