C 语言游戏外挂 (一):一个简单的内存外挂

2-4L3m0JXuRfarNdk0

通过 C 语言编写一个简单的外挂,通过 API 函数修改游戏数据,从而实现作弊功能

  • 对象分析
  • 要用的 API 函数简单介绍
  • 编写测试效果
  • 总体评价

对象分析

2-W9KWpFIxLgeweNfo

本次游戏对象为 Super Mario XP

没有更新所以可用任意版本
试玩发现人物血量最大为 10,心最大为 99,命最大为 99

要用的 API 函数简单介绍

HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName); 通过类名或窗口名查找,返回窗口句柄

DWORD GetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId); 得到窗口句柄后通过 GetWindowThreadProcessId 这个函数来获得窗口所属进程 ID 和线程 ID

HANDLE OpenProcess(DWORD dwDesiredAccess,BOOL bInheritHandle,DWORD dwProcessId) 打开一个已存在的进程对象,并返回进程的句柄

bool WriteProcessMemory(HANDLE hProcess,LPVOID lpBaseAddress,LPVOID lpBuffer,DWORD nSize,LPDWORD lpNumberOfBytesWritten); 能写入某一进程的内存区域。入口区必须可以访问,否则操作将失败

编写测试效果

2-W9KWpFIxLgeweNfo

打开游戏

2-D3rBXoC0Dvnz57h1

运行外挂

2-4L3m0JXuRfarNdk0

2-ZoZeLRQW2498jxFB

成功执行


 

由于是简单外挂,没有 GDI 界面和失败对应处理,仅供入门学习交流