標籤:
反編譯
相關工具下載:http://pan.baidu.com/s/1bnAkIb9
apktool
這是一個可以對apk進行反編譯和重打包的工具。:http://code.google.com/p/android-apktool/
反編譯apk1.把apk檔案放到apktool解壓目錄下。2.開啟命令列,cd到工具解壓縮目錄,使用“apktool d apk檔案路徑”命令反編譯apk。
apktool反編譯命令輔助指令碼代碼(windows)3.反編譯產生的檔案就在工具解壓縮目錄下,可以看到apk中所有的資源檔、庫檔案、smali檔案(java位元組碼的反組譯碼代碼檔案)。
smali2java是一個可以將smali代碼反編譯成java代碼的工具。:http://www.hensence.com/cn/smali2java/
重打包1.使用“apktool b 檔案夾路徑”命令重新打包apk。
apktool重打包命令輔助指令碼代碼(windows)
2.打包完成後,在目標檔案夾下會多出兩個檔案夾build和dist,其中dist檔案夾中的apk就是重打包後的apk。
dex2jar
這個工具用於反編譯dex檔案,並匯出jar。:http://code.google.com/p/dex2jar/downloads/list1.使用解壓縮工具開啟apk,把classes.dex檔案放到dex2jar的解壓縮目錄下
2.開啟命令列,在dex2jar解壓縮目錄下執行“dex2jar classes.dex”命令,反編譯dex檔案並產生jar。
jd-gui
這個工具用於查看jar檔案中的所有class的源碼。:http://jd.benow.ca/開啟jd-gui.exe,直接把jar檔案拖到工具裡就可以了。
點擊在File—Save All Sources(Ctrl + Alt + S)可以儲存java源碼。
相關工具:http://www.kanxue.com/android/decompilers.htm
防止反編譯
apk加殼工具下載:http://pan.baidu.com/s/1qW5G1Ta該工具來自這裡>>http://www.kanxue.com/bbs/showthread.php?t=177590
加殼說明加殼的全稱應該是可執行程式資源壓縮,是保護檔案的常用手段。 加殼過的程式可以直接運行,但是不能查看原始碼.要經過脫殼才可以查看原始碼。
加殼的另一種常用的方式是在二進位的程式中植入一段代碼,在啟動並執行時候優先取得程式的控制權,做一些額外的工作。大多數病毒就是基於此原理。
apk加殼1.開啟加殼工具(我這裡使用的是windows版的),選擇apk,點擊加密。
2.等待下方提示“加密成功”,會在apk所在目錄產生xx.apk.dexcrypt.apk(加密但未簽名的apk)和dg.apk.dexcrypt.signed.apk(加密並使用預設簽名的apk)。3.一般情況下,我們還需要使用自訂的.keystore檔案對apk進行重簽名。可以使用命令“jarsigner -keystore .keystore檔案路徑 -storepass 別名 -keypass 密碼 -signedjar 簽名apk產生路徑 未簽名apk路徑 別名”對apk進行簽名(需要java環境)
樣本:jarsigner -keystore release.keystore -storepass linchaolong -keypass xxx -signedjar dg-final.apk dg.apk.dexcrypt.apk linchaolong
4.對簽名後的dg-final.apk進行反編譯。可以看到並沒有反編譯成功。
【Android】apk反編譯與防止反編譯