gpt4 book ai didi

c# - 在内存中查找 DLL 的地址

转载 作者:行者123 更新时间:2023-11-30 16:36:54 24 4
gpt4 key购买 nike

我刚刚开始进行低级编程(读/写内存之类的事情),遇到了一个我找不到答案的问题。

我要读取的信息片段有一个相对于内存中加载的 DLL 的地址,例如,它位于 mydll.dll + 0x01234567。我遇到的问题是 dll 在内存中四处移动,但偏移量保持不变。有没有办法找出这个dll在内存中的位置。

我目前正在尝试最好在 c# 中执行此操作,但我将不胜感激大多数高级语言的帮助。

最佳答案

我尝试了 Rob Walker 建议的方法,但无法使它起作用(我认为它不起作用,因为 dll 是作为另一个可执行文件的一部分加载的,因此无法轻易找到)。

然而,我确实发现了一个对我有用的解决方案,所以这里是:

我创建了一个进程类型的对象

String appToHookTo = "applicationthatloadedthedll";
Process[] foundProcesses = Process.GetProcessesByName(appToHookTo)
ProcessModuleCollection modules = foundProcesses[0].Modules;
ProcessModule dllBaseAdressIWant = null;
foreach (ProcessModule i in modules) {
if (i.ModuleName == "nameofdlliwantbaseadressof") {
dllBaseAdressIWant = i;
}
}

现在您有了模块,您只需执行 dllbaseAdressIWant.BaseAddress 即可获取值。

希望对你有帮助

关于c# - 在内存中查找 DLL 的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/269263/

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