能力值:
(RANK:350 )
2 楼
BOOL ReadProcessMemory( HANDLE hProcess, // handle to the process LPCVOID lpBaseAddress, // base of memory area LPVOID lpBuffer, // data buffer SIZE_T nSize, // number of bytes to read SIZE_T * lpNumberOfBytesRead // number of bytes read );
返回类型为BOOL
可显示的?
可以直接printf
能力值:
( LV2,RANK:10 )
3 楼
#include<windows.h>
#include<stdio.h>
int main()
{
HWND hwnd = FindWindow(0,"纵横三国");
HANDLE mpid;
DWORD hpid,hp;
char title[255];
char *cp = title;
GetWindowText(hwnd,cp,80);
if(hwnd)
{
GetWindowThreadProcessId(hwnd,&hpid);
mpid = OpenProcess(PROCESS_ALL_ACCESS,0,hpid);
ReadProcessMemory(mpid,(LPCVOID)0x00866ff0,&hp,2,0);//0x00866ff0 是游戏内血值变量的内存地址
if(hp)
{
printf("血值是:%d",hp);
}
else
{
printf("取血值失败\n");;
}
CloseHandle(mpid);
}
else
{
printf("您还没有进入游戏....\n");
}
return 0;
}
郁闷的是 hp 的值总是显示不正常....
能力值:
(RANK:350 )
4 楼
DWORD=4Bytes
另外确定0x00866ff0这个地址是不变化的吗?
能力值:
( LV2,RANK:10 )
5 楼
对,地址是不变的..
血值一直保存在这个地址
能力值:
( LV2,RANK:10 )
6 楼
0x00866ff0 在CE里可以看到是2字节的.
能力值:
(RANK:350 )
7 楼
哦,我看你hp定义为DWORD
动态调试一下吧,看有没有成功
能力值:
( LV2,RANK:10 )
8 楼
要读4个字节
能力值:
( LV2,RANK:10 )
9 楼
已知 该地址存的是2字节整型...