1.編譯:把程式碼編譯成APK檔

2.反編譯:把APK反編譯得出java原始碼

3.反反編譯:顧名思義讓你的程式碼編譯後的APK讓人不好破解,就算反編譯出程式碼也不易看懂

=================================
1.編譯(eclipse為例)

專案右鍵→AndroidTools→Export Signed/Unsigned Application Package

2.反編譯原始碼

a.首先要下載兩個工具:dex2jarJD-GUI

b.首先將要反編譯的apk檔副檔名改成壓縮檔(zip,rar)得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的
解壓縮剛剛下載的的dex2jar,將classes.dex複製到dex2jar.bat所在目錄

c.在cmd下定位到dex2jar.bat所在目錄(cd/d 資料夾路徑)
再打上 dex2jar.bat    classes.dex

就會生出一個檔案 classes.dex.dex2jar.jar

也可以把c步驟包成bat檔 每次就不用再進入Dos下打了只要點兩下自製bat 就可以自己生成classes.dex.dex2jar.jar
bat可照下面打(把註解去掉//)
=============bat
D:  //dex2jar所在的磁碟 C曹就改C:
CD DecompileTool\dex2jar-0.0.7-SNAPSHOT\dex2jar //CD  dex2jar資料夾所在目錄
dex2jar.bat classes.dex  //不變
===============

d.bc步驟圖解
未命名.png 

e.剛剛下載的JD-GUI壓縮後打開裡頭的jd-gui.exe
再打開剛剛生成的classes.dex.dex2jar.jar
就能看到程式碼了
1.png 

3.反編譯xml等文件

apk中的xml文件被弄成二進制了,沒法瀏覽,利用AXMLPrinter.jar轉換後,可以查看正常的xml文件。

下載AXMLPrinter.jar
a.一樣先把要反編譯的apk解壓縮把裡頭的xml檔拿出來
b.打開cmd一樣到AXMLPrinter.jar資料夾根目錄 打上

java -jar AXMLPrinter.jar main.xml > main.txt 

即會把main.xml轉成main.txt檔
(不是都一樣打main.xml 要依照你要反編譯的xml檔名.xml ,main.txt是你要輸出的txt名稱叫main 可改 )

4.反反編譯

Android應用開發者如果遇到自己辛辛苦苦開發的應用可以被別人很輕易的就反編譯出來 應該會超X的吧

Google似乎也發現了這個問題,從SDK2.3開始 

只要在project.properties /default.properties 最後加上
一行 proguard.config=proguard.cfg 就OK了

未命名.png 

我們來看看同一個程式經過反反編譯前後的APK被反編譯之後的樣子

a.未經過反反編譯的APK被破解後

1.png 

b.經過反反編譯的APK被破解後

2.png 




, , ,
創作者介紹

Mazs's Notes

cookiesp 發表在 痞客邦 PIXNET 留言(0) 人氣()