游戏逆向—Bl0ckdev_FPS—第二部分:模块2游戏作弊内部与外部的代码示例

admin 2026-08-08 06:36:19 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文是游戏逆向系列的第二部分,通过代码示例展示了内部作弊(DLL注入修改内存)和外部作弊(使用WriteProcessMemory)两种方法,以修改游戏中的HP值。文章禁用了ASLR以简化地址操作,并提供了具体的C++代码实现,属于技术教程性质。 综合评分: 70 文章分类: 逆向分析,红队,安全工具,实战经验


cover_image

游戏逆向— Bl0ckdev _FPS—第二部分:模块 2 游戏作弊内部与外部的代码示例

原创

bl0ckdev bl0ckdev

Esn技术社区

2026年7月6日 17:42 河南

在小说阅读器读本章

去阅读

安全编码与红队技术

简单的程序代码实例:

int hp = 1337; int main() {     while (true) {         hp--;         printf("hp 现在是:%i\n", hp);         getchar();     } }
  • 一个经典的程序示例,就是 每次我们按下回车键时都会降HP 值。
  • 禁用了地址空间布局随机化(ASLR)  ,这样基地址就不会改变。
  • 用 Cheat Engine 查到 hp 的地址是 0x403018,是时候编写破解程序了。

内部作弊的代码示例:

编写一个简单的DLL:

BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved) {     int* ptr = (int*)0x400000+0x3018; // 0x400000 是基地址(未启用 ASLR,因此是静态的)    *ptr = 999;     return TRUE; }

注入后, hp 值将变为 999。

外部代码示例:

DWORD pid = 18844; HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); // 我们需要进程句柄才能访问内存int hpValue = 999; WriteProcessMemory(hProc, (LPVOID)(0x400000 + 0x3018), &hpValue, sizeof(int), NULL);

在外部调用时,您需要获取进程句柄。为了简化代码,我将进程 ID 硬编码到了代码中。

以管理员身份运行此程序,它还会将 hp 值 更改为 999。

总结:

  本文对应的是上一篇的 模块1 内部作弊和外部作弊的解释


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Esn技术社区 bl0ckdev bl0ckdev《游戏逆向— Bl0ckdev _FPS—第二部分:模块 2 游戏作弊内部与外部的代码示例》

评论:0   参与:  0