Ubuntu环境下Android反编译apk教程
1. 前言
??????? 在工作中,當(dāng)開發(fā)某個(gè)功能,或者通過對比兩個(gè)apk的表現(xiàn)形式不同,想看看這個(gè)apk中的內(nèi)部文件,無奈只是一個(gè)純apk,而且不是自己開發(fā)的,又沒有源碼,那怎么辦呢?這個(gè)時(shí)候你就需要用到反編譯,好了,本篇文章來講一下Ubuntu下反編譯環(huán)境的安裝和步驟。
2. 工具
??????? 反編譯apk,我們需要如下3個(gè)開發(fā)工具:Apktool?? dex2jar?? jd-gui
??????? Apktool : 這個(gè)工具是用來反編譯apk中的資源文件,如res,AndroidManifest.xml等
??????? dex2jar :??? 這個(gè)工具是用來反編譯apk的代碼
??????? jd-gui?? :? 這個(gè)用來查看代碼的工具
2.1 apktool
官網(wǎng)下載地址:https://ibotpeaches.github.io/Apktool/install/
我們是Ubuntu開發(fā)環(huán)境,當(dāng)然下載Linux版本的,如下:
?Installation for Apktool
- Linux:
- Download Linux wrapper script (Right click, Save Link As apktool)
- Download apktool-2 (find newest here)
- Rename downloaded jar to apktool.jar
- Move both files (apktool.jar & apktool) to /usr/local/bin (root needed)
- Make sure both files are executable (chmod +x)
- Try running apktool via cli
按照上面的描述,我們一步一步操作
1.? 第一步下載是apktool腳本執(zhí)行文件,需要VPN翻墻才能下載到,文章結(jié)尾會把需要的工具統(tǒng)一打包共享出來
2.? 下載最新的apktool_x.x.x.jar 包
3.?? 把下載的jar包重命名為 apktool.jar
4. 把a(bǔ)pktool 腳本文件 和 apktool.jar 這兩個(gè)文件拷貝到 /usr/local/bin 下(root權(quán)限)
5.?? 給這兩個(gè)文件添加可執(zhí)行權(quán)限
最后結(jié)果如下:
工具安裝完成后,我們開始反編譯apk,然后查看里面的資源文件
步驟一: 把需要反編譯的apk放置某個(gè)文件夾中,終端命令進(jìn)入到該目錄,執(zhí)行
apktool d test.apk?? d就是decode解碼的意思
apktool d test.apk -o <dir>? ? -o? 是output,代表輸出目錄
??? 該命令可用于指定反編譯后文件的存儲位置,其中<dir>表示目標(biāo)存儲位置
如果遇到這樣的錯(cuò)誤:Destination directory? already exists. Use -f switch if you want to overwrite it.,表示你所指定的目錄已存在,可以改用命令:
apktool d -f test.apk -o <dir>????? -f 是force 表示強(qiáng)制覆蓋
執(zhí)行過程如下:
?成功后,會在同目錄下生成一個(gè)test文件夾
步驟二: test文件夾中所有的資源文件都是可以查看的,不是亂碼
字符串:
AndroidManifest.xml:
2.2 dex2jar
??????? 工具下載地址:dex2jar - Browse Files at SourceForge.net
??? 把下載最新的dex2jar-x.xzip包解壓到當(dāng)前目錄, 找到目標(biāo)的腳本文件 d2j-dex2jar.sh
????????接下來我們在反編譯apk代碼:
步驟一: 我們把test.apk 后綴名修改為 test.zip, 然后解壓到當(dāng)前目錄
?打開test文件夾,有個(gè)classes.dex 該文件中存放的就是java代碼
?步驟二: 接下來將classes.dex文件拷貝到d2j-dex2jar的解壓目錄下,執(zhí)行命令
sh d2j-dex2jar.sh classes.dex過程如下:
home@home-MS-7B89:~/worktools/decodeapk/dex2jar-2.1/dex-tools-2.1$ sh d2j-dex2jar.sh classes.dex dex2jar classes.dex -> ./classes-dex2jar.jar? 接下來會在同級目錄下生成一個(gè) classes-dex2jar.jar 文件,則表示成功:
?當(dāng)dex 文件轉(zhuǎn)換成 jar文件后,我們?nèi)匀粺o法直接查看jar中的class具體內(nèi)容,這里我們需要借助于
jd-gui這個(gè)查看代碼的工具
2.3 jd-gui
??????? 工具下載地址: Java Decompiler
選擇Linux版本: jd-gui-1.6.6.deb
?步驟一: 首先我們先安裝一下這個(gè)工具,命令如下:
sudo dpkg -i jd-gui-1.6.6.deb安裝完成后,在Ubuntu 應(yīng)用程序列表中找到j(luò)d-gui 工具打開
步驟二: 通過菜單選項(xiàng) File -- openFile 打開剛才反編譯出來的 classes-dex2jar.jar包
?查看里面任何一個(gè)class文件,不會顯示亂碼
????????好了,到這里就大功告成了,本文中所有需要的開發(fā)工具打包后上傳到這里:?Android反編譯apk工具包-Android文檔類資源-CSDN下載?不需要C幣,供有需要的小伙伴下載使用。
總結(jié)
以上是生活随笔為你收集整理的Ubuntu环境下Android反编译apk教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wordpress 添加小工具分类
- 下一篇: 【51单片机快速入门指南】4.4.1:p