本帖最后由 wushaominkk 于 2019-3-25 09:27 编辑
[C] 纯文本查看 复制代码 #include <tchar.h>
#include "stdafx.h"
#include <Windows.h>
#include<iostream>
using namespace std;
int gameaddress = 0x0000000; //游戏基址;
HANDLE gameprocess;
首先这里是一开始需要用到的。 gameaddress是游戏基址,也就是用CE找到的最后一个地址。
[C] 纯文本查看 复制代码 int _tmain(int argc, _TCHAR* argv[])
{
//获取游戏窗口所在进程的进程ID,也就是PID
HWND hWnd = FindWindow(NULL, TEXT("进程id"));
if (NULL == hWnd)
{
printf("查找窗口失败\n");
return 0;
}
DWORD dwProcessId;
GetWindowThreadProcessId(hWnd, &dwProcessId);
printf("进程ID:%d\n", dwProcessId);
//获取进程句柄
gameprocess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
if (NULL == gameprocess)
{
printf("打开进程失败\n");
return 0;
}
这里是对进程ID的读取
[C] 纯文本查看 复制代码 int *get4point(int gameaddress,int p1,int p2,int p3,int p4)
{
int iBase, iP1, iP2,iP3,iP4,*iP5;
if (!ReadProcessMemory(gameprocess, (LPVOID)gameaddress, &iBase, 4, NULL))
{
return NULL;
}
if (!ReadProcessMemory(gameprocess, (LPVOID)(iBase + p1), &iP1, 4, NULL))
{
return NULL;
}
if (!ReadProcessMemory(gameprocess, (LPVOID)(iP1 + p2), &iP2, 4, NULL))
{
return NULL;
}
if (!ReadProcessMemory(gameprocess, (LPVOID)(iP2 + p3), &iP3, 4, NULL))
{
return NULL;
}
iP4=(int *)(iP4+p3);
return iP4;
}
上面这段是对当前地址的读取,就是根据基址和偏移找到现在的地址,以4个偏移为例子。
[C] 纯文本查看 复制代码 int *pwx=get5point(gameaddress,0xD4,0x88,0x1D0,0x8,);//这里的话输入4个偏移。
float wx = 150;
cout<<pwx<<endl;
WriteProcessMemory(gameprocess, pwx,&wx, 4, NULL);
对地址进行修改,就是在新的地址替换基址
新手入门,这是我当时在学c语言指针偏移的时候参考植物大战僵尸源码,写了一下中国式家长的修改器。
|