欢迎光临散文网 会员登陆 & 注册

Android逆向-工具篇

2023-03-25 22:00 作者:Snnnotname  | 我要投稿


工欲善其事,必先利其器


1. Android 官方调试工具


1.1 Android Device Monitor

Android Studio 是安卓官方的 IDE,用于开发安卓应用,一般逆向中不需要用到。但是 Android SDK 中有一个调试工具 Android Device Monitor,用来看日志很方便,因此要装一下 SDK。通过 Android Studio 的 SDK 管理器可以安装需要的 SDK 版本。

注意,Android Device Monitor 已经从 Android Studio 3.2 中移除,被一组新的组件取代。要在 SDK 管理器的 SDK Tools 标签下取消勾选 Hide Obsolete Packages,然后选择 Android SDK Tools (Obsolete),Apply 之后,在 SDK 安装目录下会生成一个 tools 目录,双击 <SDK安装目录>/tools/monitor.bat 就能打开 Android Device Monitor。Android Device Monitor 和 Android Studio 不要同时开,否则调试信息会不正常。

SDK 管理器
Android Device Monitor 安装路径

Android Device Monitor 的日志过滤功能很强大,可以先按包名过滤目标app的日志,然后搜索关键字定位到具体日志。

Android Device Monitor

Android Studio 官方下载地址:https://developer.android.google.cn/studio


1.2 Android SDK Platform-Tools

Android SDK Platform-Tools是Android SDK的一个子集,提供了常用的命令行工具,平常用到最多的adb和fastboot就在这个工具包里。它是一个压缩包,解压后就能执行。最好将目录添加到 PATH 环境变量,方便在任意目录下调用。

官方下载地址:https://developer.android.google.cn/studio/releases/platform-tools?hl=zh-cn


2. apk 解包、签名、打包


2.1 命令行工具

Apktool

apktool 是一个可以解包并反编译 apk 的命令行工具,它依赖 Java 8 (JRE 1.8)。常用的命令:

Apktool 官方下载:https://ibotpeaches.github.io/Apktool/


zipalign

zipalign 是数据对齐工具,可以优化系统解析 apk 的速度,通常按 4 字节对齐。常用的命令:

其他参数参考官方文档:https://developer.android.google.cn/studio/command-line/zipalign?hl=zh-cn

zipalign 位于 <SDK安装目录>/build-tools/<版本号> 目录下。


apksigner

重新打包后的 apk 没有签名,是无法安装到安卓系统中的,需要使用 apksigner 对 apk 签名:

其中xxx.jks是密钥库文件,可用通过Android Studio生成,<ks_pwd>是密钥库的密码,<key_pwd>是密钥密码,如果没有密码则不需要提供,或者也可以通过其他方式提供,具体细节参考官方文档:https://developer.android.google.cn/studio/command-line/apksigner?hl=zh-cn

apksigner 位于 <SDK安装目录>/build-tools/<版本号> 目录下。


这几个命令组合起来使用:


2.2 图形界面

有很多基于这些基本命令行工具封装的图形界面,推荐一个比较顺手的 APK Editor Studio,可以快速修改应用名和图标。在只需要替换资源文件,而不用修改代码逻辑的时候,用它来解包/打包速度会快一点。

APK Editor Studio

APK Editor Studio 官方下载地址:https://github.com/kefir500/apk-editor-studio


3 反编译与代码查看

解包 apk 后会得到一些 classes.dex 文件,它们是编译后的二进制文件,反编译得到 smali 代码才好阅读和修改代码逻辑(当然也可以直接修改 dex,但分析起来比较费劲)。Apktool 在解包时已经反编译了,因此直接得到 smali 代码。这里介绍一些图形界面工具,方面查看代码。


3.1 Android Killer

Android Killer 是一款比较老的工具,依赖 JRE 1.8(好像是因为Apktool),用它来解包和反编译没问题,但是再打包回去就会报错,吾爱上有一些解决方法,在我电脑上都不起作用,就没深究。主要用它来修改 smali 代码以及全局搜索和替换。

Android Killer

Android Killer 官方下载地址:https://www.52pojie.cn/thread-319641-1-1.html


3.2 APKToolGUI

由于 AndroidKiller 的编译打包功能有问题,我一般用 APKToolGUI 完成后续的编译打包签名。

APKToolGUI

APKToolGUI 官方下载地址:https://github.com/AndnixSH/APKToolGUI


3.3 JEB

JEB 可以将 apk 反编译为 smali 代码和 Java 代码。但是好像没有全局搜索,也不能修改文件内容。

JEB

JEB 安装使用教程:https://www.52pojie.cn/forum.php?mod=viewthread&tid=1598242


3.4 JADX

JADX 功能比较齐全,可以解包、反编译成 smali 和 Java 代码,并且支持全局搜索,但是不能修改。适合用来梳理代码逻辑。

JADX

但是感觉它不是很稳定,我遇到过几次崩溃的情况。

JADX 官方下载地址:https://github.com/skylot/jadx


另外还有一些静态分析和动态调试的工具,IDA Pro、Frida等,后面具体案例再介绍吧。

Android逆向-工具篇的评论 (共 条)

分享到微博请遵守国家法律