从未知dll中检索函数(名称,返回类型,参数)(c ++)

时间:2017-11-09 02:22:12

标签: c++ dll

我需要使用由我公司的某个供应商制作的.dll(c ++ 64bit),它们不再存在。我没有头文件(.h)。

我遵循这个:

Get the function prototypes from an unknown .dll

我能够获得函数名称,但我不知道函数返回类型和参数是什么。

我也尝试了依赖性walker,结果相同。

这个dll不是公共dll,它是我们公司定制使用的,所以里面的功能不能在线搜索。

是否有任何工具或方法可以帮助我检索此信息?

2 个答案:

答案 0 :(得分:0)

依赖步行者应该适合你。以下概述了函数,返回类型和参数的显示方式:

[依赖步行者概述] https://kb.froglogic.com/download/attachments/2457645/dependency_walker_provided_information.png?version=1&modificationDate=1341338967000

请记住,您必须为32位或64位dll使用不同版本的依赖性walker。 更重要的是,如果你在函数参数中看到一些奇怪的符号,比如@,#etc ......,那么你就会遗漏一些依赖的dll。

答案 1 :(得分:0)

  

我需要使用由我公司的某个供应商制作的.dll(c ++ 64bit),它们不再存在。我没有头文件(.h)。

在专业设置中,这是立即使用该库放弃的症状,并查找并使用其他内容。是的,这会花费金钱和时间(因此建议您的经理和/或客户)。您可能更喜欢下次使用某个free software库(因为then您至少可以继续维护该库,即使其供应商已消失)。

您可以认为C ++通常name mangling并尝试reverse-engineer某些内容(但您无法可靠地猜测class内的字段或其他信息与类型有关)。我不建议尝试,因为这可能需要花费很多时间。金钱,你无法猜到一切(所以你不知道你是否会猜到足够的信息来使用那些东西)。

(你遇到的是一个项目管理不善的错误,而不是开发人员的错误)

使用(甚至几分钟)作为开发人员,没有完整标题和文档的C ++库只是 crazy 不要这样做

因此,您的问题没有技术解决方案。 Decompilation通常是不可能的(费用很高,通常效果不好)