2

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

如果是的话,人们将如何去做呢?

4

3 回答 3

2

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

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

如果库导出未修饰的名称(带有extern "C"),那么您就很不走运了。那时您所知道的只是函数名称。

于 2010-08-09T04:01:57.973 回答
1

这称为逆向工程,本身并不是一件容易的事,由于 C++ 名称修改,获取函数名称和参数很容易,但是恢复库使用的枚举、常量和#defines 等其他数据可能有点困难痛苦,因为该数据将嵌入到库的程序集中。

于 2010-08-09T04:02:30.610 回答
0

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

于 2012-01-18T06:17:03.090 回答