gpt4 book ai didi

c++ - 获取进程的基地址

转载 作者:可可西里 更新时间:2023-11-01 12:39:01 25 4
gpt4 key购买 nike

我想访问某个进程的某个地址。但为此我需要先获得进程的基地址。我正在使用一种工具来查看我是否真的做对了。该工具显示我需要以下内容:"app.exe"+0x011F9B08 = 0x119F8300

我以为我可以通过OpenProcess()获得一个进程的基地址,但这给了我:0x0000005c因此。我不认为那是对的?至少,不是我需要的。

我认为我需要的基地址是:0x119F8300 - 0x011F9B08 = 0x107FE7F8 <-- base?

这是我的代码:

hWindow = FindWindow(NULL, lpWindowName);
if(hWindow)
{
GetWindowThreadProcessId(hWindow, &dwProcId);
if(dwProcId != 0)
{
// hProcHandle -> 0x0000005c
hProcHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcId);
}
else
{
return 0;
}
}

如何获取我打开的进程的基地址?

最佳答案

如果你想在其他进程的地址空间内获取虚拟地址,你可以这样做:

  1. 使用OpenProcess 打开进程-- 如果成功,返回的值是进程的句柄,它只是内核用来标识内核对象的不透明标记。它的确切整数值(在您的情况下为 0x5c)对用户空间程序没有任何意义,除了将其与其他句柄和无效句柄区分开来。
  2. 调用GetProcessImageFileName获取进程的主要可执行模块的名称。
  3. 使用EnumProcessModules枚举目标进程中所有模块的列表。
  4. 对于每个模块,请调用 GetModuleFileNameEx获取文件名,并将其与可执行文件的文件名进行比较。
  5. 找到可执行文件的模块后,调用GetModuleInformation获取可执行文件的原始入口点。

这将为您提供虚拟地址,但您无法用它做很多事情,因为它没有映射到您当前进程的地址空间。

关于c++ - 获取进程的基地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14467229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com