Android APK反編譯及去廣告漢化,apk優化簽名等
阿新 • • 發佈:2019-02-05
概述
Android APK反編譯是個有趣的事情。我們可以對APK反編譯進行漢化破解工作等。
Android APK反編譯主要涉及三個工具的使用,分別是
- apktool
- dex2jar
- jd-gui(即jad)
Android-ApkTool
功能: 可以反編譯成smali的中間程式碼檔案和可人類友好的XML資原始檔如AndroidManifest.xml專案地址:原地址:https://code.google.com/p/android-apktool/,但是該專案已經搬遷至http://ibotpeaches.github.io/Apktool/
使用說明:
官方文件地址:http://ibotpeaches.github.io/Apktool/documentation/
專案最新版本為2.0,與1.x版本的使用差異:
下面為具體使用Examples of new usage in 2.0 vs 1.5.x Old (Apktool 1.5.x) <span style="white-space:pre"> </span>New (Apktool 2.0.x) apktool if framework-res.apk tag <span style="white-space:pre"> </span>apktool if framework-res.apk -t tag apktool d framework-res.apk output <span style="white-space:pre"> </span>apktool d framework.res.apk -o output apktool b output new.apk <span style="white-space:pre"> </span>apktool b output -o new.apk
基本: apktool d testapp.apk Decoding反編碼: $ apktool d foo.jar // decodes foo.jar to foo.jar.out folder $ apktool decode foo.jar // decodes foo.jar to foo.jar.out folder $ apktool d bar.apk // decodes bar.apk to bar folder $ apktool decode bar.apk // decodes bar.apk to bar folder $ apktool d bar.apk -o baz // decodes bar.apk to baz folder 構建Building
$ apktool b foo.jar.out
// builds foo.jar.out folder into foo.jar.out/dist/foo.jar file
$ apktool build foo.jar.out
// builds foo.jar.out folder into foo.jar.out/dist/foo.jar file
$ apktool b bar
// builds bar folder into bar/dist/bar.apk file
$ apktool b .
// builds current directory into ./dist
$ apktool b bar -o new_bar.apk
// builds bar folder into new_bar.apk
$ apktool b bar.apk
// WRONG: brut.androlib.AndrolibException: brut.directory.PathNotExist: apktool.yml
// Must use folder, not apk/jar file
dex2jar
簡介 :把dex檔案轉換成jar檔案 專案地址:原地址:https://code.google.com/p/dex2jar/,最新專案地址:http://sourceforge.net/p/dex2jar/ 使用: 文件地址:http://sourceforge.net/p/dex2jar/wiki/UserGuide/; http://sourceforge.net/p/dex2jar/wiki/Faq/ 版本:原地址版本為0.0.9.5,新地址版本為2.0 要求環境:JDK7// For Linux, Mac OSX, Cygwin
sh /home/panxiaobo/dex2jar-version/d2j-dex2jar.sh /home/panxiaobo/someApk.apk
// For Windows
C:\dex2jar-version\d2j-dex2jar.bat someApk.apk
然後可以使用jd-gui檢視產生的jar檔案jd-gui
介紹:直接通過jar檢視原始碼 專案地址:http://jd.benow.ca/ 使用:略國人開發的反編譯整合工具AndroidKiller
t挺強大的,用過就知道了。 地址:http://pan.baidu.com/s/1c06fupEAPK去廣告與漢化
APK去廣告: 先反編譯 apktool d old.apk 修改佈局檔案,以去谷歌廣告為例:(只適用於非UI硬編碼) <com.google.ads.AdView android:id="@id/adView" android:background="#00000000" android:layout_width="0.0dip" android:layout_height="0.0dip" ads:adSize="BANNER" ads:adUnitId="a676bb9042fc40cf" ads:loadAdOnCreate="true" ads:testDevices="emulator-5554" android:visibility="gone" />方式一:android:layout_width="0.0dip" android:layout_height="0.0dip" 方式二:新增android:visibility="gone"屬性 重新編譯生成apk: apktool b old.out 重新編譯生成apk之後需要進行簽名才能安裝或者使用,否則無法安裝,或者出現FC。 簽名: java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk
漢化:步驟相同,只是需要改改value目錄下的相關值檔案。
APK優化與簽名
因為優化會影響簽名,所以我們需要注意執行順序:先優化後簽名。 優化:zipalign工具使用說明: Usage: zipalign [-f] [-v] <align> infile.zip outfile.zip
zipalign -c [-v] <align> infile.zip
<align>: alignment in bytes, e.g. '4' provides 32-bit alignment
-c: check alignment only (does not modify file)
-f: overwrite existing outfile.zip
-v: verbose output
zipalign -c -v -f 4 new.apk 簽名: java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk