我使用Dotfuscator保护我的应用程序免受逆向工程我加密了Windows应用程序中的dll文件,但我怎样才能在OSX / MonoTouch中执行此操作?
从ipa中提取dll,然后在windows中混淆dll,并将加密的dll重新打包到IPA中,然后将其发布到appstore?
有没有简单的解决方案?
答案 0 :(得分:16)
最重要的是你需要记住iOS不允许 JIT (及时)编译。这意味着一切都需要通过 AOT (提前)编译器。
这导致程序集中的所有IL代码都转换为本机ARM(v6,v7和/或拇指)指令和,IL 不需要了。
这意味着,当您为Release|iPhone
构建时,IL代码将从程序集中删除。由于它已被剥离,因此在您发布的应用程序中不会出现(进行反编译)。
备注强>
程序集仍然在应用程序中,因为仍然需要元数据(例如System.Reflection
需要它)。因此,符号名称和资源文件不会像混淆器那样被破坏/加密;
你可以反汇编ARM程序集(即使你在AOT编译之前混淆了程序集也是如此)但是很多比IL更难理解(并且回到C#)
从IPA中提取程序集并处理它们将破坏至少应用程序的签名(您可以重新签名)。它也可能打破很多其他事情(因为代码将引用可能已更改的名称/结构)。我不认为这会起作用(但这取决于你在混淆器中使用的选项)。