android 反编译及二次打包详细步骤
有時候有反編譯的需求,借鑒或者修改下APK的代碼及資源。
先下載必須軟件
ApkTool? ? ?https://ibotpeaches.github.io/Apktool/install/
ApkTool用于解壓.apk文件及二次打包,直接用解壓工具解壓出來的文件是無法閱讀和修改的;
mac下安裝有時會提示權限問題,指令實例:chmod +x d2j_invoke.sh
指令解釋:chmod +x 未獲取權限的文件名,文件可以是相對或者絕對路徑
然后下載
選擇一:
dex2jar??https://sourceforge.net/projects/dex2jar/files/
最新版本是2.0,? 2015年最后更新,說明有點過時了,作用是將.dex文件反編譯為.jar;
jd-gui? ? ?http://java-decompiler.github.io/
最新版本是1.6.6,下載mac版本要求電腦安裝JDK11,所以直接下載通用的.jar就可以運行了,作用是查看反編譯后的.jar,然后修改對應的.samli文件,.samli文件是很難看懂的,不過也是能修改的。
選擇一是以前的方式,有點過時了,建議用選擇二;
選擇二:
jadx-gui? ? ??https://github.com/skylot/jadx/releases
這個軟件可以直接解壓apk文件及反編譯,相當方便好用。
有些需要梯子,這里直接提供了目前最新工具套裝forMac,因為我現在很少用win哈:
https://download.csdn.net/download/msn465780/83369358
如何使用?
安裝好ApkTool后,把.apk文件拷貝到apktoo目錄下的bin目錄下,和apktool這個可執行文件一級,mac系統在/usr/local/Cellar下;
指令官方文檔:?https://ibotpeaches.github.io/Apktool/documentation/
有解壓和二次打包的各種指令;
終端進入上述bin目錄,這里先解壓指令例子:apktool d -s zz.apk -o zz
說明:apktool d -s [apk名字]?-o [解壓后的文件夾名字],d是decode
當然也可以用絕對路徑哈;
解壓后得到如圖:
還有一個指令:apktool d ?zz.apk -o zz,這個沒有-s, 解壓出來的就不是.dex文件,而是.smali
接下來,使用dex2jar,看名字就知道是將dex反編譯為jar, 將.dex拷貝到dex2jar根目錄下,
終端進入到dex2jar目錄下,mac系統指令:?sh d2j-dex2jar.sh classes.dex
指令解釋:sh d2j-dex2jar.sh [目標dex文件的名字]
然后生成一個classes-dex2jar.jar;
在后, 用下載好的jd-gui打開這個.jar進行查看源碼,如圖:
?是不是有點麻煩?是的
那么新一代神器就出場了哈,jdx-gui,
用這個軟件直接打開目標.apk,如圖:
接著,另存為android工程,用androidstudio查閱,就相當方便了哈,如圖:
?此過程可能需要幾分鐘,請耐心等待或者去搞其他的事,好了后用AS打開此項目,當然項目結構語法肯定有錯誤哈,這個的目的是為了查閱源碼和資源的,是不能二次打包的哈;
再接著,找出需要修改的地方,就找到對應的.smail文件修改哈,.jar和.smali文件的名字都是一樣的哈,應該找文件問題不大哈。
二次打包,
同樣定位到bin下apktool文件那個目錄,進入終端,指令:
apktool b zz?-o new_zz.apk
指令解釋:apktool b [解壓后的文件名]?-o [二次打包的apk名],b指build
?然后終端進入到SDK自帶的platform-tools目錄下,用adb指令安裝新的apk, 指令示例:
adb install /Users/chenqi/Downloads/new_zz.apk
以為可以開心的玩耍了嗎?還差一點點哈,
此時會發現安裝不了,提示證書檢驗失敗,簡單,再次簽名就好了哈,將簽名文件拷貝到apktool可執行文件目錄下,當然也可以寫絕對路徑,
指令示例:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore Untitled -storepass 123456 new_zz.apk 123456
指令解釋:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [keystore文件路徑] -storepass [keystore文件密碼] [待簽名APK路徑] [keystore文件別名]
再次指令安裝,好了,這下可以開心的玩耍了
總結
以上是生活随笔為你收集整理的android 反编译及二次打包详细步骤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NYOJ-45 棋盘覆盖
- 下一篇: Android反编译实战-去广告