Android包的反編譯與重新打包

在下面操作中會用到的幾個工具:
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文件

app-release目錄下

題外話:到這里,發(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

這個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,然后用壓縮工具打開

dex

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


默認(rèn)在dex2jar工具包下面

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

java文件

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容