我使用 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 中提取程序集并对其进行处理将至少破坏应用程序的签名(您可以重新签名)。它还可能破坏许多其他东西(因为代码将引用可能已更改的名称/结构)。我认为这行不通(但这取决于您从混淆器中使用的选项)。
关于.net - 单点触控 : How to protect my application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9667265/