是否可以重新创建使用给定.dll / .so / .dylib所需的C ++头文件?
如果是的话,怎么会这样做呢?
答案 0 :(得分:2)
一般来说,没有。头文件(结构布局,数字常量等)中有很多信息在动态库中不可用。
如果库导出“已修饰”的C ++函数名,可能能够恢复某些函数参数信息。但是,即使这样,您也无法获得足够的信息来重建有用的头文件。
如果图书馆导出未修饰的名称(使用extern "C"
),那么你几乎没有运气。你所知道的就是函数名称。
答案 1 :(得分:1)
这就是所谓的逆向工程,并且本身并不是一件容易的事,因为C ++名称的修改,获取函数名称和参数很容易,但是恢复其他数据,例如库使用的枚举,常量和#defines,可以是有点痛苦,因为这些数据将嵌入到库的组件中。
答案 2 :(得分:0)
为了扩展Matias的答案,逆向工程需要一些不同的知识主题。对于初学者来说,至少必须进行基本组装。您需要学习越来越多,这取决于您正在做的事情的复杂性,但至少要了解该语言的基础知识。第二件事是调试。有各种各样的工具可以帮助你,可能在Windows上最突出的是OllyDBG,在Linux上我喜欢EDB或Evan的调试器。你需要的最后一件事是一个好的反汇编程序,如IDA Pro(价格昂贵,但我相信有一个免费版本)。如果你真的对它感兴趣,那么有大量的书籍和在线资源可以学习逆向工程。祝你好运!