linux下使用apktool破解修改安卓apk,apktoolapk
自己平常用linux作業系統,某時突然想改個安卓的遊戲
(1)
安裝jre
http://java.com/zh_CN/download/index.jsp
找到合適自己的版本
2、解壓檔案
tar -zxvf jrexxxx.tar.gz
將得到的檔案夾jre1.7.0_45(我的檔案夾名)移動到/usr/lib/java中去,如果是linux mint debian目錄是/usr/lib/jvm/,下面我們假設是移動到java目錄中
使用mv命令 mv jre1.7.0_45 /usr/lib/java
3、運行命令 $sudo vim /etc/environment
添加環境變數,直接添加到檔案中去
JAVA_HOME="/usr/lib/java/jre1.7.0_45"
CLASSPATH="$JAVA_HOME/lib"
PATH="$JAVA_HOME/bin:$PATH"
如果原來就沒有安裝java, 手動export PATH="/usr/lib/java/jre1.7.0_45:$PATH"
否則執行下列步驟:
設定當前預設的java解譯器
$sudo update-alternatives --install /usr/bin/java java /usr/lib/java/jre1.7.0_45/bin/java 300
運行命令
$sudo update-alternatives --config java
選擇該安裝版本
測試
$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) Client VM (build 24.45-b08, mixed mode)
安裝成功
(2)
http://code.google.com/p/android-apktool/
下載
apktool1.5.2.tar.bz2
apktool-install-linux-r05-ibot.tar.bz2
解壓,取 aapt apktool apktool.jar 到/usr/local/bin/下
使用方法 http://code.google.com/p/android-apktool/wiki/FrameworkFiles
http://code.google.com/p/android-apktool/wiki/ApktoolOptions
一般是apktool d 程式.apk 反編譯後產生"程式"檔案夾, 修改後 apktool b 程式/ 會在"程式/dist/"下產生新的"程式.apk"
(3)
除了apktool外,還有一種反編譯的方法,可以查看java原始碼的,二者結合在一起更強大
dex2jar 把dex檔案轉化成jar的工具
http://code.google.com/p/dex2jar/
下載它
dex2jar 使用教程
http://code.google.com/p/dex2jar/wiki/ModifyApkWithDexTool
jd-gui
http://jd.benow.ca/
下載 jd-gui-0.3.5.linux.i686.tar.gz
使用其中的jd-gui查看jar中的java代碼
# 轉換test_apk-debug.apk中的classes.dex為test_apk-debug_dex2jar.jar
d2j-dex2jar.sh -f -o test_apk-debug_dex2jar.jar test_apk-debug.apk
# 驗證jar
d2j-asm-verify.sh test_apk-debug_dex2jar.jar
# 轉換成jasmin格式
d2j-jar2jasmin.sh -f -o test_apk_jasmin test_apk-debug_dex2jar.jar
卸載舊的apk
修改smail檔案
再產生新的apk檔案
# 產生jar
d2j-jasmin2jar.sh -f -o test_apk_jasmin.jar test_apk_jasmin/
# 驗證jar
d2j-asm-verify.sh test_apk_jasmin.jar
# 轉換成 dex
d2j-jar2dex.sh -f -o classes.dex test_apk_jasmin.jar
# 產生一份拷貝
cp test_apk-debug.apk test_apk-debug-toast.apk
# 替換test_apk-debug-toast.apk中的classes.dex
zip -r test_apk-debug-toast.apk classes.dex
# 簽名 apk
d2j-apk-sign.sh -f -o test_apk-debug-toast-signed.apk test_apk-debug-toast.apk
重新安裝就可以了
(4)
最後把重新編譯產生的 "程式.apk" 進行簽名,否則是無法啟動並執行
下載 signapk 這個網上搜一下很多 比如 http://ishare.iask.sina.com.cn/f/25267528.html
英文教程: http://www.londatiga.net/it/how-to-sign-apk-zip-files/
確保安裝有openssl,產生key
openssl genrsa -out key.pem 1024
openssl req -new -key key.pem -out request.pem
openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem
openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt
進行簽名
java -jar signapk.jar certificate.pem key.pk8 程式.apk 簽名.apk
完成, 作者:帥得不敢出門 程式員群:31843264