2012-03-12 44 views
10

我使用Dotfuscator来保护我的应用程序免受逆向工程的影响我在Windows应用程序中加密了dll文件,但是如何在OSX/MonoTouch中执行此操作?MonoTouch:如何保护我的应用程序

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

有没有简单的解决方案?

回答

16

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

这导致所有的从组件中的IL代码被转换成原生ARM(V6,V7和/或拇指)指令并且该IL被不需要

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

NOTES

  • 的组件仍然会因为仍然需要元数据应用内(例如System.Reflection需要它)。因此符号名称和资源文件不会像混淆器通常那样受到破坏/加密;

  • 可以拆卸ARM汇编(即使你的AOT编译之前模糊的组件,这将是真实的),但它更难理解(并取回C#)比IL是。

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

+1

谢谢。反光板 – BlueSky 2012-03-12 15:12:56

+3

谢谢。是的,我知道它是单点触摸的AOT编译器。但我得到了一个错误,因为昨天我把dll(来自ipa包)放在反射工具中,我看到很多c#代码。现在我检查它,它只是一个方法存根,没有任何业务逻辑代码。非常感谢,谢谢带来这样一个好产品的xamarin团队。 – BlueSky 2012-03-12 15:19:15