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

takidsm 2019-06-28

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

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

对象分析

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

image

本次游戏对象为 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); 能写入某一进程的内存区域。入口区必须可以访问,否则操作将失败

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

打开游戏

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

运行外挂

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

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

成功执行

<pre class="" style="padding-top: 8px;padding-right: 15px;padding-bottom: 6px;max-width: 100%;box-sizing: border-box;letter-spacing: 0.544px;widows: 1;border-radius: 0px;overflow-y: auto;color: rgb(80, 97, 109);font-size: 10px;line-height: 12px;background-color: rgb(22, 27, 29);word-wrap: break-word !important;">

  1. // 01一个简单的内存外挂.cpp
  2. // C/C++
  3. #include <windows.h>
  4. #include <stdio.h>
  5. int main() {
  6. HWND h = ::FindWindow(NULL, "Super Mario XP"); // 寻找并打开进程
  7. DWORD processid;
  8. GetWindowThreadProcessId(h, &processid);
  9. HANDLE hprocess = 0;
  10. hprocess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processid);
  11. if (hprocess == 0) { // 对应处理
  12. printf("打开进程失败! ");
  13. return 1;
  14. } else {
  15. printf("打开进程成功! ");
  16. DWORD hp = 10; // 要修改的游戏数据最大值
  17. DWORD heart = 99;
  18. DWORD life = 99;
  19. DWORD addr = 0x00428282; // 通过CE找到的游戏数据地址
  20. DWORD addr2 = 0x00428292;
  21. DWORD addr3 = 0x004282a2;
  22. DWORD res = WriteProcessMemory(hprocess, (LPVOID)addr, &hp, 4, 0); // 写入内存修改游戏数据
  23. DWORD res2 = WriteProcessMemory(hprocess, (LPVOID)addr2, &heart, 4, 0);
  24. DWORD res3 = WriteProcessMemory(hprocess, (LPVOID)addr3, &life, 4, 0);
  25. return 0;
  26. }

</pre>

代码可以左右移动哦!

总体评价

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

本文福利

获取方式:

1.在你手机的右上角有【关注】选项,或点击我的头像,点击关注!(关注我)

2.关注后,手机客户端点击我的主页面,右上角有私信,请私信发我:编程

电脑已经设置好了关键词自动回复,自动领取就好了!这几天上万个消息,真的回复不过来,所以回复的时候请注意关键词!

其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这里请私信我“编程”不管你是小白还是大牛欢迎入住大家一起交流成长。小编会在里面不定期分享干货源码,包括我精心整理的一份c++零基础教程。欢迎各位感兴趣的的小伙伴。

学习思路:

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

学习资料:

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

相关推荐