C++游戏辅助工具原理(1)

游戏辅助工具开发思路介绍

思路介绍

  1. 获取到目标进程(指的是运行中的游戏程序)
  2. 模拟鼠标,键盘操作程序(执行一些操作,通常用于挂机脚本)
  3. 修改数据(比如子弹数量,血量,蓝量等)

关键函数介绍:

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;
}

猜你喜欢

转载自blog.csdn.net/aa80303857/article/details/84923906