F
Fermi
Unregistered / Unconfirmed
GUEST, unregistred user!
这个程序的目的是先运行一个游戏(伯德之门2),然后用gamemaster找到所需要的变量的地址,<br>将其能够显示在这个程序中。我找到这个游戏的handle是没有问题的,和gm提示的一样,可是为什么<br>显示出来的内存信息都是零呢?不光是游戏,甚至换成其他程序也是这样。<br>同志们帮帮忙,小弟比较穷,就这么点米了<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>h:thandle;<br>lpBufferByte; <br> nSize: DWORD; <br> lpNumberOfBytesRead: DWORD; <br> i:integer; <br> s:string; <br><br>begin<br>h:=findwindow('ChitinClass','Baldur''s Gate II - Shadows of Amn - Throne of Bhaal');<br>if h<>0 then<br>begin<br>unit2.Form1.caption:=inttostr(h);<br>nSize:=4;<br> lpBuffer:=AllocMem(nSize);<br> for i:=$02B928AE to $02B928FE do //此处的地址用的是gamemaster找到的偏移地址<br> begin<br> ReadProcessMemory(<br> h,<br> Pointer(i),<br> lpBuffer,<br> nSize,<br> lpNumberOfBytesRead<br><br> <br> s:=s+intTohex(lpBuffer^,2)+' '; <br><br> if (i mod 16) =0 then <br> begin <br> Memo1.Lines.Add(s); <br> s:=''; <br> end; <br><br> end; <br> FreeMem(lpBuffer,nSize); <br><br>end;<br><br>end;