从非托管库的方法名获取参数类型

Get parameter types from method names of an unmanaged library?

本文关键字:获取 参数 类型 方法      更新时间:2023-10-16

我在这篇文章中问过如何枚举c++ dll库的方法,在这里我找到了解决方案p/调用dbghelp.dll库。

我的问题是:

使用dbghelp.dll一旦我有一个方法名,我可以检索它的重载(如果它们存在)和它的参数类型知道我应该如何调用该方法里面?

在这个MSDN url中是dbghelp.dll lib的函数文档,但我不确定其中一个函数是否可以帮助我。

PS:我对PE的了解非常低,这就是为什么我要求解决方案p/调用其他方法,但如果不可能使用dbghelp.dll我想知道替代方案和完成任务的步骤。

一般来说,非托管库(例如:从c++编译的dll)是不可能的。PE格式没有办法对这些信息进行逆向工程(这是dll和lib与.h文件一起分发的原因之一)。一些逆向工程工具分析函数序,对函数参数进行猜测和启发式,但这仅仅是猜测。对于在库中导出的c++函数,可能使用混乱的名称info可以检索此信息。vc++名称编辑。但这是编译器实现依赖的信息,可以随时改变任何东西。

在一些托管语言(例如:。net)的库中,仅使用PE格式作为其自定义格式的容器(PE只运行并调用加载自定义格式的。net运行时),此信息保存为自定义格式的元数据信息。