游戏辅助工具开发思路介绍(C++游戏辅助工具原理)
现在游戏辅助开发的语言工具有很多,但老牌游戏辅助开发语言还得是C++,现在也有很多游戏辅助开发工具内嵌的就是C++,下面介绍游戏辅助工具开发思路介绍(C++游戏辅助工具原理);
大致思路介绍
获取到目标进程(指的是运行中的游戏程序)
模拟鼠标,键盘操作程序(执行一些操作,通常用于挂机脚本)
修改数据(比如子弹数量,血量,蓝量等)
关键函数介绍:
OpenProcess:
参数
DWORD dwDesiredAccess//访问方式
BOOL bInheritHandle//如果该值为TRUE,则由该进程创建的进程将继承该句柄。
DWORD dwProcessId//进程ID
返回值
HANDLE//进程句柄,句柄是元素的首地址(真不知道为什么叫句柄这种难理解的东西。)
WriteProcessMemory:
参数
HANDLE hProcess//进程句柄(万恶的句柄)
LPVOID lpBaseAddress//要写入的地址
LPCVOID lpBuffer//要写入的数据
SIZE_T nSize//数据大小
SIZE_T *lpNumberOfBytesWritten//可忽略参数,该参数用于获取写入到内存的数
只用了两个关键函数就可以实现基本的数值修改操作了
查看进程ID,进程ID可以使用程序获取或者打开任务管理器查看。
要修改的内存值,需要通过CE工具查找,目前现在大部分人是这样做的,国人对CE的依赖难以想象,尽管这软件是开源的不过还是没人愿意读一下,摆脱CE我想并不困难。
#include <windows.h> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { DWORD dwPID = 0; HANDLE hProcess = NULL; BYTE bData = 0; DWORD dwAddress = 0; BOOL bMen = FALSE; cout << "输入流程ID" << endl; cin >> dwPID; cout << "输入内存地址(16进制)" << endl; cin >> hex >> dwAddress; cout << "输入具体的值" << endl; cin >> bData; while (TRUE){ hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, dwPID); cout << hex << &hProcess << endl; if (hProcess == NULL){ break; } WriteProcessMemory(hProcess,(LPVOID)dwAddress,&bData,sizeof(BYTE),NULL); CloseHandle(hProcess); } cout << "按任意键结束" << endl; int retVal = 0; cin >> retVal; return retVal; }