如何读出指定内存中的数据?(200分)

  • 主题发起人 主题发起人 ljactive
  • 开始时间 开始时间
L

ljactive

Unregistered / Unconfirmed
GUEST, unregistred user!
各位:
如何读出指定内存中的数据,就像游戏修改工具一样?请指教
 
首先找到程序的入口。搜索指定数据,记下来。然后游戏改变数据,在对比记下的数据那些已经修改
并与游戏中的数据相同之处,反复数次可的!
 
不是,我想要编程找到一具体内存地址中的数据,不知程序该怎样编写?
 
游戏修改工具读写内存是用这两个函数:
ReadProcessMemory
WriteProcessMemory
但具体内存地址搞不懂是什么,win可是虚拟内存管理
 
请继续或结束
 
没错,就是用ReadProcessMemory和WriteProcessMemory,我编写的GameExpert就是这么干的
由于win32是虚拟内存地址,这里指的具体内存地址应该是特定进程的虚拟内存。
 
win32是虚拟内存管理
每个进程是独立的内存空间
所以在readprocessmemory等函数时要指定进程
 
amo昨天让我...sigh,
用 move 吧
procedure Move(const Source; var Dest; Count: Integer);
相当于C的memcpy
 
如果读远端程序的内存呢?其实可以有一种方法,我没有试过,但理论上是可行的:
先用CreateRemoteThread在远端进程中创建一个线程,然后在本地缓冲区中写调用
DLL的汇编语言如下:
mov eax,{此处写你的DLL文件的路径}
push eax,
call Loadlibrary,
push eax,
push eax,
call freelibrary,
call ExitThread
然后调用WriteProcessmemory将这段代码写到远段进程的线程栈中。
接着用getThreadContext获得远段进程的CPU的CONTEXT结构,使栈指
针指向你的代码语言,并使指令指针指向你的代码语言的第一个字节,
然后用SetThreadContext将设定写入远端进程寄存器,最后调用ResumeThread
,远端进程将执行你的代码,并将你的DLL语言调入内存,此时该进程
的所有数据将对该DLL是透明的,因为调入的DLL将作为该进程的一部分,
是存在该进程空间的,不会发生访问冲突,如果在该DLL写入一些我们想
要的东西,我们就可以轻而易举的获得!此时该进程已被突破!
 
对各位的热心回答本人在这里表示衷心的感谢!
谢谢各位的帮忙。特别要感谢的是Only you。以后请多帮忙。
 
不好意思,忘了给分了。见谅
 
多人接受答案了。
 
后退
顶部