安卓逆向_0 --- 逆向、安全、工具集安卓 逆向 必备工具
1、工具集
吾爱 工具集
看雪 工具集
看雪 知识库
安卓 逆向环境 r0env
安装设置 r0env
- :https://mp.weixin.qq.com/s/umxxDAxRZw3kyCPDV-63RQ
- :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
环境部署 r0env
:https://www.52pojie.cn/thread-1755913-1-1.html
1.更新系统源:apt update
2.KaliLinux 默认不带中文 安装中文字体
apt install xfonts-inti-chinese
apt install ttf-wqy-microhei
3.简单的防盗版:nano /etc/hostname、ctrl +x退出
4.链接手机:数据线、wifi adb
5.快速调出terminal:ctrl + alt + T
6.安装几个必备软件
apt install tmux jnettop htop
jnettop 实时看下载的流量和端口
7.htop 看当前系统的内存
8.uname -a 查看当前手机架构
安卓 逆向 必备工具
- 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的时候需要。
- MT管理器 / RE文件管理器
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。
hooker 和 frida、objection 有什么不同
- 职责不同:frida 注重打造调试引擎、objection 注重将 frida 的 api 简单封装一下让你好快速上手 frida。而 hooker 是重新站在一个安卓应用开发和安卓逆向工程师的角度去打造的更加专业 Android 逆向工作台,重新定义了逆向 android 的工作方式。
- 封装不同:frida 是基于gumjs(V8)、C/C++封装的调试引擎,用于动态 Hook 跟踪、拦截和主动调用函数等。hooker 是基于 frida 作为引擎和自己打造的 Dex 库(radar)调用 Android Framework 层代码完成的。
- 交互方式不一样:frida 和 objection 只有 attach 上才能操作各种指令,而 hooker 提供 shell 命令行交互式让你可以通过 jadx 进行动静结合分析。
- 更注提供重 Android 逆向 思路和线索:frida 和 objection 没有对任何 Android Freamwork 层 的 hook 和能主动调用代码点位进行封装,这使得难以有逆向思路。而 hooker 的几乎所有命令都是围绕 Android Freamwork 进行封装,让一个即使没有 Android 开发经验的人也能快速找到逆向分析思路。
- hook 脚本产出方式不一样:frida 你需要先进行很多语法方面的学习,才能完成对各种类的各种方法进行frida脚本的编写。hooker 不需要你了解 frida 语法细节。比如你只需通过 j okhttp3.OkHttpClient:newCall 就可以生成一个 hook okhttp3.OkHttpClient 类的 newCall 方法的脚本, 即使对于任何一个被混淆的类操作也是如此。(你应该把更多的时间和精力放在逆向思路上,而不是熟悉某些语法上。)
- 提供操作原生 AndroidUI 功能:你可以 ./attach 每个 app 目录下的 android_ui.js 脚本,它提供了通过 ViewId、ViewText 找到 Android 原生的 View 并点击,或者你想强制打开某个 Activity(比如某个界面只有会员才能进入,这时候你就可以采用 Android "原生代码" 打开的方式)。
hooker 仅支持在 Linux 和 MacOS 下运行,并且现在和将来都不会支持 windows 操作系统!
hooker-for-windows:https://github.com/p1s1lver/hooker-for-windows
hooker:https://github.com/CreditTone/hooker
cd hooker
pip install -r requirements.txt通过 requirements.txt 可以发现 hooker 支持的 frida版本是 14.2.2,也可以升级到最新的frida,但是使用时需要修改下hooker 的源码,因为 14 版本的 frida 使用 "com.xxx.xxx" 包名 ,14+ 版本的 frida 使用 "app的名字"
- 提示1: 第一次调试你的应用时hooker将在当前目录生成以进程Identifier命名的应用专有工作目录,并初始化生成一些你可能会用到的通杀脚本。
- 提示2: 成功attach一个应用时,命令将pause在等待输入调试指令的阶段。pause状态下使用命令进行高级调试请直接跳到hooker调试命令行
- 提示3: attach时hooker会将radar.dex文件拷贝到手机的/data/user/0/{package}/目录下。如果没有复制过去,需要手动 adb push 过去
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 还是游戏辅助,后台挂机都能完美适配。
安卓 模拟器
:https://www.bear20.com/xxzt/pcmnq/?f=bdf_443527
- 模拟器 (雷电、夜神、逍遥 等)
9、爬虫 必备 库
requests
httpx
fake_useragent
Linux cURL
scrapy
scrapy-redis
Selenium、ChomeDrive
aiohttp
lxml
pyquery
beautifulsoup
jupyter 在线记事本。
pymql
pymongo
Redis
Flask
mitmproxy