GetModuleFileNameA 返回奇怪的结果

发布于 2024-11-01 21:25:26 字数 251 浏览 4 评论 0原文

我正在尝试使用 GetModuleFileNameA 获取在另一个进程中加载​​的模块的名称。
我已经使用 dbgHelp 加载了一个符号并获取了其模块基地址,但发生了 2 件奇怪的事情:
1. 有时GetModuleFileNameA返回系统错误代码5:访问被拒绝。
2. 返回错误的模块名称。对于我知道模块 A 中的函数,我得到模块 B 的名称...:/

有人可以帮助我吗?
谢谢:)

I'm trying to get the name of a module loaded in another process with GetModuleFileNameA.
I've loaded a symbol using dbgHelp and got its module base address but 2 weird thing happen:
1. Sometimes GetModuleFileNameA returns system error codes 5: Access denied.
2. It returns the wrong module name. for a function I know to be in module A, I get the name of module B... :/

Can somebody help me?
thanks:)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拥抱我好吗 2024-11-08 21:25:26

请阅读文档。在 GetModuleFileName 的页面上,显示

要查找由另一个进程加载的模块的文件,请使用 GetModuleFileNameEx 函数。

GetModuleFileName 仅对进程中的模块有意义。即使两个进程都加载了该模块,它也可能位于不同的基地址。您实际上正在向 GetModuleFileName 提供垃圾。只是重申一下,您需要使用 GetModuleFileNameEx

Please read the docs. Right on the page for GetModuleFileName it says

To locate the file for a module that was loaded by another process, use the GetModuleFileNameEx function.

GetModuleFileName only makes sense for modules in your process. Even if both processes have loaded the module, it may be at a different base address. You're effectively feeding GetModuleFileName garbage. Just to reiterate, you need to use GetModuleFileNameEx

岁月如刀 2024-11-08 21:25:26

如果您的进程想要访问另一个进程,它需要拥有这样做的权限。这意味着您的进程需要提升权限,或者它必须是其他进程的所有者。

如果您得到错误的名称,则可能使用了错误的句柄。这也可以解释为什么您有时会被拒绝访问。如果将句柄传递给错误的模块,即使您确实有权访问您想知道其名称的模块,您也可能无法访问该模块。

If your process wants to access another process, it needs to have the rights to do so. That means your process needs elevated rights, or it must be the owner of the other process.

If you get the wrong name, you may have used the wrong handle. That might also explain why you get Access Denied sometimes. If you pass the handle to the wrong module, you may not have access to that, even if you do have access to the module you want to know the name of.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文