2013-03-07 32 views
1

我即將發佈在Assets /文件夾中包含大量JavaScript的應用程序。我縮小了最小化&將一切(JS)合併成一個大約500kb的大文件。我正在尋找加密方法並將其從資產文件夾中隱藏。如何加密資產

你認爲最好的方法是什麼?

  1. 在Java Class中存儲爲純字符串,並且(我不知道它是否可能)告訴proguard專門加密這個。 - >我想通過onintercepturlloading

  2. 店呢起到WebView作爲內部資產加密的文件,與任何第三方或Java加密例程熱解密 - 我想聽聽有關。無論你想

  • 理想的解決方案應該包括作爲構建過程的一部分,但我會手動生成加密數據,如果沒有其他的解決方案。

    編輯:DexGuard似乎是專業的方式去,但它的€350,任何免費的替代品?

    請不要問我爲什麼要加密它。我需要這樣做,就像有一天你需要去看牙醫。

  • +2

    你爲什麼要加密它?專注於製作更好的內容而不是無用的DRM方案。 – vertti 2013-03-07 12:43:11

    +2

    @vertti因爲如果有人拿到他們的APK,他們可以打開它並檢查資產文件夾中的代碼。 – 2013-03-07 12:43:40

    +0

    是的,我知道,但你試圖藏在那裏的祕密是什麼? – vertti 2013-03-07 12:44:18

    回答

    2

    我建議你不要依賴第三方工具,因爲你可能會變成供應商鎖定,這意味着他們如果停下來開發軟件等等。我會把Javascript的內容放在一個大的最終靜態String,然後如你所說告訴Proguard做它的魔法。

    來自Proguard的documentation

    ProGuard會加密字符串常量嗎?

    編號程序代碼中的字符串加密根據定義必須是完全可逆的 ,所以它只能提高混淆級別。它增加了代碼的佔用空間。然而,根據廣受歡迎的需求,ProGuard的 適用於Android的封閉源代碼,DexGuard支持字符串 加密,以及類加密和隱藏對敏感API的訪問。

    +0

    PRoGuard會自己做魔術嗎?你可以微調它,所以它特別亂碼大字符串? – rupps 2013-03-07 12:48:23

    +0

    @rupps請看我更新的答案。 – 2013-03-07 12:51:01

    +0

    嗨@simon非常感謝。 Dexguard是我正在尋找的,我認爲:)我會嘗試它,並會發布更新 – rupps 2013-03-07 12:52:29

    0

    絕對沒有什麼可以做的,將被視爲安全。所以混淆幾乎是浪費的努力和獲得安全(使黑客更難,但很少)之間的最佳折衷。

    確保加密方案需要密鑰。而且你沒有地方隱藏你的鑰匙。你可以在你的APK中使用它,或者你可以讓APK從某個服務器上下載它。使用合適的工具都很容易找到。

    如果你只是想減慢黑客的速度,那麼就用簡單的方法去做吧。將javascript部分分散到不同的位置,並使用一些簡單快速的編碼將其編碼,如base64。然後將它們即時合併。一個專業的人會像任何加密方案一樣打破它,但是你不會浪費很多時間來實現它。有更多時間來編寫您的實際應用程序

    DexGuard幾乎做了我上面描述的(字符串混淆),但對於獨立開發者,我覺得它非常昂貴(最便宜的許可證是350美元)。

    +0

    我不想要超級保護,但我也不希望我們的所有代碼都暴露在簡單的PkUnzip中。如果有人想竊取我們的代碼,我希望他/她至少要調試幾個小時。 – rupps 2013-03-07 12:50:29

    +0

    然後去一些簡單的事情。將javascript部分分散到不同的位置,並使用像base64這樣的簡單快速編碼對它們進行編碼。然後將它們即時合併。一個專業的人會像任何加密方案一樣打破它,但是你不會浪費很多時間來實現它。有更多時間來編寫您的實際應用程序 – vertti 2013-03-07 12:52:14

    +0

    是的,這是我的PLAN C,但我給了DexGuard一個鏡頭,看起來像它正是我的... thanx的答案雖然 – rupps 2013-03-07 12:54:44