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

反编译APK获取应用资源-noh a^ol !

一般的图片资源都存放在res/drawable目录下,通过这种方法,我们只能获取里面.png,或者.jpg的位图图片素材,xml和Java代码会打包到classes.dex中,可以通过反编译提取出来,反编译只能用于个人学习使用,需尊重别人的劳动成果,素材和代码只能参考,切勿完全拷贝

需要准备的三个工具

  1. apktool:获取资源文件,提取图片文件,布局文件,还有一些XML资源文件
  2. dex2jar:将classes.dex文件转化为jar文件
  3. jd-gui:将生成的jar导入jd-gui即可查看代码及代码结构

工具下载地址

用apktool反编译后的文件列表

反编译APK获取应用资源-noh a^ol !

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

反编译APK获取应用资源-noh a^ol !

可以看到,里面的变量名都是以a,b,c这种字母显示的,因为安装包做了混淆,这种结构一般不容易被破解,所以加混淆还是有很大好处的。

以上就是关于反编译的一些基本介绍了,更多信息请亲自体验。

---2024年更新---AndroidKiller(集成 apktool dex2jar jd-gui)支持一键反编译,解包,编译,smali转java查看,smali插入,重签名

  1. 环境搭建(配置jdk,sdk)
反编译APK获取应用资源-noh a^ol !
反编译APK获取应用资源-noh a^ol !

软件运行依赖本地jdk(1.8-11),在第一次启用AndroidKiller之前,会提示配置jdk,配置路径如上图所示,apktool包建议使用2.6以上的(2.6以下的可能存在某些包解包失败的问题),配置完成后重新启动即可

2.文件目录介绍

在软件开始页面直接拖入需要反编译的apk,软件解包后目录结构如下:

反编译APK获取应用资源-noh a^ol !

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

反编译APK获取应用资源-noh a^ol !
反编译APK获取应用资源-noh a^ol !

3.主要功能介绍

工具

  • 编码转换 :此功能可以把字符串转换成特定的字符编码(UNICODE,UTF-8,ANSI)
  • MD5查看器:能查看文件的MD5,crc,sha256值,也能计算出某个字符串的sha256值
  • 文件搜索:搜索某个文件中的特定字符
  • apk签名:给apk重新打签名,支持自定义签名

Android

  • 编译:编译指定的项目
  • 批量编译:编译所有已打开的项目
  • 字符串:查找当前项目中出现的所有指定字符串
  • 方法声明:查找所有出现的方法声明
  • 插入代码管理器:此功能可以在某个smali文件中插入指定的smali代码(日志输出,Toast打印,加载so库)
  • apktool管理器:管理使用的apktool版本
  • apk安装器:分析apk的主要信息,调试,运行,安装,协助

4.简单注入功能演练,在demo中注入一段Toast,点击时触发

反编译APK获取应用资源-noh a^ol !

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

反编译APK获取应用资源-noh a^ol !

在line34 return方法前插入Toast方法

反编译APK获取应用资源-noh a^ol !

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

反编译APK获取应用资源-noh a^ol !

以上是简单修改smali文件的方法,如果是修改资源文件,直接替换布局,或者修改布局文件即可

AndroidKiller下载地址:https://pan.baidu.com/s/1tTfgp6H_ktsRnw3-rS1o-A 提取码:iaxs