我正在尝试使用GetModuleFileNameA
获取在另一个进程中加载的模块的名称。
我已经使用dbgHelp加载了一个符号,并得到了它的模块基地址,但2奇怪的事情发生:
1.有时GetModuleFileNameA
返回系统错误代码5:拒绝访问。
2.它返回错误的模块名称。 对于我知道在模块A中的函数,我得到模块B的名称…:/
有人可以帮我吗?
谢谢:)
请阅读文档。 它说在GetmoduleeFileName的页面上
要找到由另一个进程加载的模块的文件,请使用GetmoduleeFileNameEx函数。
GetmoduleeFileName只适用于你的过程中的模块。 即使这两个进程已经加载模块,它可能在不同的基地址。 你有效地喂养GetmoduleeFileName垃圾。 只是重申,你需要使用GetmoduleeFileNameEx
如果您的流程想要访问另一个流程,则需要有权这样做。 这意味着您的流程需要较高的权利,或者必须是其他流程的所有者。
如果你得到错误的名字,你可能使用了错误的句柄。 这也可以解释为什么你有时会被拒绝访问。 如果将句柄传递给错误的模块,即使您有权访问您想知道其名称的模块,也可能无法访问该模块。