APK反编译工具汇总
关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。
未经允许不得转载
目录
- 一、导读
- 二、各种工具
- 2.1 jadx
- 修改jadx默认运行内存大小
- 2.2 androidkiller
- 2.3 apktool
- 2.4 dex2jar
- 2.5 jd-gui
- 2.6 Android Crack Tool
- 2.7 GDA
- 2.8 IDAPro
- 三、 推荐阅读
一、导读
我们继续总结学习基础知识,温故知新。
我们在开发的过程中,经常需要反编译自己的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-guiJADX_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%pauseif 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% pausemove 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%pauseset 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
后来发现有大佬写了解决方案,如下:
链接:
提取码: 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
GDA,一款用C++实现的强大的Dalvik字节码反编译器,具有分析速度快、内存磁盘消耗低等优点,对apk、dex、odex、oat、jar、class、aar文件的反编译能力更强。
GDA也是一个强大且快速的逆向分析平台。不仅支持基本的反编译操作,还支持恶意行为检测、隐私泄露检测、漏洞检测、路径解析、加壳识别、变量跟踪分析、反混淆、
Python&Java脚本、设备内存提取、数据解密等多种优秀功能。加密等
2.8 IDAPro
反汇编专业工具,有一定的学习成本。
三、 推荐阅读
Java 专栏
SQL 专栏
数据结构与算法
Android学习专栏
未经允许不得转载
APK反编译工具汇总
关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。
未经允许不得转载
目录
- 一、导读
- 二、各种工具
- 2.1 jadx
- 修改jadx默认运行内存大小
- 2.2 androidkiller
- 2.3 apktool
- 2.4 dex2jar
- 2.5 jd-gui
- 2.6 Android Crack Tool
- 2.7 GDA
- 2.8 IDAPro
- 三、 推荐阅读
一、导读
我们继续总结学习基础知识,温故知新。
我们在开发的过程中,经常需要反编译自己的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-guiJADX_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%pauseif 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% pausemove 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%pauseset 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
后来发现有大佬写了解决方案,如下:
链接:
提取码: 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
GDA,一款用C++实现的强大的Dalvik字节码反编译器,具有分析速度快、内存磁盘消耗低等优点,对apk、dex、odex、oat、jar、class、aar文件的反编译能力更强。
GDA也是一个强大且快速的逆向分析平台。不仅支持基本的反编译操作,还支持恶意行为检测、隐私泄露检测、漏洞检测、路径解析、加壳识别、变量跟踪分析、反混淆、
Python&Java脚本、设备内存提取、数据解密等多种优秀功能。加密等
2.8 IDAPro
反汇编专业工具,有一定的学习成本。
三、 推荐阅读
Java 专栏
SQL 专栏
数据结构与算法
Android学习专栏
未经允许不得转载