关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。
未经允许不得转载
目录
一、导读
我们继续总结学习基础知识,温故知新。
我们在开发的过程中,经常需要反编译自己的apk,也可能要看看竞品的方案什么的,本文记录了一些常用的反编译工具。
二、各种工具
2.1 jadx
这是一个开源工具,挺好用
github
安装:
- Arch linux
sudo pacman -S jadx
- macOS
brew install jadx
查看jadx的安装位置 :
brew list jadx
在shell中直接输入jadx-gui启动jadx的图形化界面,如果不行,可能需配置相应的环境变量
在.bash_profile文件中加入JADX_HOME环境变量并保存
# jadx-gui
JADX_HOME=/opt/homebrew/Cellar/jadx/
PATH=$PATH:${JADX_HOME}/bin
- Flathub
flatpak install flathub com.github.skylot.jadx
- windows
可直接下载exe文件运行即可
修改jadx默认运行内存大小
- windows系统
- 找到jadx.bat文件
- 修改set DEFAULT_JVM_OPTS=“-Xms128M” “-Xmx4g” “-XX:+UseG1GC”
- 保存文件,退出并重新启动一次jadx
- mac
- 切换到jadx-gui所在目录:
cd /Users/xx/jadx-decompiler/bin/ - 输入 vim jadx-gui (按e选择edit anyway模式,按i进入insert模式)
- 找到 Add default JVM options here. 这样的语句,在下面添加
DEFAULT_JVM_OPTS='"-Xms1024M" "-Xmx8g"'
- 按esc键,退出insert模式
- 输入冒号:进入底部命令行模式
- 输入wq保存退出
2.2 androidkiller
这个也是傻瓜式的操作,可自行下载。
这个软件在反编译多dex时,可能会出错,所以写了一个bat文件来处理
dex_2_jar.bat
@echo off
@rem 1 输入工程名 工程名
echo start
echo 输入工程名
set /p projectName=
echo 输入dex名, eg: classes.dex, classes2.dex
set /p dexName=
echo 输入 dex2jar 名 ,eg: classes-dex2jar, classes2-dex2jar.jar
set /p dex2jarName=
echo 输入smali名 ,eg: smali, smali_classes2
set /p smaliName=
echo ===============
echo %projectName%
echo %dexName%
echo %dex2jarName%
echo %smaliName%
pause
if exist classes-dex2jar.jar (
del classes-dex2jar.jar
) else (
echo dex to jar
)
@rem echo e:
@rem cd E:\tool\AndroidKiller_v1.3.1\bin\dex2jar
call E:\tool\AndroidKiller_v1.3.1\bin\dex2jar\d2j-dex2jar.bat E:\tool\AndroidKiller_v1.3.1\projects\%projectName%\ProjectSrc\%dexName%
pause
move E:\tool\AndroidKiller_v1.3.1\%dex2jarName% E:\tool\AndroidKiller_v1.3.1\projects\%projectName%\ProjectSrc\
@rem cd /
@rem e:
@rem cd E:\tool\AndroidKiller_v1.3.1\projects\%projectName%\ProjectSrc\
@rem ren classes-dex2jar.jar %dex2jarName%
pause
set backdir="E:\tool\AndroidKiller_v1.3.1\projects\%projectName%\ProjectSrc\%smaliName%"
if exist %backdir% (echo "已经存在文件夹") else ( md %backdir% )
pause
"C:\Program Files\WinRAR\WinRAR.exe" x E:\tool\AndroidKiller_v1.3.1\projects\%projectName%\ProjectSrc\%dex2jarName% E:\tool\AndroidKiller_v1.3.1\projects\%projectName%\ProjectSrc\%smaliName%"\
@rem 解压classes-dex2jar.jar
@rem E:\tool\AndroidKiller_v1.3.1\projects\%projectName%\ProjectSrc\%smaliName%"\
echo "解压完成"
set projectName=
echo end
pause
后来发现有大佬写了解决方案,如下:
链接: https://pan.baidu.com/s/1RwHU0WXyq39Cr9-MqAU-XA
提取码: 3x6w
使用方法为: 下载后放入原相应的目录就可以
2.3 apktool
apktool git
轻松反编译apk,解析出资源文件,xml文件,生成smali文件,还可以把修改后的文件你想生成apk
反编译
#mac linux
./apktool d xxx.apk outdir
#window
apktool.bat d xxx.apk outdir
编译
./apktool b apppath outpath
2.4 dex2jar
将apk文件中的dex文件转换成jar文件
dex2jar git
download
2.5 jd-gui
jd-gui
jd-gui主要用来反编译class文件,查看jar文件,有图形化界面.
2.6 Android Crack Tool
GUI 已不再更新,用户可手动替换相应最新版 jar 文件到软件内进行使用
github
2.7 GDA
GDA,一款用C++实现的强大的Dalvik字节码反编译器,具有分析速度快、内存磁盘消耗低等优点,对apk、dex、odex、oat、jar、class、aar文件的反编译能力更强。
GDA也是一个强大且快速的逆向分析平台。不仅支持基本的反编译操作,还支持恶意行为检测、隐私泄露检测、漏洞检测、路径解析、加壳识别、变量跟踪分析、反混淆、
Python&Java脚本、设备内存提取、数据解密等多种优秀功能。加密等
2.8 IDAPro
反汇编专业工具,有一定的学习成本。
三、 推荐阅读
未经允许不得转载