Dot-Net

MonoTouch:如何保護我的應用程序

  • March 12, 2012

我使用 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 中提取程序集並對其進行處理至少會破壞應用程序的簽名(您可以重新簽名)。它也可能會破壞許多其他事情(因為程式碼將引用可能已更改的名稱/結構)。我認為這不會起作用(但這取決於您從混淆器中使用的選項)。

引用自:https://stackoverflow.com/questions/9667265