首页
社区
课程
招聘
[旧帖] [求助]ReadProcessMemory 0.00雪花
发表于: 2009-4-28 14:02 3977

[旧帖] [求助]ReadProcessMemory 0.00雪花

2009-4-28 14:02
3977
在C语言里ReadProcessMemory 返回的是什么数据类型?
用什么方法可以把他转换成可以显示的整型或字符型?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 399
活跃值: (38)
能力值: (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
2009-4-28 14:36
0
雪    币: 200
活跃值: (10)
能力值: ( 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 的值总是显示不正常....
2009-4-28 15:48
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
DWORD=4Bytes
另外确定0x00866ff0这个地址是不变化的吗?
2009-4-28 15:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
对,地址是不变的..
血值一直保存在这个地址
2009-4-28 16:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
0x00866ff0 在CE里可以看到是2字节的.
2009-4-28 16:50
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
7
哦,我看你hp定义为DWORD
动态调试一下吧,看有没有成功
2009-4-28 17:33
0
雪    币: 215
活跃值: (67)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
要读4个字节
2009-4-28 17:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
已知 该地址存的是2字节整型...
2009-4-29 14:14
0
游客
登录 | 注册 方可回帖
返回
//