在下面操作中會用到的幾個工具:
apktools https://ibotpeaches.github.io/Apktool/
JD-JUI http://jd.benow.ca/
dex2jar https://sourceforge.net/projects/dex2jar/
apktools在win上的安裝(https://ibotpeaches.github.io/Apktool/install/),大致內(nèi)容如下:
1、新建apktool目錄E:\apktool\
2、把下載的apktool.bat放到此目錄
3、把下載的apktool2.x.x.jar重命名為apktool.jar后放到此目錄。
OK,可以在命令行使用apktool命令了
反編譯:
apktool d e:\chm\apk\app-release.apk

app-release目錄點進(jìn)去里面有res、assets資源文件還有smali文件(smali是Dalvik虛擬機(jī)識別的匯編)我們的Java文件會對應(yīng)著相應(yīng)的smali文件

題外話:到這里,發(fā)現(xiàn)其實我們是可以做一些我們想做的事的,比如可以把啟動頁換成我們自己定義的Activity。不會寫smali怎么換?方法,在Android Studio里新建項目,包名和被反編譯的應(yīng)用一樣(manifest里有包名),新建Activity并且拿到apk,反編譯,拿到我們想要的Activity的smali換上,至于資源文件的id,你可以打開R文件編輯一下,沒事,R文件的smali極其簡單不用擔(dān)心看不懂,最后一步修改manifest的啟動Activity,打包!
打包:
apktool b app-release -o app-release-new.apk

這個apk在安裝的時候會提示安裝失敗,仔細(xì)想想我們還沒有對這個新打包出來的apk做簽名,開始簽名
E:\chm\apktool>jarsigner -verbose -keystore p_keystore.jks -signedjar app-release-signed.apk app-release-new.apk myu
注意,命令最后的‘myu’是證書中的別名(alias)

當(dāng)然,如果你愿意可以對這個包做個zip對齊,zipalign -v 4 app-release-signed.apk app-release-signed-align.apk,OK,這個包可以安裝了。
其他:
之前版本的apktool工具可以從apk中反編譯出dex文件,然后對dex進(jìn)行jar轉(zhuǎn)換,再借助于JUI我們就能看到Java代碼;而現(xiàn)在我們也有其他辦法,修改apk文件的后綴為jar,然后用壓縮工具打開

d2j-dex2jar E:\chm\apk\app-release.apk

看到這個應(yīng)該很熟悉,用JUI打開這個jar文件就是了

OK,這里只是初步的簡述下反編譯與重新打包的過程,至于砸殼這類辦法有時間在研究