2012-03-12 41 views
10

我使用Dotfuscator來保護我的應用程序免受逆向工程的影響我在Windows應用程序中加密了dll文件,但是如何在OSX/MonoTouch中執行此操作?MonoTouch:如何保護我的應用程序

從ipa中提取dll,然後在windows中混淆dll,然後將加密的dll重新包裝爲IPA,然後將其發佈到appstore?

有沒有簡單的解決方案?

回答

16

首先,你需要記住的是,iOS不允許JIT(及時)編譯。這意味着一切都需要通過AOT(提前)編譯器。

這導致所有的從組件中的IL代碼被轉換成原生ARM(V6,V7和/或拇指)指令並且該IL被不需要

這意味着,當您構建Release|iPhone時,IL代碼將從您的程序集中刪除。由於它被帶走,它將不會出現在您發佈的應用程序中(需要反編譯)。

NOTES

  • 的組件仍然會因爲仍然需要元數據應用內(例如System.Reflection需要它)。因此符號名稱和資源文件不會像混淆器通常那樣受到破壞/加密;

  • 可以拆卸ARM彙編(即使你的AOT編譯之前模糊的組件,這將是真實的),但它更難理解(並取回C#)比IL是。

  • 從IPA中提取程序集並對其進行處理將破壞至少該應用程序的簽名(您可以重新簽名)。它也將可能打破了很多其他的事情(因爲代碼將引用可能已經改變的名稱/結構)。我認爲這不會起作用(但它取決於您在混淆器中使用的選項)。

+1

謝謝。反光板 – BlueSky 2012-03-12 15:12:56

+3

謝謝。是的,我知道它是單點觸摸的AOT編譯器。但我得到了一個錯誤,因爲昨天我把dll(來自ipa包)放在反射工具中,我看到很多c#代碼。現在我檢查它,它只是一個方法存根,沒有任何業務邏輯代碼。非常感謝,謝謝帶來這樣一個好產品的xamarin團隊。 – BlueSky 2012-03-12 15:19:15