是否可以重新创建使用给定.dll / .so / .dylib所需的C ++头文件?

时间:2010-08-09 03:59:41

标签: c++ dll dylib shared-libraries

是否可以重新创建使用给定.dll / .so / .dylib所需的C ++头文件?

如果是的话,怎么会这样做呢?

3 个答案:

答案 0 :(得分:2)

一般来说,没有。头文件(结构布局,数字常量等)中有很多信息在动态库中不可用。

如果库导出“已修饰”的C ++函数名,可能能够恢复某些函数参数信息。但是,即使这样,您也无法获得足够的信息来重建有用的头文件。

如果图书馆导出未修饰的名称(使用extern "C"),那么你几乎没有运气。你所知道的就是函数名称。

答案 1 :(得分:1)

这就是所谓的逆向工程,并且本身并不是一件容易的事,因为C ++名称的修改,获取函数名称和参数很容易,但是恢复其他数据,例如库使用的枚举,常量和#defines,可以是有点痛苦,因为这些数据将嵌入到库的组件中。

答案 2 :(得分:0)

为了扩展Matias的答案,逆向工程需要一些不同的知识主题。对于初学者来说,至少必须进行基本组装。您需要学习越来越多,这取决于您正在做的事情的复杂性,但至少要了解该语言的基础知识。第二件事是调试。有各种各样的工具可以帮助你,可能在Windows上最突出的是OllyDBG,在Linux上我喜欢EDB或Evan的调试器。你需要的最后一件事是一个好的反汇编程序,如IDA Pro(价格昂贵,但我相信有一个免费版本)。如果你真的对它感兴趣,那么有大量的书籍和在线资源可以学习逆向工程。祝你好运!