MonoTouch:如何保护我的应用程序

我使用Dotfuscator来保护我的应用程序免受逆向工程我在windows应用程序中encryption了dll文件,但是我怎样才能在OSX / MonoTouch中做到这一点?

从ipa中提取dll,然后在窗口中混淆dll,并将encryption的dll重新打包成IPA,然后将其发布到appstore?

有没有简单的解决scheme?

首先,你需要记住,iOS不允许JIT (及时编译)。 这意味着一切都需要通过AOT (提前)编译器。

这样的结果是你的程序集中的所有IL代码都被转换成了本地的ARM(v6,v7和/或者thumb)指令,并且IL不再是必需的

这意味着,当您构buildRelease|iPhone ,IL代码将从您的程序集中删除。 由于它被带走,它将不会出现(被反编译)在您发布的应用程序中。

笔记

  • 程序集仍然在应用程序中, 因为元数据仍然是必需的(例如System.Reflection需要它)。 因此符号名称和资源文件不会象混淆器一般被破坏/encryption;

  • 你可以反汇编ARM程序集(即使你在AOT编译之前混淆程序集也是如此),但是比IL更难理解(并且回到C#)。

  • 从IPA中提取程序集并对其进行处理将至less破坏应用程序的签名(您可以重新签名)。 它也可能会破坏很多其他的东西(因为代码会引用可能已经改变的名字/结构)。 我不认为这将工作(但它取决于你将从混淆器使用的选项)。