上一个内容:50.破坏性更小的代码跳转功能完善(无敌+秒杀)
原理是:找一个现成的辅助,使用PCHunter工具看现成辅助对目标游戏做了那些hook操作,然后再使用Ollydbg.exe工具分析现成辅助为何这样做。
下图左边红框是PCHunter工具检测的钩子,也就是说只要辅助使用了钩子在下面就可以检测到,右边是辅助开启了穿墙功能,开启之后在左边红框就检测到了,即4328CB位置
如果使用Ollydbg.exe工具分析代码的话需要,右击属性如下图红框
然后在下图红框位置的数据换成游戏的pid(Windows任务管理器中可以看到pid)
通过PCHunter工具进程钩子分析出如下辅助功能
c/c++的代码实现:
#include<iostream>
#include <Windows.h>
int main() {
std::cout << "请输入要作弊的游戏PID";
unsigned Pid;
std::cin >> Pid;
HANDLE hGame = OpenProcess(PROCESS_ALL_ACCESS, FALSE, Pid);
if (hGame) {
char data0[]{ 0xEB };
char data1[]{ 0xE9, 0xD3, 0x01, 0x00 };
char data2[]{ 0x00 };
char data3[]{ 0x75 };
SIZE_T lwt;
WriteProcessMemory(hGame, (LPVOID)0x4328CB, data0, sizeof(data0), &lwt); // 开启穿墙
WriteProcessMemory(hGame, (LPVOID)0x43F21D, data0, sizeof(data0), &lwt); // 开启无敌
WriteProcessMemory(hGame, (LPVOID)0x445A09, data0, sizeof(data0), &lwt); // 开启无敌
WriteProcessMemory(hGame, (LPVOID)0x4328AE, data1, sizeof(data1), &lwt); // 穿泡
WriteProcessMemory(hGame, (LPVOID)0x4476E3, data2, sizeof(data2), &lwt); // 无限泡泡
WriteProcessMemory(hGame, (LPVOID)0x445D04, data3, sizeof(data3), &lwt); // 推墙
std::cout << "Finsh!" << std::endl;
system("pause");
}
return 0;
}