关于ReadProcessMemory

hbnu02151 2007-12-04 12:26:20
已知基址006764E4,偏移量18,要取得基址加偏移量代表的值,我这样做有什么错误?给点思路哦~谢谢~

STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &pi, sizeof(pi) );
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
CreateProcess(NULL
, "D:/Program Files/hl25/HL_Client.exe tqdigital", NULL, NULL, FALSE, 0,
NULL, "D:/Program Files/hl25", &si, &pi);

CString m_strTitle;
int ans;
LPBYTE lpBuf = new BYTE[4];

ReadProcessMemory(pi.hProcess,(LPCVOID)0x006764E4,lpBuf,4,NULL);
ans = ((int)lpBuf[0] & 0xff)<<0;
ans +=((int)lpBuf[1] & 0xff)<<8;
ans +=((int)lpBuf[2] & 0xff)<<16;
ans +=((int)lpBuf[3] & 0xff)<<24;
m_strTitle.Format("%d",ans);
AfxMessageBox(m_strTitle);

ReadProcessMemory(pi.hProcess,(LPCVOID)(ans+18),lpBuf,4,NULL);
ans = ((int)lpBuf[0] & 0xff)<<0;
ans +=((int)lpBuf[1] & 0xff)<<8;
ans +=((int)lpBuf[2] & 0xff)<<16;
ans +=((int)lpBuf[3] & 0xff)<<24;
m_strTitle.Format("%d",ans);
AfxMessageBox(m_strTitle);

ReadProcessMemory(pi.hProcess,(LPCVOID)(ans),lpBuf,4,NULL);
ans = ((int)lpBuf[0] & 0xff)<<0;
ans +=((int)lpBuf[1] & 0xff)<<8;
ans +=((int)lpBuf[2] & 0xff)<<16;
ans +=((int)lpBuf[3] & 0xff)<<24;
m_strTitle.Format("%d",ans);
AfxMessageBox(m_strTitle);
...全文
218 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
李雷 2007-12-04
  • 打赏
  • 举报
回复
给分 我给你源码 游戏内存读取基地址 加2次偏移得到内存数据 加注释
Prince_vegeta 2007-12-04
  • 打赏
  • 举报
回复
曾经写过3篇游戏修改器的小文,里面用到ReadProcessMemory:

http://blog.csdn.net/prince_vegeta/archive/2005/03/02/308025.aspx
http://blog.csdn.net/prince_vegeta/archive/2005/03/02/308047.aspx
http://blog.csdn.net/prince_vegeta/archive/2007/04/29/1591826.aspx



http://vegeta.blog.enorth.com.cn/article/865.shtml
http://vegeta.blog.enorth.com.cn/article/875.shtml
http://vegeta.blog.enorth.com.cn/article/215109.shtml

goodboyws 2007-12-04
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/threads/int64_memsteal.aspx,这篇文章你可以参考一下
ReverseCoding 2007-12-04
  • 打赏
  • 举报
回复
当前进程对要读的进程必须有PROCESS_VM_READ访问权
ReverseCoding 2007-12-04
  • 打赏
  • 举报
回复
这样做看行不行:

1.获得程序的句柄---->findwindow
2.获得进程ID ---->GetWindowThreadProcessId
3.获得进程句柄 ---->OpenProcess
4.内存读写 ---->ReadProcessMemory
ReverseCoding 2007-12-04
  • 打赏
  • 举报
回复
这个地址空间应该可读,但我似乎记得程序只能读自己的WIN32地址空间,读另一个进程的地址空间,这样貌似办不倒,需要调试API。

不知道对否,高手指教。
WAKU 2007-12-04
  • 打赏
  • 举报
回复
嗯,地址可能不可读
hbnu02151 2007-12-04
  • 打赏
  • 举报
回复
谢谢大家~
henryxuv 2007-12-04
  • 打赏
  • 举报
回复
这段数据是不是可读的??个人感觉可能跟你的地址之有关

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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