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

时间:2012-03-12 12:46:41

标签: .net ios encryption xamarin.ios dotfuscator

我使用Dotfuscator保护我的应用程序免受逆向工程我加密了Windows应用程序中的dll文件,但我怎样才能在OSX / MonoTouch中执行此操作?

从ipa中提取dll,然后在windows中混淆dll,并将加密的dll重新打包到IPA中,然后将其发布到appstore?

有没有简单的解决方案?

1 个答案:

答案 0 :(得分:16)

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

这导致程序集中的所有IL代码都转换为本机ARM(v6,v7和/或拇指)指令,IL 不需要了。

这意味着,当您为Release|iPhone构建时,IL代码将从程序集中删除。由于它已被剥离,因此在您发布的应用程序中不会出现(进行反编译)。

备注

  • 程序集仍然在应用程序中,因为仍然需要元数据(例如System.Reflection需要它)。因此,符号名称和资源文件不会像混淆器那样被破坏/加密;

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

  • 从IPA中提取程序集并处理它们将破坏至少应用程序的签名(您可以重新签名)。它也可能打破很多其他事情(因为代码将引用可能已更改的名称/结构)。我不认为这会起作用(但这取决于你在混淆器中使用的选项)。