GetModuleFileNameA返回奇怪的结果



我正在试图获得一个模块的名称加载到另一个进程与GetModuleFileNameA
我已经使用dbgHelp加载了一个符号,并得到了它的模块基址,但发生了2件奇怪的事情:
1. 有时GetModuleFileNameA返回系统错误码5:Access denied.
2. 它返回错误的模块名。对于我知道在模块a中的函数,我得到模块B的名称…:/

有人能帮我吗?
谢谢:)

请阅读文档。在GetModuleFileName的页面上写着

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新