6

我喜欢从 c++ dll 中获取代码,我知道我们很容易通过反射器从 .Net dll 中获取代码。c++ 中有没有可用的方法呢?

提前致谢

4

5 回答 5

16

C++ 直接编译成机器码。.NET 中没有中间语言。您可以查看一些 C++ 反汇编程序。Hex-Rays 反编译器特别好。

于 2010-09-15T07:14:41.583 回答
6

我相信你在谈论非托管 C++。在这种情况下,这是不可能的。C++ 被编译成机器代码,而托管语言编译成中间语言,其中包含有关已编译代码的元数据。

于 2010-09-15T07:15:43.580 回答
1

简而言之,没有。任何“反射”都必须通过某种手工编码机制。

于 2010-09-15T07:15:28.010 回答
1

不,C++ 没有像 RedGate 的反射器那样的东西,也没有这种能力。反汇编程序不会接近您正在寻找的东西。

于 2010-09-15T07:16:43.420 回答
1

内省功能的代码可以从 Gcc-XML 的输出中生成,或者使用 OpenC++ 注入,但是 C++ 标准本身不需要为此提供任何特定的工具,并且没有任何工具/实用程序与任何流行的编译器捆绑在一起。C++ 程序也可以读取其自己的可执行文件中的调试信息,但它绝对不是特别便携、快速或不太可能成为一个健壮的解决方案。

于 2010-09-15T07:53:51.023 回答