Mac反编译安卓APK
一、方法一:
1、安装jdk8
brew install --cask adoptopenjdk
2、下载库,编译安装
git clone https://github.com/skylot/jadx.git cd jadx ./gradlew dist
3、然后将build/jadx/bin加入到环境变量。访达打开:【~/.bash_profile】
export JADX_HOME=/Users/jadx/build/jadx #以自己的路径为准 export JADX_BIN=$JADX_HOME/bin export PATH=$PATH:$JADX_BIN
Mac配置环境变量的地方:
3.1、/etc/profile (建议不修改这个文件 )
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
3.2、/etc/bashrc (一般在这个文件中添加系统级环境变量)
全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。
3.3、~/.bash_profile (一般在这个文件中添加用户级环境变量)
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!
但是有时在.bash_profile 文件中的环境变量并没有起到作用
这时可以查看使用的Mac OS X是什么样的Shell
➜ ~ echo $SHELL
/bin/zsh
3.4、当mac上安装了zsh后,修改环境变量就需要在~/.zshrc中修改,比如加入代理:
export http_prox=http://10.199.75.12:8080 export https_proxy=http://10.199.75.12:8080
如果想要修改立即生效,需要执行
source ~/.zshrc
4、开始反编译等完毕后,可以开始最简单最常用的用法。
把apk改成zip,解压zip获取class.dex文件,将classes.dex文件放到jadx目录下
cd build/jadx/ jadx -d out classes.dex # 反编译后放入out文件夹下(如果out不存在它会自动创建) #or cd jadx/build/jadx/bin/jadx jadx-gui classes.dex # 会反编译,并且使用gui打开
5、使用jadx,路径:
~/jadxTool/jadx/build/jadx/bin
jadx也有GUI,直接双击bin目录下的jadx-gui,然后选择要反编译的apk即可,运行效果如下。
jadx_gui如果要保存源码,选择File->Save ALL即可保存文件,然后就可以导入Android Studio等IDE中。
6、我们也可以直接使用命令行反编译apk文件:
jadx -d out classes.dex #直接输出.java文件到out目录 jadx-gui classes.dex #使用gui打开
7、在反编译较大的apk时,如果遇到jadx-jui卡顿和假死的情况,可适当优化jvm相关参数, 我直接在~/.bash_profile中加上了如下语句:
export JVM_ARGS="-Xmx4096m -XX:MaxPermSize=1024m"
二、方法二:
1. 使用brew安装 :
brew install jadx (输入完命令,等待安装完毕)
2. 查看jadx的安装位置 : brew list jadx
输出结果如下:
- /opt/homebrew/Cellar/jadx/bin/jadx
- /opt/homebrew/Cellar/jadx/bin/jadx-gui
3.配置相应的环境变量
在.bash_profile文件中加入JADX_HOME环境变量并保存
# jadx-gui JADX_HOME=/opt/homebrew/Cellar/jadx/ PATH=$PATH:${JADX_HOME}/bin
4.在shell中直接输入jadx-gui启动jadx的图形化界面
三、注意:许多知名一点的App的apk文件在用jadx反编译的时候,会经常提示你运行内存不足导致某些内容没反编译出来.jadx一般初始默认的内存是4G,因此需要我们去手动修改一下他的默认内存大小.
Mac系统
注意:Mac直接修改jadx.bat或者jadx-gui.bat文件会发现怎么都不好使.这是因为.bat在Windows上是支持的,但是在Mac上不支持此文件.因此我们需要直接修改jadx-gui的二进制文件.
1.在终端用vim打开你的jadx-gui.(例如我的jadx-gui路径是 /Users/username/jadx-decompiler/bin/jadx-gui )
2.按e选择edit anyway模式,按i进入insert模式
3.向下移动光标找到图中所示位置,新增 DEFAULT_JVM_OPTS=’"-Xms1024M" “-Xmx8g”’ 切记两边单引号不要忘记!!!
4.输入完成之后按esc键,退出insert模式
5.输入冒号:进入底部命令行模式
6.输入wq保存退出
7重新启动jadx-gui完成默认内存的修改