某豆人辅助逆源
本帖最后由 lichunfeng 于 2020-9-4 21:10 编辑这个辅助貌似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, 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,&sp, sizeof(sp), NULL);
}
}
~~~~ // GetProcessIDFromName
这个函数的代码分享下呗!!
shinyy 发表于 2020-9-5 08:20
背起了行囊???
大哥就是跑快点怎么了? 不明觉厉,看的有点懵逼 不明觉厉~ 不明所以~ 厉害了代码 今天看直播猴哥被g气坏了哈哈 PC版简直没法好好玩 PC版本的我都卸载了,那挂开的满天飞。。。 (⊙﹏⊙)某豆人 看不太懂 ,感觉厉害哈哈哈哈