1. 程式人生 > >Android APK反編譯及去廣告漢化,apk優化簽名等

Android APK反編譯及去廣告漢化,apk優化簽名等

概述

Android APK反編譯是個有趣的事情。我們可以對APK反編譯進行漢化破解工作等。

Android APK反編譯主要涉及三個工具的使用,分別是

  • apktool
  • dex2jar
  • jd-gui(即jad)
最後介紹了一款國人開發的整合反編譯工具AndroidKiller Android APK去廣告及漢化:使用的工具apktool及android sdk自帶的signapk.jar Android APK 優化與簽名:使用的工具androidsdk 自帶的zipalign與signapk.jar

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/1c06fupE

APK去廣告與漢化

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