关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。
未经允许不得转载
我们继续总结学习基础知识,温故知新。
我们在开发的过程中,经常需要反编译自己的apk,也可能要看看竞品的方案什么的,本文记录了一些常用的反编译工具。
这是一个开源工具,挺好用
github
安装:
sudo pacman -S jadx
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
flatpak install flathub com.github.skylot.jadx
可直接下载exe文件运行即可
DEFAULT_JVM_OPTS='"-Xms1024M" "-Xmx8g"'
这个也是傻瓜式的操作,可自行下载。
这个软件在反编译多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
使用方法为: 下载后放入原相应的目录就可以
apktool git
轻松反编译apk,解析出资源文件,xml文件,生成smali文件,还可以把修改后的文件你想生成apk
反编译
#mac linux
./apktool d xxx.apk outdir
#window
apktool.bat d xxx.apk outdir
编译
./apktool b apppath outpath
将apk文件中的dex文件转换成jar文件
dex2jar git
download
jd-gui
jd-gui主要用来反编译class文件,查看jar文件,有图形化界面.
GUI 已不再更新,用户可手动替换相应最新版 jar 文件到软件内进行使用
github
GDA
GDA,一款用C++实现的强大的Dalvik字节码反编译器,具有分析速度快、内存磁盘消耗低等优点,对apk、dex、odex、oat、jar、class、aar文件的反编译能力更强。
GDA也是一个强大且快速的逆向分析平台。不仅支持基本的反编译操作,还支持恶意行为检测、隐私泄露检测、漏洞检测、路径解析、加壳识别、变量跟踪分析、反混淆、
Python&Java脚本、设备内存提取、数据解密等多种优秀功能。加密等
反汇编专业工具,有一定的学习成本。
Java 专栏
SQL 专栏
数据结构与算法
Android学习专栏
未经允许不得转载