我使用Dotfuscator来保护我的应用程序免受逆向工程的影响。我在windows应用程序中加密了dll文件,但我如何在OSX/MonoTouch中做到这一点?
从ipa中提取dll,然后混淆windows中的dll,并将加密的dll重新打包到ipa中,然后将其发布到appstore?
有什么简单的解决方案吗?
最重要的是,您需要记住iOS不允许JIT(即时)编译。这意味着一切都需要通过AOT(提前)编译器。
这将导致程序集中的所有IL代码被转换为本机ARM(v6、v7和/或thumb)指令,并且不再需要IL。
这意味着,当您为Release|iPhone
构建时,IL代码将从程序集中删除。由于它被剥离了,所以它不会出现在您发布的应用程序中(需要反编译)。
注意事项
-
程序集仍将在应用程序内部,因为仍需要元数据(例如
System.Reflection
需要它)。因此,符号名称和资源文件不会像模糊处理程序那样被篡改/加密; -
您可以反汇编ARM程序集(即使在AOT编译之前混淆了程序集,也是如此),但它比IL更难理解(并返回C#)。
-
从IPA中提取程序集并对其进行处理将至少破坏应用程序的签名(您可以重新签名)。它还将可能破坏许多其他内容(因为代码将引用可能已更改的名称/结构)。我认为这不会奏效(但这取决于你会从模糊处理程序中使用的选项)。