文章目录
Ⅰ、Androidkiller
Android Killer是一款可以对APK进行反编译的工具,它能够对反编译后的Smali文件进行修改,并将修改后的文件进行打包
apktool、dex2jar、jd-gui的集合体
(注意:androidKiller版本可能太旧,导致反编译失败,需要下载版本更新补丁包或及时更新工具版本)
jdk1.8.0 + 已加补丁整合包下载路径
链接:https://pan.baidu.com/s/1oIigQ5QEUnJag-AB0EE4dg
提取码:59lw
一、配置环境
- “AndroidKiller”的文件夹目录结构,如图1.1所示,双击打开“AndroidKiller.exe”文件,此时,会弹出一个窗口,提示没有Java SDK环境,直接点击OK进入AndroidKiller工具界面。
- 选中“主页”菜单栏下的“配置”,选项点击“Java”图标配置JDK安装路径。点击编辑框右边的“文件夹”图标,找到之前安装的JDK目录,选择自己安装的jdk文件夹下的“bin”目录(找“bin”目录下的Java.exe文件),点击确定按钮
二、反编译
-
将需要反编译的 apk 拖进 AndroidKiller 里,进行反编译(通过apk-tool、dex2jar)
当出现 APK 所有反编译工作全部完成!!!时,说明反编译成功以一款计算机app为例
-
点开工程管理器,便会呈现apk的目录结构
对比得出以下结论:无 META-INF 文件的原因:对apk的反编译过程中,对apk的整体性造成破坏,apk的签名没有存在意义,所以在反编译时被处理掉
AndroidManifest.xml 文件转换为 values 文件:AndroidManifest.xml 的反编译结果存放在了values开头的文件夹中,(对字符操作时,如汉化,需要修改values文件)
classses.dex 文件反编译为 smali 代码文件
-
当点开文件会出现smali代码,点击上方Javalogo,会呈现Java源码(通过 jd-gui)
三、编译
当对反编译的文件做完操作后,重编译、签名打包成apk,点击上方”Android“后,点击左上角“编译“
当出现APK 所有编译工作全部完成!!!(包括编译与重签名) ,说明反编译成功
四、运行
- 打开Android虚拟机或外挂Android手机或模拟器,点击AndroidKiller上方的”Android“,点击上方”刷新“,选中你的设备,这样电脑就和手机设备连接了( 通过adb ,注意统一adb版本)
(如果是真机,则需要打开开发者模式,打开USB调试功能)
AndroidKiller通过 adb 与手机设备连接
统一 adb 版本(版本不一样可能会造成冲突)
- 点击安装,就能将程序安装到手机设备中
- 点击卸载,就能卸载(doge)
注意:重打包的软件不能和原来的在手机设备上共存(签名不一致,无法覆盖安装)
AndroidKiller会显示Apk安装失败,需要先卸载原APP
五、其他
- 批量操作与调试
- 类方法索引
- 方法操作
- 类操作
- 自定义代码块一键插入
- 关键字语法显示
- Unicode转换
Ⅱ、Apktool
-
作用
- 用于反编译Android apk,可以将应用中的资源提取出来,也可以在修改资源文件后重新打包。
- smali 调试
- 主要查看res文件下xml文件、AndroidManifest.xml和图片。(注意:如果直接解压.apk文件,xml文件打开全部是乱码)
-
进行解包,获得smail码
java -jar .\apktool的名字 d(反编译) .\要解包的apk -o(输出) 文件名
-
重新打包
java -jar .\apktool的名字 b(打包) .\要打包的文件夹名字
重新打包后的apk在要打包的文件夹里的dist目录下
Ⅲ、dex2jar(dex to jar)
Android 中的一个反编译工具,它可以将 Android 程序安装包 Apk 文件中的 .dex 文件反编译成一个 .jar 文件,也可以将反编译后的 .jar 文件重新编译成 .dex 文件。
- 安装
将下载的 dex2jar-2.0.zip 压缩文件直接解压到任意文件夹下。
将 dex2jar-2.0 文件夹的路径配置到 PATH 环境变量中去。
在命令行窗口输入d2j-dex2jar
命令按回车键 - dex2jar 反编译
- 将 Android Apk 文件后缀名 .apk 改成 .zip 文件并解压,获取到它的 .dex 文件(解压后有可能有多个 dex 文件),dex2jar 主要对 classes.dex 文件反编译。
- 输入dex2jar 反编译命令
-
第一种方法
d2j-dex2jar < dexFilePath > -o < outputJarFilePath >
dexFilePath: 要反编译的 .dex 文件的文件路径。
outputJarFilePath: 反编译后输出的 .jar 文件的文件路径。
-
第二种方法
将需要反编译的dex文件(这里是classes.dex)复制到 dex2jar 解压目录下。
打开命令行进入 d2j-dex2jar.bat 文件所在目录,输入命令.\d2j-dex2jar.bat classes.dex
(.\当前目录 …\上一级目录)
-
- 将 Android Apk 文件后缀名 .apk 改成 .zip 文件并解压,获取到它的 .dex 文件(解压后有可能有多个 dex 文件),dex2jar 主要对 classes.dex 文件反编译。
- dex2jar 重编译
dex2jar 重编译命令:d2j-jar2dex < jarFilePath > -o < outputDexFilePath >
jarFilePath: 要重新编译的 .jar 文件的文件路径。
outputDexFilePath: 重编译后输出的 .dex 文件的文件路径。
Ⅳ、jd-gui
将源代码转换成二进制执行代码的过程叫“编译”,那么反编译就是将二进制执行代码转换成源代码。
在java开发里,源代码是.java文件,然后经过编译后生成计算机识别的.class文件,但是.class文件是计算机识别的我们一般看不明白,因此需要反编译变成我们能读懂的源码
- JD-GUI 是一个用 C++ 开发的 Java 反编译工具
- 双击运行 jd-gui.exe 文件,将jar文件拖到工作区即可打开。
Ⅴ、jadx-gui
jadx是一款反编译器,同时支持命令行和图形界面,能以最简便的方式完成apk的反编译操作。
jadx 支持 Windows、Linux、 macOS,能够打开.apk
, .dex
, .jar
,.zip
等格式的文件
-
安装jadx
链接:https://pan.baidu.com/s/1FXaqUEobcuunVeQA-aGJdw?pwd=1234
提取码:1234
然后将build/jadx/bin加入到环境变量。 -
使用jadx
通用File - Open file选择文件或者直接将apk拖进窗口中,就可以查看某个 apk 的Java源码(自动分类源代码和资源文件)
用途:更直接地帮助分析代码
Ⅵ、JEB
JEB是一款为安全专业人士设计的功能强大的Android应用程序反编译工具。用于逆向工程或审计APK文件,可以提高效率,减少工程师的分析时间。JEB支持Windows, Linux和Mac OS
-
安装jeb
链接:https://pan.baidu.com/s/1842GhhbKsk8WNaSiJMRVxw?pwd=1234
提取码:1234下载完成后进行解压,解压完成后打开文件夹,运行安装目录下的.bat后缀的文件,等待一会就会出现jeb面板,这就说明我们的jeb工具能成功打开了。
如果cmd窗口显示一个检查更新出错,直接无视就可以了。如果没有出现JEB面板,检查一下JDK环境是否配置了“JAVA_HOME”。如果已经配置,就要检查配置的路径是否正确以及检查jdk版本是否过高。
-
菜单栏使用
文件:文件的打开、导入、保存、另存为等操作。
编辑栏:文件的复制粘贴、搜索、语言设置、style设置字体、选项设置等操作。
行为栏:包含了快捷键操作:①Q:转换成伪代码 ② /:添加注释 ③ N:重命名 ④ Delete:删除
窗口:窗口显示的相关设置,使用默认即可。
帮助:官方的相关信息。
-
使用JEB反编译
将APK安装包拖进主界面即自动反编译,结构如下图,如果有外部引用还会有Libraries文件夹。
Ⅶ、Ul Automator Viewer
链接:https://pan.baidu.com/s/1nkZ32sK3IlanhTEAz21qjA?pwd=1234
提取码:1234
点击uiautomaatorviewer.bat,点击后会出现一个console黑窗口,使用时不要关掉。
打开APP,在 Ul Automator Viewer 点击 Device Screenshot