【Android】apk反編譯與防止反編譯
來源:程序員人生 發布時間:2015-03-18 09:43:59 閱讀次數:4615次
反編譯
相干工具下載:http://pan.baidu.com/s/1bnAkIb9
apktool
這是1個可以對apk進行反編譯和重打包的工具。
下載地址:http://code.google.com/p/android-apktool/
反編譯apk
1.把apk文件放到apktool解壓目錄下。
2.打開命令行,cd到工具解緊縮目錄,使用“apktool d apk文件路徑”命令反編譯apk。
apktool反編譯命令輔助腳本代碼(windows)
3.反編譯生成的文件就在工具解緊縮目錄下,可以看到apk中所有的資源文件、庫文件、smali文件(java字節碼的反匯編代碼文件)。
smali2java是1個可以將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/list
1.使用解緊縮工具打開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
加殼說明
加殼的全稱應當是可履行程序資源緊縮,是保護文件的經常使用手段。 加殼過的程序可以直接運行,但是不能查看源代碼.要經過脫殼才可以查看源代碼。
加殼的另外一種經常使用的方式是在2進制的程序中植入1段代碼,在運行的時候優先獲得程序的控制權,做1些額外的工作。大多數病毒就是基于此原理。
apk加殼
1.打開加殼工具(我這里使用的是windows版的),選擇apk,點擊加密。
2.等待下方提示“加密成功”,會在apk所在目錄生成xx.apk.dexcrypt.apk(加密但未簽名的apk)和xx.apk.dexcrypt.signed.apk(加密并使用默許簽名的apk)。
3.1般情況下,我們還需要使用自定義的.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進行反編譯。可以看到并沒有反編譯成功。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈