Android反編譯-編譯源碼-修改源碼-打包-簽名全過程

本案例講述一個Apk反編譯全過程,包括:編譯源碼、修改源碼、打包、簽名。

案例展示:

反編譯前
反編譯後

首先準備反編譯工具:

dex2jar(dex轉jar)

dex2jar

jd-gui(對Jar進行反編譯)

jd-gui

apktool(對apk進行反編譯)

apktool

baksmali(將dex文件編譯成smali文件)

baksmali

工具截圖:

工具截圖

新建項目,生成一個APK:

生成APK

複製【app-debug.apk】到【C:\Users\Chao\Desktop\反編譯工具】開始反編譯

CMD執行以下命令將Apk拆包(拆包後會在當前目錄生成file文件夾):

java -jar apktool_2.3.4.jar d -f app-debug.apk -o file
APK拆包

用壓縮軟件打開apk,將內部的classes.dex解壓到【C:\Users\Chao\Desktop\反編譯工具\dex2jar-2.0】目錄,並執行以下命令生成classes-dex2jar.jar:

d2j-dex2jar classes.dex
dex轉換jar

用jd-gui.exe打開上面生成的classes-dex2jar.jar,查看源碼:

查看源碼

根據jar反編譯的源碼進行修改,例如【file/smail/包名】目錄下對應MainActivity.smali文件:

MainActivity.smali
MainActivity.smali

將smail內部Unicode字符串轉碼,確定是否是我們要修改的內容:

unicode轉中文

用我們想要的文字轉換爲Unicode字符串,並替換保存:

中文轉unicode

運行以下命令重新打包apk:

java -jar apktool_2.3.4.jar b file -o cc.apk
打包apk

此時apk還無法安裝,還需要簽名,運行以下命令簽名:

debug.keystore是從android studio配置目錄拿到的測試key,通常位於目錄【C:\Users\Chao\.android】

jarsigner -verbose -keystore debug.keystore -signedjar cc_signed.apk cc.apk androiddebugkey
簽名apk

此時apk已經可以安裝使用了,不過爲了提升運行速度,建議做一次對齊操作:

APK對齊:工具存放於<Android SDK>/build-tools/<version>
zipalign 4 cc_signed.apk cc_signed_aligned.apk

另外附上baksmali/smali將dex與smail相互轉換的命令:

java -jar baksmali-2.2.5.jar d classes.dex -o smali

java -jar smali-2.2.5.jar a smali -o newclasses.dex
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章