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

时间:2014-07-16 14:35:33

标签: c# c++ .net vb.net dll

我已经问过in this post如何枚举C ++ dll lbrary的方法,here我找到了解决方案P /调用 dbghelp.dll 库。

我的问题是:

使用 dbghelp.dll ,一旦我获得了方法名称,我可以检索其重载(如果存在)及其参数类型,以了解我应该如何调用该方法?< / p>

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

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

1 个答案:

答案 0 :(得分:1)

通常,不可能使用非托管库(例如:从c ++编译的dll)。 PE格式没有办法对此信息进行逆向工程(这是dll和lib与.h文件一起分发的原因之一)。一些逆向工程工具分析功能的序言,并对其参数进行猜测和启发式测试,但这只是猜测。对于库中的C ++导出函数,可能使用损坏的名称信息可以检索此信息。 VC++ Name Mangling。但这是依赖于编译器实现的信息,可能随时改变任何内容。

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