搜索
查看: 2015|回复: 0
收起左侧

[其他源码] 糖豆人辅助逆源

[复制链接]

签到天数: 77 天

[LV.6]常住居民II

发表于 2020-9-5 00:34:12 | 显示全部楼层 |阅读模式

   这个辅助貌似N天前拿到的了,现已被和谐。当时还原出来了c++代码,由于也是没有加壳,看起来和源码并无太大区别,本质原理就是遍历内存搜索浮点数9.5(人物移动速度),然后将其保存到vector,调用writeprocmemory api 写入更快的速度(比9.5大的值)实现外挂功能,写入9.5还原速度,执行效率相当堪忧,好的方法是找到人物移动速度基址,直接改,因为遍历内存搜索太慢了。这里就不贴汇编代码的分析了,基本上就是一些Api的调用,push 参数 call。贴出部分代码,总滴来说就是一个学习的过程。

代码:

bool sFindGame() {//寻找游戏 遍历内存 搜索浮点数9.5
        speed.clear();
        DWORD fpid = GetProcessIDFromName(_T("FallGuys_client.exe"));//进程名取ID
        if (fpid == 0)
        {
                AfxMessageBox(_T("没有发现游戏进程! 先运行游戏"));
                return 0;
        }
        fHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, fpid);//取得进程句柄
        MEMORY_BASIC_INFORMATION MemInfo;
        for (static size_t address; VirtualQueryEx(fHandle, (LPVOID)address, &MemInfo, sizeof(MemInfo)); address += MemInfo.RegionSize)
        { //查询内存地址信息  然后遍历搜索浮点数9.5 ,搜索到之后保存
                if (MemInfo.State != MEM_COMMIT)
                {
                        continue;
                }
                std::vector <float> memory(MemInfo.RegionSize);//定义一个动态数组
                if (!ReadProcessMemory(fHandle, (LPVOID)address, &memory[0], MemInfo.RegionSize, 0))//读取内存赋值给动态数组
                {
                        continue;
                }
                size_t size = MemInfo.RegionSize / sizeof(float); //内存取域大小除以浮点长度 即遍历次数
                for (size_t i = 0; i < size; i++)
                {
                        if (memory == 9.5f)
                        {
                                speed.push_back(address + (i * sizeof(float)));//搜到浮点数9.5然后保存到全局变量
                        }

                }
        }
}
void SetSpeed(float sp) {//这个函数就是写入移动速度数值

        for (size_t x = 0; x < speed.size(); x++) {
                WriteProcessMemory(fHandle, (LPVOID)speed[x],&sp, sizeof(sp), NULL);

        }
}





上一篇:杰奇v1.7橙色模板小说源码
下一篇:某游戏官网css+js全自适应
您需要登录后才可以回帖 登录 | 注册用户

本版积分规则

快速回复 返回顶部 返回列表