文章总结: 本文是游戏逆向系列的第二部分,通过代码示例展示了内部作弊(DLL注入修改内存)和外部作弊(使用WriteProcessMemory)两种方法,以修改游戏中的HP值。文章禁用了ASLR以简化地址操作,并提供了具体的C++代码实现,属于技术教程性质。 综合评分: 70 文章分类: 逆向分析,红队,安全工具,实战经验
游戏逆向— 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 游戏作弊内部与外部的代码示例》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论