美文网首页鲁班小技巧程序员C语言
C语言游戏外挂开发:无限续命,让你玩到嗨!

C语言游戏外挂开发:无限续命,让你玩到嗨!

作者: _年少无为 | 来源:发表于2019-07-10 16:16 被阅读42次
    世界那么大,谢谢你来看我!

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

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

    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++交流群:967051845!整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!~

    打开游戏
    运行外挂
    成功执行
    <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;">
    
    // 01一个简单的内存外挂.cpp
    // C/C++
    #include <windows.h>
    #include <stdio.h>
    int main() {
    HWND h = ::FindWindow(NULL, "Super Mario XP"); // 寻找并打开进程
    DWORD processid;
    GetWindowThreadProcessId(h, &processid);
    HANDLE hprocess = 0;
    hprocess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processid);
    if (hprocess == 0) { // 对应处理
    printf("打开进程失败! ");
    return 1;
    } else {
    printf("打开进程成功! ");
    DWORD hp = 10; // 要修改的游戏数据最大值
    DWORD heart = 99;
    DWORD life = 99;
    DWORD addr = 0x00428282; // 通过CE找到的游戏数据地址
    DWORD addr2 = 0x00428292;
    DWORD addr3 = 0x004282a2;
    DWORD res = WriteProcessMemory(hprocess, (LPVOID)addr, &hp, 4, 0); // 写入内存修改游戏数据
    DWORD res2 = WriteProcessMemory(hprocess, (LPVOID)addr2, &heart, 4, 0);
    DWORD res3 = WriteProcessMemory(hprocess, (LPVOID)addr3, &life, 4, 0);
    return 0;
    }
    </pre>
    
    总体评价

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

    福利来喽~

    小编C工作也有五年了,推荐一个C/C++学习交流群:967051845!里面整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!~

    相关文章

      网友评论

        本文标题:C语言游戏外挂开发:无限续命,让你玩到嗨!

        本文链接:https://www.haomeiwen.com/subject/vjyhkctx.html