標籤:
1.反編譯APK檔案
反編譯APK需要利用ApkTool工具,
https://bitbucket.org/iBotPeaches/apktool/downloads
http://ibotpeaches.github.io/Apktool/install/
1,按照安裝說明,先右鍵下載apktool的指令碼,再下載最新的apktool
2,先確保你的系統安裝了32位平台(依賴)庫,如果你ubuntu是13.10後版本,可以試試
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
3,將下載的apktool_2.0.0.jar改名為apktool.jar
4,將兩個檔案拷貝到/usr/local/bin目錄,這一步相當於配置環境變數了,可以在任意目錄運行
sudo cp -i apktool.jar /usr/local/binsudo cp -i apktool /usr/local/bin
5,添加許可權
sudo chmod +x apktool sudo chmod +x apktool.jar
上面幾步完成後就可以找個APK 反編譯下了
命令:apktool d (apk路徑) -o(輸出檔案夾)
注意:一定要加 -o這個參數,否則命令報錯
反編譯成功後就會在outdir目錄下產生一系列目錄,我們可以通過修改smali檔案代碼實現apk的修改。
通常做法是在res資來源目錄擷取到某資源的索引值,然後在smali目錄中搜尋含有該索引的.smali檔案
grep -r 0x7f0c004e /home/lionel/outdir/smali/*
該命令是在指定目錄下遍曆檔案和子檔案夾中包含 ‘0x7f0c004e‘的檔案
2.重新打包APK檔案
apktool b /home/lionel/outdir
編譯指定目錄下檔案,預設產生的apk在同目錄的dist檔案夾中
但現在還不能安裝在手機裡,新產生的apk需要簽名
keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000
keytool -genkey -v -keystore (產生的密鑰名稱) -alias (密鑰別名) -keyalg RSA -validity (有效期間)
jarsigner -verbose -keystore android.keystore -signedjar /home/lionel/outdir/MobilesSafe.apk /home/lionel/outdir/dist/MobilesSafe.apk android
jarsigner -verbose -keystore (上面產生的密鑰名稱) -signedjar (簽名後的APK路徑) (簽名前的APK路徑) (密鑰android.keystore的別名)
簽名後發現安裝時仍提示INSTALL_PARSE_FAILED_NO_CERTIFICATES
解決方案:添加參數-digestalg SHA1 -sigalg MD5withRSA
jarsigner -digestalg SHA1 -sigalg MD5withRSA -verbose -keystore android.keystore -signedjar /home/lionel/outdir/MobilesSafe.apk /home/lionel/outdir/dist/MobilesSafe.apk android
安裝成功!
Ubuntu下Android APK反編譯與重新編譯