如何在C ++中阅读IL

时间:2011-12-01 02:24:35

标签: c# c++ mono il

我想知道如何从托管库或可执行文件读取IL,并解析文件中的元数据,类似于Mono.Cecil的工作方式。我这样做的原因是将一些.NET代码移植到Android(以及其他一些平台),而无需为Mono支付惊人的费用。我想知道这些文件中使用的IL代码是否记录在某处。 Mono的解析器似乎非常混乱。我想阅读实际的规范,而不是它的C#实现。

2 个答案:

答案 0 :(得分:1)

那里有很多IL反编译器和工具;阅读您想要的任何指令或元数据应该相对容易,并且无论您想要什么,都可以使用它们。

......但是......

这些.Net工具大多数都是用.Net编写的。如果您愿意在Windows工作站上使用任何所需内容(然后将最终输出复制到目标设备),这很好。

至于找到一个实际上在你的Android目标上运行的反编译库或工具......这有点问题:)

无论如何,看看这里:

http://wiki.sharpdevelop.net/ILSpy.ashx

祝你好运!

答案 1 :(得分:0)

我不明白为什么你需要反编译任何东西,难道你没有自己的程序集的源代码?您不需要对它们进行反编译,以便将它们移植到c ++。

如果您尝试反编译您不拥有的.NET程序集,那么这听起来像版权盗窃。

此外,Mono是自由软件。如果您正在编写自由软件(即遵守LGPL许可的条款),您可以在Android上使用vanilla Mono,而不需要商业Mono4Android许可。

换句话说:如果您不遵守自由软件许可的条款,您只需付费(如果您问我,这是非常公平的。)