反编译apk过程记录

  • xx
  • xx
大约 2 分钟

安装工反编译工具

brew install apktool
brew install smali
brew install dex2jar
brew install jadx
brew install --cask jd-gui

apktool

将apk文件重命名为zip文件后可以直接对其进行解压缩,但是内部的xml文件是二进制的xml,我们无法直接阅读,需要借助apktool 进行资源的提取和转换,在我们修改文件资源后也可以使用apktool进行重新打包,使用方式如下:

// 提取资源
apktool decode test.apk

// 提取资源并指定输出目录
apktool d test.apk -o test

// 重新打包apk
apktool b test

dex2jar

使用apktool提取apk资源后会得到一个同名的文件夹,内部有一个子文件夹smali,它对应着原始Android目录下的src目录,smali是Dalvik虚拟机指令语言。

cp test.apk test.zip
unzip test.zip # 会得到classes.dex
d2j-dex2jar classed.dex -o test.jar # 转换成jar包

jd-gui

jd-gui是java的反编译器Java Decompiler project,把二进制的可执行文件翻译成代码。 jd-gui提供了一个图形化的界面可以查看jar包代码

Jar包可以直接使用jd-gui打开,但是打开后可能会报错:

No suitable Java version found on your system! This program requires Java 1.8+

解决办法:

vim /Applications/JD-GUI.app/Contents/MacOS/universalJavaApplicationStub.sh

# 查找并修改为以下内容[JAVACMD填写本机Java路径,版本不能超过Java10]
# first check system variable "$JAVA_HOME"
if [ -n "$JAVA_HOME" ] ; then
        JAVACMD="/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/java"
上次编辑于: