0、安卓逆向环境 r0env
原味镜像介绍文章:https://mp.weixin.qq.com/s/gBdcaAx8EInRXPUGeJ5ljQ
原味镜像介绍视频:https://www.bilibili.com/video/BV1qQ4y1R7wW/
百度盘:链接:https://pan.baidu.com/s/1anvG0Ol_qICt8u7q5_eQJw 提取码:3x2a
阿里盘:http://49.235.84.125:8080/r0env
登录时用户名:root 密码:toor
1、工具集
吾爱 工具集
官网:https://www.52pojie.cn/
工具集:https://down.52pojie.cn
:https://www.52pojie.cn/thread-811805-1-1.html
看雪 工具集
官网:https://bbs.kanxue.com/
工具集:https://tools.pediy.com
知识库
看雪 知识库:https://www.kanxue.com/chm.htm?id=14693
安卓 逆向 必备 工具
- 1、一块安卓手机。(最好google手机,用于安装应用,调试等)
- 2、Charles。主要用于抓包,抓取应用的接口。
- 3、jadx-gui。也可以选择使用jeb,拖入即可。
- 4、Android Killer。一般用来把反编译的APP重新编译,用来编辑samil代码来调试。
- 5、Android Studio。安卓的开发IDE,虽然是做逆向,但是正向的工具绝对不能少,里面也自带了monitor调试查看工具,截图工具等,而且在我们逆向的时候常常遇到一些比较疑惑的代码,可以用Android studio来重现出代码的执行意义。
- 6、IDA pro。分析SO层必不可少的神器,它也可以只是动态调试SO层代码。
- 7、Visual Studio。主要用来把so层的代码还原出来,因为SO层是ARM指令,但是它可以转换成伪代码,一定条件下我们可以将伪代码扣成C++代码用来重现执行效果。
- 8、Frida。这个hook工具可以直接hook so层函数,也可以hook java层的函数,并且不需要重启手机,非常的方便,比xposed方便多了。
- 9、IDEA。这个主要用来写java和frida脚本的,但是需要在里面添加进python的支持
- 10、python。这个是必须的,因为frida就是通过python来进行安装的。
- 11、winHex。十六进制编辑器,分析so或者查看Android的dex的时候需要。
2、抓 包
charles
:https://www.charlesproxy.com/
mac端很舒服轻松的小花瓶,抓应用层Http(s)请求,
Fiddler
:https://www.telerik.com/fiddler
windows端的 “Charles", 抓应用层Http(s)请求。但不推荐使用,因为它无法导入客户端证书(p12、Client SSL Certificates),对于服务器校验客户端证书的情况无法 Bypass
BrupSuite
一个较为专业的抓包工具
mitmproxy
可以使用拦截 request、response 的 代理工具
WireShark
https://www.wireshark.org/
会话层抓包很方便,通常需要配合反编译找到协议的组成方式。 建议使用方式:电脑端开热点,然后指定用于创建热点的虚拟网卡,再把手机连上热点开始抓包
TcpDump
适用于会话层抓包,可以直接在手机上运行 Tcpdump 然后导出文件在电脑端WireShark中打开,与直接使用 WireShark 抓包效果相同
Postern
Android系统里一款非常流行的代理/ 虚拟专用网络管理程序,是一个全局代理工具。支持的代理协议有: HTTPS/HTTP、SSH隧道、Shadowsocks、SOCKS5 代理等
Jnettop
实时查看流量走势和对方IP地址,直观生动
ProxyDroid
强制全局代理工具,适用于常规charles等工具抓不到包的情况。原理是通过 iptables 将所有TCP连接重定向到代理服务器上,强制性地让APP的HTTP请求通过代理。
PacketCapture
VPN 抓包工具,原理是在本地创建一个VPN,使所有请求都从VPN中流过,从而实现不适用代理抓包的效果
HTTPCanary
VPN 抓包工具,原理是在本地创建一个VPN,使所有请求都从 VPN 中流过,从而实现不适用代理抓包的效果
Hping
面向命令行的用于生成和解析TCP/IP协议数据包汇编/分析的开源工具。它支持TCP,UDP,ICMP和RAW-IP协议,具有跟踪路由模式
3、反编译
Android-Crack-Tool For Mac
:https://github.com/Jermic/Android-Crack-Tool
mac 下 Android 逆向神器,实用工具集
AndroidCrackTool集成了Android开发中常见的一些编译/反编译工具,方便用户对Apk进行逆向分析,提供Apk信息查看功能.目前主要功能包括(详细使用方法见使用说明):
- 反编译APK
- 重建APK
- 签名APK
- 优化APK
- DEX2JAR(APK2JAR)
- JDGUI
- 提取DEX
- 提取XML
- Class to smail
- Apk信息查看
- Unicode转换
apktool
:https://github.com/iBotPeaches/Apktool
一款功能强大且操作简单的apk反编译工具,能够将反编译的apk文件保存到同名目录中,还能帮用户将反编译的dex、odex 重新编译成dex文件
Android Killer
一般用来把反编译的APP重新编译,用来编辑 samil 代码来调试。
JEB
JEB是一个功能强大的安卓应用程序反编译工具,用于逆向工程或者审计apk文件。
使用:jeb > Jadx/Jadx-gui > apktool
jd-gui
:https://github.com/java-decompiler/jd-gui
可将安卓可执行文件dex转为jar包,并提供可视化代码阅读能力
dex2jar
:https://github.com/pxb1988/dex2jar
将安卓可执行文件 dex 转为 jar 包
Jadx、Jadx-gui
:https://github.com/skylot/jadx
非常方便的 Java 反编译工具,一般用到的功能主要是搜索、反混淆、查找方法调用这几样,性能和反编译出来的代码效果都比使用 dex2jar+jd-gui 之类的方式好。
wxUnpacker
:https://github.com/geilige/wxappUnpacker
github上牛人写的小程序反编译工具 , 现已被封,但有其他fork版本
ByteViewer
:https://github.com/Konloch/bytecode-viewer
支持apk、dex等多种文件格式的反编译
4、Hook 框架
Xposed、VirtualXposed、EdXposed、taichi (太极)、LSPosed
- Xposed:是一个模块框架,可以在不接触任何APK的情况下更改系统和应用程序的行为。但是自从 android 7.0 之后,xposed 的开发者 rovo89 基本就不维护了
- VirtualXposed:是基于VirtualApp 和 epic,可以在非ROOT环境下运行Xposed模块(支持5.0~8.1)。Virtual Xposed 的机制为模拟 Xposed 环境,可以把它简单的理解为一台已经刷了 Xposed 框架的虚拟机
- EdXposed:android 7.0 之后,xposed 虽然死了,但它却不再是唯一。这就是 Edxposed 框架,Edxposed 全称 Elder driver Xposed Framework,简称 edxp,或者 ed。
- taichi:太极是一个类似于Xposed的框架,但它本身与Xposed没有任何关系,唯一有关系的可能是太极与Xposed 模块兼容,它能够加载 Xposed模块、然后通过模块改变系统和应用的行为。 如:修改系统和APP、拦截方法,执行hook逻辑等。 太极既能以传统的 Root/刷机 方式运作,也能 免Root/免刷机 运行,但是有 Root 后能解锁更多的能力。现在支持包括 Android 5.0 ~ 12 在内的几乎所有机型
- LSPosed:是 Edxposed 的一个新的分支,LSPosed 与Edxposed 相互兼容,却比 Edxposed 更加简洁、易用和高效,是现如今饱受诟病的 Edxposed 的极佳替代品。
相关模块:
- JustTrustMe:https://github.com/Fuzion24/JustTrustMe。基于Xposed写的可以绕过SSL Pinning检测的工具
- Inspeckage:https://github.com/ac-pm/Inspeckage。 基于Xposed写的动态分析工具,Hook了大量逆向时常见的方法,如Crypto、Hash,这两个类型在破解大部分APP的加密参数时可以说是降维打击,因为大部分APP的加密参数都逃不过MD5、SHA1、AES、DES这四种,而它们都被Hook了(不仅仅只有这四种)。基本上就是打开Inspeckage再打开它的Web端,然后打开指定的APP操作一下,一个搜索,加密参数就原形毕露了
平头哥
github:https://github.com/virjarRatel
平头哥(ratel)是一个 Android 逆向分析工具套件,他提供一系列渐进式app逆向分析工具。同时平头哥也是一个app二次开发的沙箱环境,支持在免root环境下hook和重定义app功能。 对于大部分app来说,平头哥打开了潘多拉魔盒,请不要在授权之外违法使用平头哥(仅建议用于个人定制化使用、app攻防安全研究等领域),在ratel官方授权之外违规使用ratel造成的一些后果由使用者自定承担
平头哥是一个app逆向分析的生态,开发进度历时3年。目前正考虑推出商业版本的开源化。同时作为一套完善闭环的工具链,平头哥的相关功能是非常多的。能够在免root手机中使用xposed的框架。支持5.0-10.0。使用ratel可以任意控制app的行为,如同开启上帝模式一样。
Frida
github:https://github.com/frida/frida
作为Hook工具,相对于Xposed而言Frida的受欢迎度不断上升,它的功能在某些方面要比Xposed强得多。 它是一种动态插桩工具,可以插入一些代码到原生app的内存空间去,动态地监视和修改其行为,可对内存空间里的对象方法实现监视、修改甚至替换
Objection
github:https://github.com/sensepost/objection
Frida 的集成化工具,简单易用
hooker
hooker 逆向工作台:https://github.com/CreditTone/hooker
基于 frida 实现的逆向工具包。为逆向开发人员提供统一化的脚本包管理方式、通杀脚本、自动化生成hook脚本、内存漫游探测 activity 和 service、firda 版JustTrustMe。
5、脱壳
Frida 的 dexDump
号称“葫芦娃”,Frida集成工具,实现一键脱壳
Fart
github:https://github.com/hanbinglengyue/FART
内存中DexFile结构体完整dex的dump进行脱壳
DeveloperHelper
基于Xposed写的辅助工具,常用于查看Activity名、查看加固类型、查看Activity结构、自动脱壳。
UCrack
基于Xposed写的辅助工具,集成了自动网络抓包、网络堆栈爆破、文件日志、WebView调试环境、自动脱壳、Native函数注册监控、记录程序自杀堆栈等功能
6、调试
postman
官网:https://www.postman.com/
http 请求接口调试,支持cURL导入
adb
安卓调试桥,逆向中用于软件安装、服务启动、动态调试等,用法相当于Linux shell
IDA Pro
强大的调试工具,逆向中常用于so动静态分析,帮助破解Native加密逻辑
unidbg
unidbg 是一个标准的 java 项目,是一款基于 unicorn 和 dynarmic 的逆向工具。可以直接黑盒调用 Android 和 IOS 的 so 文件,无论是黑盒调用 so 层算法,还是白盒 trace 输出 so 层寄存器值变化都是一把利器~ 尤其是动态 trace 方面堪比 ida trace。
DDMS、Monitor
Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务,它提供查看线程和堆信息、logcat、进程、广播状态信息等功能
7、自动化
appium
用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原生、移动 Web 和混合应用。核心是一个是暴露 REST API 的 WEB 服务器。它接受来自客户端的连接,监听命令并在移动设备上执行,答复 HTTP 响应来描述执行结果
selenium
Selenium( selenium 中文网:http://www.selenium.org.cn/ )是一个强大的网络数据采集工具,最初是为了网站自动化测试而开发的,被用来测试 Web 应用程序在不同的浏览器和操作系统上运行能力。Selenium 不带浏览器,它需要与第三方浏览器结合在一起使用。例如,如果你在 Chrome 上运行 Selenium
playwright
Playwright 可以在所有浏览器中实现快速、可靠和强大的自动化测试。
8、安卓手机 的 虚拟机
VMOS
VMOS(虚拟大师)是 Android 系统上的 Vmvare,完整的且自带 Root 系统能够让你实现无限可能,不论是 Xposed 还是游戏辅助,后台挂机都能完美适配。
9、爬虫 必备 库
xpath 便捷易用的HTML解析库
fake_useragent User-Agent动态生成,池化技术,可有效避免检测UA的反爬虫策略
Linux cURL 利用URL语法在命令行下工作的文件传输工具
openssl ssl类命令行工具,逆向中常用于Android7.0以上证书文件生成hashcode,证书用hashcode重命名后安装到系统目录里面。 openssl x509 -subject_hash_old -in