delphi如何获取另一程序的内存镜像基址(00400000这个地址)

不注入如何实现可能没有说清楚,不是要读取程序内存地址的值,而是要读取程序的内存地址就像图片画红框里的那个内存镜像地址... 不注入如何实现
可能没有说清楚,不是要读取程序内存地址的值,而是要读取程序的内存地址
就像图片画红框里的那个内存镜像地址
展开
 我来答
百度网友09d4ae1
2011-07-06 · TA获得超过267个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:203万
展开全部
步骤大致是:
先找窗口句柄,再通过句柄打开进程,就可以直接读了,有的可能有读写保护之类的,就还要提升访问权限了,发个示例代码你参考下:

var
h : HWND;
PId : hwnd;
hProcess : Cardinal;
num : Cardinal;
x : pinteger;
dwErr : dword;
begin
h := FindWindow(nil,'testMem');
if h = 0 then
exit;
GetWindowThreadProcessId (h, @pid);
hProcess := OpenProcess(PROCESS_ALL_ACCESS, false, pid);
if hProcess = 0 then
exit;
getmem(x,4);
if ReadProcessMemory(hprocess,Pointer($00D43810),x,4,num) then
begin
messagebox(0,pchar(inttostr(x^)),'d',0);

end
else
begin
dwErr := getLastError;
messagebox(0,pchar(inttostr(dwerr)),'d',0);
end;
freemem(x);
closehandle(hProcess);
追问
可能没理解我的意思
我要的是读取另一程序的内存镜像地址(比如XP系统的为00400000这个地址),而不是另一程序内存地址的值
追答
知道你意思了,有几个API可能是你要用到的,但这个具体我没做过,不能很好的组织
Toolhelp32ReadProcessMemory
GetModulePreferredBaseAddr

在 tlhelp32 单元已经封装好了,可以直接用
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式