各位亲爱的朋友:
我们又在第11款VIP课程相会了,那么,这节课,我将与您分享VC++编程读取具有商业价值人物信息。
编程思路:编程的话您只需要编写一次,了解到编写的效果,以后想要这种功能效果都是这么编写。对编写的代码越熟悉,就越容易延伸它与修改它。
具体操作技巧:
借箭:
6.天锁斩月!多思路提供分析人物信息基址偏移。
8.赞!VC++编程秒杀游戏进程权限。
人物当前血
2F840F0
+4 人物当前蓝
+0c 人物最大血
+10 人物最大蓝
-4c 人物等级
-80 人物名称
-4a 人物职业
ReadProcessMemory 功能就是读取指定内存地址里数据。
BOOL WINAPI ReadProcessMemory(
__in HANDLE hProcess, //进程句柄
__in LPCVOID lpBaseAddress, //读取的内存地址
__out LPVOID lpBuffer, //读取到的数据存放在这
__in SIZE_T nSize, //一次读取的大小 字节
__out SIZE_T *lpNumberOfBytesRead //实际读取的大小 字节
);
LPVOID 等价于 void*
LPCVOID 等价于 const void*
VOID表示空类型。
很多函数的参数以lp开头,lp在C++里面是表示长指针的前缀。在win16下有长指针(lp)和短指针(P)的区别,而在win32下是没有区别的,都是32位.所以LP和P是等价的
LPCVOID dudizhi1 = (LPCVOID)0x2fEE468;
LPCVOID dudizhi2 = (LPCVOID)(0x2fEE468+0xc);
LPCVOID dudizhi3 = (LPCVOID)(0x2fEE468 + 0x4);
LPCVOID dudizhi4 = (LPCVOID)(0x2fEE468 + 0x10);
LPCVOID dudizhi5 = (LPCVOID)(0x2fEE468 -0x80);
LPCVOID dudizhi6 = (LPCVOID)(0x2fEE468 - 0x4a);
DWORD j_人物血 = 0;
DWORD j_人物最大血 = 0;
DWORD j_人物蓝 = 0;
DWORD j_人物最大蓝 = 0;
DWORD j_实际读取大小 = 0;
CHAR j_人物名字[20];
CHAR j_人物职业[20];
ReadProcessMemory(jinchengjubing, dudizhi1, &j_人物血, 4, &j_实际读取大小);
ReadProcessMemory(jinchengjubing, dudizhi2, &j_人物最大血, 4, &j_实际读取大小);
ReadProcessMemory(jinchengjubing, dudizhi3, &j_人物蓝, 4, &j_实际读取大小);
ReadProcessMemory(jinchengjubing, dudizhi4, &j_人物最大蓝, 4, &j_实际读取大小);
ReadProcessMemory(jinchengjubing, dudizhi5, &j_人物名字, 20, &j_实际读取大小);
ReadProcessMemory(jinchengjubing, dudizhi6, &j_人物职业, 20, &j_实际读取大小);
CString zifuchuan1;
USES_CONVERSION;//使用转换
zifuchuan1.Format(L"角色的血%d/%d \n角色的蓝%d/%d 角色名%s 角色职业%s", j_人物血, j_人物最大血, j_人物蓝, j_人物最大蓝,A2W(j_人物名字),A2W(j_人物职业) );
k_角色信息.SetWindowTextW(zifuchuan1.GetBuffer(0));
UpdateData(TRUE);
赞!VC++编程读取具有商业价值人物信息。
最新推荐文章于 2022-01-04 16:45:00 发布