APK反编译工具汇总

关于作者: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系统
  1. 找到jadx.bat文件
  2. 修改set DEFAULT_JVM_OPTS=“-Xms128M” “-Xmx4g” “-XX:+UseG1GC”
  3. 保存文件,退出并重新启动一次jadx
  • mac
  1. 切换到jadx-gui所在目录:
    cd /Users/xx/jadx-decompiler/bin/
  2. 输入 vim jadx-gui (按e选择edit anyway模式,按i进入insert模式)
  3. 找到 Add default JVM options here. 这样的语句,在下面添加
DEFAULT_JVM_OPTS='"-Xms1024M" "-Xmx8g"'
  1. 按esc键,退出insert模式
  2. 输入冒号:进入底部命令行模式
  3. 输入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

GDA,一款用C++实现的强大的Dalvik字节码反编译器,具有分析速度快、内存磁盘消耗低等优点,对apk、dex、odex、oat、jar、class、aar文件的反编译能力更强。

GDA也是一个强大且快速的逆向分析平台。不仅支持基本的反编译操作,还支持恶意行为检测、隐私泄露检测、漏洞检测、路径解析、加壳识别、变量跟踪分析、反混淆、
Python&Java脚本、设备内存提取、数据解密等多种优秀功能。加密等

2.8 IDAPro

反汇编专业工具,有一定的学习成本。

三、 推荐阅读

Java 专栏

SQL 专栏

数据结构与算法

Android学习专栏

未经允许不得转载

ddd

猜你喜欢

转载自blog.csdn.net/fumeidonga/article/details/134063729