通过 C 语言编写一个外挂,通过 API 函数获取游戏数据,从而实现作弊功能
对象分析
要用的 API 函数简单介绍
编写测试效果
总体评价
对象分析
本次游戏对象为 Plants vs. Zombies1.0.0.1051 汉化第一版
试玩发现主要数据有阳光、金钱,其中金钱最小以 10 为单位,因此数据应以 “显示钱数 / 10” 保存
通过 CE 确定阳光和金钱的基址计算公式
[[[006A9EC0]+768]+5560] = sun
[[[006A9F38]+82C]+28] = money
故所求基址为 006A9EC0 和 006A9F38,利用偏移即可得出数据
要用的 API 函数简单介绍
HWND ReadProcessMemory(HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead); 根据进程句柄读入该进程的某个内存空间 lpBaseAddress 的 nSize 字节,并写入缓冲区 lpBuffer,多次计算基址和偏移即可
编写测试效果
打开游戏
运行外挂 (截图前修改过钱数值)成功读取出阳光和金钱的数据,如再使用写入内存将所想要的值写入即达到修改功能
修改成功