2012-01-06 73 views
3

我們的開發團隊只是(大部分)完成了在Visual Studio中使用MonoDroid的Android應用程序。因爲它與銀行有關,所以我們試圖對其進行混淆,以便爲試圖對其進行反編譯的任何人增加一些安全性。最初,我想我可以使用ProGuard,但似乎沒有可以在Visual Studio中編輯的project.properties文件。任何人都可以在這個主題上閃耀一些光輝的曙光,並告訴我是否可以用Mono來使用ProGuard,而我的新生只是讓我的視覺模糊不清?有沒有辦法在MonoDroid上使用ProGuard?

(另一名開發者試圖使用Dotfuscator的 - 由於我們無法立即找到一種方法,使用ProGuard-但它與衆多的錯誤而導致失敗;單聲道運行時似乎給它的問題。)

+0

我認爲monodroid團隊可以回答這個最好的? – Peterdk 2012-01-06 21:41:18

+0

幾天前我實際上發了一封支持郵件,但沒有回覆。以爲我會在這裏問一個最後的嘗試。 – Luke 2012-01-06 22:04:23

+0

混淆不會真的做任何事情來顯着捍衛你的代碼庫。首先,運行時必須重新構建cil才能運行它。如果保護依賴於代碼的一部分,那麼您的應用程序模型就是錯誤的。這說我可以看到你想隱藏你的知識產權 – IanNorton 2012-01-07 07:41:32

回答

5

Mono的Android版工具鏈目前沒有任何運行proguard的支持。

但是,除了一個很大的例外,缺乏proguard支持在很大程度上是沒有意義的。 Proguard只能運行在Java字節碼上。 Mono for Android architecture的Mono運行時正在運行; .NET CIL沒有被「編譯」成Java字節碼,CIL被Mono JIT。唯一運行的Java代碼是Android Callable Wrappers,它允許Java/Android調用託管代碼。

因此,在單機版Android應用程序中唯一保護的是proguard生成的Android Callable Wrappers,主要由一堆native方法聲明組成。 Android Callable Wrappers中不會有任何反編譯的業務邏輯。

相反,CIL程序集未壓縮存儲在.apk文件中。這些程序集可以被反編譯以獲得您的所有業務邏輯。這裏的解決方案是在將組件嵌入.apk之前對其進行模糊處理。有Xenocode的Postbuild 2010可以使用的reports,但我不知道有關如何掛鉤的細節。

上述異常涉及build proces中通過AndroidJavaSourceAndroidJavaLibrary構建操作包含的任何自定義Java代碼,這些代碼將用於包含諸如AdMob庫之類的內容。對於這種情況,我們應該爲構建過程添加proguard支持,儘管在添加proguard支持時沒有ETA。

+0

這真的清除了事情。謝謝! – Luke 2012-01-09 14:46:14

相關問題