我使用Dotfuscator来保护我的应用程序免受逆向工程我在windows应用程序中加密了dll文件,但是如何在OSX/MonoTouch中做到这一点?

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

有没有简单的解决方案?

有帮助吗?

解决方案

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

这会导致程序集中的所有IL代码都被转换为本机ARM(v6、v7和/或thumb)指令 IL是 不需要 再也没有了。

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

注意事项

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

  • 您可以拆卸ARM assembly(即使您在aot编译之前混淆了程序集也是如此),但它是 很多 比IL更难理解(并回到C#)。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top