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

Blu*_*Sky 10 .net encryption dotfuscator xamarin.ios ios

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

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

有没有简单的解决方案?

pou*_*pou 16

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

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

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

笔记

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

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

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

  • 谢谢.是的,我理解它是monotouch中的AOT编译器.但我犯了一个错误,因为昨天我把dll(来自ipa包)放在反射器工具中,我看到了很多c#代码.现在我回顾它,它只是一个方法存根,没有任何业务逻辑代码.非常感谢,感谢xamarin团队带来了如此优秀的产品. (3认同)