反编译实质是通过某些反编译程序将安装包反编译,从而获取里面的代码,图片,xml等资源,如果我们看到一个别人的APP界面做得很精美,或者看上了别人的图片素材,我们可以下载别人的apk,后缀名改为xxx.zip,然后解压,解压后的目录结构大致如下:

一般的图片资源都存放在res/drawable目录下,通过这种方法,我们只能获取里面.png,或者.jpg的位图图片素材,xml和Java代码会打包到classes.dex中,可以通过反编译提取出来,反编译只能用于个人学习使用,需尊重别人的劳动成果,素材和代码只能参考,切勿完全拷贝
需要准备的三个工具
- apktool:获取资源文件,提取图片文件,布局文件,还有一些XML资源文件
- dex2jar:将classes.dex文件转化为jar文件
- jd-gui:将生成的jar导入jd-gui即可查看代码及代码结构
工具下载地址
- 链接:https://pan.baidu.com/s/1tjnryW4wpqOGEOcSALwtLw
- 提取码:qjnl
用apktool反编译后的文件列表

用jd-gui打开一个生成的jar文件

可以看到,里面的变量名都是以a,b,c这种字母显示的,因为安装包做了混淆,这种结构一般不容易被破解,所以加混淆还是有很大好处的。
以上就是关于反编译的一些基本介绍了,更多信息请亲自体验。
---2024年更新---AndroidKiller(集成 apktool dex2jar jd-gui)支持一键反编译,解包,编译,smali转java查看,smali插入,重签名
- 环境搭建(配置jdk,sdk)


软件运行依赖本地jdk(1.8-11),在第一次启用AndroidKiller之前,会提示配置jdk,配置路径如上图所示,apktool包建议使用2.6以上的(2.6以下的可能存在某些包解包失败的问题),配置完成后重新启动即可
- apktool下载地址:https://www.pd521.com/thread-107-1-1.html
2.文件目录介绍
在软件开始页面直接拖入需要反编译的apk,软件解包后目录结构如下:

接下来看看Java代码对应的反编译后smali文件


3.主要功能介绍
工具
- 编码转换 :此功能可以把字符串转换成特定的字符编码(UNICODE,UTF-8,ANSI)
- MD5查看器:能查看文件的MD5,crc,sha256值,也能计算出某个字符串的sha256值
- 文件搜索:搜索某个文件中的特定字符
- apk签名:给apk重新打签名,支持自定义签名
Android
- 编译:编译指定的项目
- 批量编译:编译所有已打开的项目
- 字符串:查找当前项目中出现的所有指定字符串
- 方法声明:查找所有出现的方法声明
- 插入代码管理器:此功能可以在某个smali文件中插入指定的smali代码(日志输出,Toast打印,加载so库)
- apktool管理器:管理使用的apktool版本
- apk安装器:分析apk的主要信息,调试,运行,安装,协助
4.简单注入功能演练,在demo中注入一段Toast,点击时触发

在此处右键插入代码,smali中的字符串一般是以unicode字符显示,所以需要用到Android Killer自带的编码转换工具

在line34 return方法前插入Toast方法

编译,运行后点击按钮,效果如下:

以上是简单修改smali文件的方法,如果是修改资源文件,直接替换布局,或者修改布局文件即可
AndroidKiller下载地址:https://pan.baidu.com/s/1tTfgp6H_ktsRnw3-rS1o-A 提取码:iaxs
