ReadProcessMemory问题,读到的数据是乱码或不是我想要的数据!求指教

ch_str 2010-08-13 01:08:42

CString name;
LPVOID buf = name.GetBuffer(100);
t_list::iterator iter = lst.begin(); //取容器中的进程句柄
ReadProcessMemory(iter->Get_Game_proHanle(), (LPCVOID)( 0x0B6763C + 0x1c + 0x28 + 0x278 ), buf, 100, NULL);
name.Format(_T("%s"), temp);
AfxMessageBox(name);



内存地址及偏移保证正确

读到的数据是乱码..

请高手指点!谢谢!
...全文
331 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ch_str 2010-08-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ch274147182 的回复:]
同1楼。感觉就是在用记事本打开EXE程序看到一堆乱码,而实际上LZ想看的是十六进制数据,不过记事本里显示的是乱码。就这样,。
[/Quote]

....

晕了咯
ch274147182 2010-08-13
  • 打赏
  • 举报
回复
同1楼。感觉就是在用记事本打开EXE程序看到一堆乱码,而实际上LZ想看的是十六进制数据,不过记事本里显示的是乱码。就这样,。
xixiaoliu 2010-08-13
  • 打赏
  • 举报
回复
ls 的目的是什么,想看到什么?取出来不就一个数么
jackyjkchen 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ch_str 的回复:]
那你的意思是?

说说我该怎么处理!
[/Quote]
如果要用CString的Format,必须使用%x才能格式化成16进制,而且得一个一个字节的循环处理

因此我才让你用我的函数
ch_str 2010-08-13
  • 打赏
  • 举报
回复
那你的意思是?

说说我该怎么处理!
jackyjkchen 2010-08-13
  • 打赏
  • 举报
回复
你的那个CString::Format使用%s,根本没用的,除了把0x00给截断以外,对于格式没有任何影响
jackyjkchen 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ch_str 的回复:]
引用 3 楼 jackyjkchen 的回复:
引用 2 楼 ch_str 的回复:
引用 1 楼 jackyjkchen 的回复:
你读的就是二进制数据吧,以字符串显示当然是乱码,你认为应该是什么呢?


求指点..谢谢! 该如何处理!

如果你只是想看看读出来的二进制数据是什么,不妨转成16进制查看,CString.Format就可以,但效率低

不妨试试如下代码

转……
[/Quote]
你告诉我,你那一行做的格式化?我为什么看不出来呢?
ch_str 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jackyjkchen 的回复:]
引用 2 楼 ch_str 的回复:
引用 1 楼 jackyjkchen 的回复:
你读的就是二进制数据吧,以字符串显示当然是乱码,你认为应该是什么呢?


求指点..谢谢! 该如何处理!

如果你只是想看看读出来的二进制数据是什么,不妨转成16进制查看,CString.Format就可以,但效率低

不妨试试如下代码

转完之后,直接赋值给CString就能在MFC里看了……
[/Quote]

我上面的代码已经格式化过了。。读出的都是乱码。。或者,。是我没懂你的思路?
jackyjkchen 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ch_str 的回复:]
引用 1 楼 jackyjkchen 的回复:
你读的就是二进制数据吧,以字符串显示当然是乱码,你认为应该是什么呢?


求指点..谢谢! 该如何处理!
[/Quote]
如果你只是想看看读出来的二进制数据是什么,不妨转成16进制查看,CString.Format就可以,但效率低

不妨试试如下代码

转完之后,直接赋值给CString就能在MFC里看了


const Char *tohex = "0123456789ABCDEF";
void ByteToHex(const BYTE *pInput,int iInlen,BYTE *pOutput)
{
Int32 i = 0;
while (i < iInlen)
{
*pOutput++ = tohex[pInput[i] >> 4];
*pOutput++ = tohex[pInput[i] & 0x0F];
++i;
}
}
ch_str 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jackyjkchen 的回复:]
你读的就是二进制数据吧,以字符串显示当然是乱码,你认为应该是什么呢?
[/Quote]

求指点..谢谢! 该如何处理!
jackyjkchen 2010-08-13
  • 打赏
  • 举报
回复
你读的就是二进制数据吧,以字符串显示当然是乱码,你认为应该是什么呢?

64,660

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧