16,472
社区成员
发帖
与我相关
我的任务
分享
#define MonBase 0x0084F118
DWORD MonNumberByteRead;
DWORD dwMonBase;
DWORD dwMonOneOffset; //一级偏移
DWORD dwMonTwoOffset; //二级偏移
DWORD dwMonThreeOffset; //三级偏移
DWORD dwMonFourOffset; //四级偏移
DWORD dwMonCurBlood; //怪物当前血
DWORD dwMonCurX; //怪物X坐标
DWORD dwMonCurY; //怪物Y坐标
DWORD dwMonID; //怪物ID
DWORD dwMonClass; //怪物类别
DWORD dwMonGrade; //怪物等级
LPCVOID lpBase=(LPCVOID)MonBase;
HANDLE hProcess=::GetCurrentProcess();
ReadProcessMemory(hProcess,lpBase,&dwMonBase,4,&MonNumberByteRead);
ReadProcessMemory(hProcess,(LPCVOID)(dwMonBase+0x84),&dwMonOneOffset,4,&MonNumberByteRead);
ReadProcessMemory(hProcess,(LPCVOID)(dwMonOneOffset+0x4),&dwMonTwoOffset,4,&MonNumberByteRead);
ReadProcessMemory(hProcess,(LPCVOID)(dwMonTwoOffset+0x0),&dwMonThreeOffset,4,&MonNumberByteRead);
for (int i =dwMonThreeOffset;i<(dwMonThreeOffset+0x5f4);i+=4) //这里我换成&这样取地址就不能通过编译,我不知道这里如何来设置让三级偏移来每次递增4
{
ReadProcessMemory(hProcess,(LPCVOID)(dwMonThreeOffset+0x1cc),&dwMonCurBlood,4,&MonNumberByteRead);
//这里如果换成I,数据就不对了,是不是这么写的,我现在有点乱。。。
CString Str,StrBuffer;
Str.Format(L"怪物血量:%d \n ",dwMonCurBlood);
StrBuffer+=Str;
t_text1.SetWindowText(StrBuffer.GetBuffer(0));
DWORD addr;
DWORD base11;
DWORD re11;
::ReadProcessMemory(handle,(LPCVOID)(0X46A4DC),(LPVOID)&addr,4,NULL);
//读取基址中的数据到addr中
base11=addr+0x74D1BA; //偏移74D1ba,修改2字节
类似这样,直接对地址进行计算就行