游戏辅助工具开发思路介绍
思路介绍
- 获取到目标进程(指的是运行中的游戏程序)
- 模拟鼠标,键盘操作程序(执行一些操作,通常用于挂机脚本)
- 修改数据(比如子弹数量,血量,蓝量等)
关键函数介绍:
OpenProcess:
参数
DWORD dwDesiredAccess//访问方式
BOOL bInheritHandle//如果该值为TRUE,则由该进程创建的进程将继承该句柄。
DWORD dwProcessId//进程ID
返回值
HANDLE//进程句柄,句柄是元素的首地址(真不知道为什么叫句柄这种难理解的东西。)
WriteProcessMemory:
参数
HANDLE hProcess//进程句柄(万恶的句柄)
LPVOID lpBaseAddress//要写入的地址
LPCVOID lpBuffer//要写入的数据
SIZE_T nSize//数据大小
SIZE_T *lpNumberOfBytesWritten//可忽略参数,该参数用于获取写入到内存的数
ps:只用了两个关键函数就可以实现基本的数值修改操作了
查看进程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;
}