站內搜尋

2011/6/30

Android Tips 開發小技巧 - 保護你的程式 By ProGuard

今天,來講點簡單又不簡單的小東西。
用Java開發程式,其中一個比較麻煩也一直被討論的重點是被破解。
而其實Java程式的反編譯程式幾乎是隨手可得的。
在這種環境底上,程式設計師們還是需要學一些基本的手段來「盡可能」的保護一下自己。


這篇文章要講的不是多高深多了不起的技巧,我個人不是專門研究破解及反破解等相關問題的人士。
主要的目地是把 Android Developers 上面所教的,簡單的混淆編碼方式告訴大家。

雖然不是什麼很了不起的保護,但,起碼是個開始,如果有興趣的朋友,也許可以繼續的研究下去,
也其待有網友分享更好的方法。

在Android Developer網站上面提到,假設是利用 Eclipse 來做開發,在開啟新專案後,都會出現一個檔案叫 proguard.cfg。它裡面包含了最簡單的混淆機制,基本上,你可以利用改寫這支檔案來針對你的 Project 進行更深一步的編碼,這部份就讓我們有空的時候再來討論。

而要開啟它的方式相當簡單,開發者只需要在 default.properties 中加上一行
proguard.config=proguard.cfg
一切就搞定啦!

之後,每當你使用 Eclipse 中的 Export wizard 來產生你的 Apk 檔時,都會在 <project root>/proground/ 下同時產生以下四個檔案
dump.txt mapping.txt seeds.txt usage.txt
別小看這四個檔案,它們可是有作用的。
當你混淆了你的當案之後,它們便失去了可便識的 method name,那假設你的程式發生的問題 (Exception),回報到 Google 後台的 call stack 也會是混淆的碼,你必需要先將它們反轉回去,才能對這些 call stack 進行 debug 的動作。

而這部份 Google 也幫你們打包準備好了!
請使用以下的自動執行檔來啟動 Proguard GUI 工具,Google 有提供 Windows 及 Linux 的版本,直接執行便可以看到操作畫面

AndroidSDK/tools/proguard/bin/proguardgui.bat


之後,由左邊的選單進入 ReTrace,將 Mapping 檔案指定好,再將 Market 後台回報來上來混淆過的 Callstack 貼到 Obfuscated stack trace,按下右下方的 ReTrace,就一切大工告成啦!

下面貼出簡單的操作示意圖,希望能幫助大家囉!




簡單的教學就到這裡了,如果大家有任何問題或建意,也歡迎提出來討論研究。

By Lak

熱門文章