小弟所有分了。请教一个问题 ( 积分: 13 )

  • 主题发起人 主题发起人 tripleh
  • 开始时间 开始时间
T

tripleh

Unregistered / Unconfirmed
GUEST, unregistred user!
我用CE打开了一个游戏进程,然后直接查看$012308EC这个地址的值,查看方式是4&nbsp;Bytes,显示的值为57714880。<br>那么我想用自己的程序把该值读取出来。<br>下面是我的办法<br>procedure&nbsp;TMainForm.RzBitBtn1Click(Sender:&nbsp;TObject);<br>var<br>&nbsp;&nbsp;pid:&nbsp;Cardinal;<br>&nbsp;&nbsp;pProc:&nbsp;Cardinal;<br>&nbsp;&nbsp;pPos:&nbsp;PDWORD;<br>&nbsp;&nbsp;JZ:PChar;<br>&nbsp;&nbsp;baseAddr,&nbsp;readok:&nbsp;DWORD;<br>&nbsp;&nbsp;mem:&nbsp;TMemoryStream;<br>&nbsp;&nbsp;I:Integer;<br>begin<br>&nbsp;&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetWindowThreadProcessId(GameChr.ZtHwnd,&nbsp;@pid);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pProc&nbsp;:=&nbsp;OpenProcess(PROCESS_VM_READ,&nbsp;False,&nbsp;pid);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem&nbsp;:=&nbsp;TMemoryStream.Create;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem.clear;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem.SetSize(80);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReadProcessMemory(pProc,&nbsp;Pointer($012308EC),&nbsp;&nbsp;mem.Memory,&nbsp;80,&nbsp;readok);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JZ&nbsp;:=&nbsp;mem.Memory;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I:=Integer(JZ);//我就是要取得I的值。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VirtualFreeEx(pProc,&nbsp;Pointer(GameBaseAddr),&nbsp;0,&nbsp;MEM_RELEASE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(pProc);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem.Free;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>end;<br><br><br>以上代码,我精简过了,只留下了读取内存这部分代码。变量I取得值不是57714880,而是其他数字。不知道怎么回事!大家帮我看看啊
 
直接这样不行吗:<br>ReadProcessMemory(pProc,&nbsp;Pointer($012308EC),&nbsp;&nbsp;@I,&nbsp;sizeof(I),&nbsp;readok);
 
接受答案了.
 
后退
顶部