抓包
Charles
https://www.charlesproxy.com/
mac端很舒服轻松的小花瓶,抓应用层Http(s)请求,是付费的,可寻找破解版
Fiddler
windows端的“Charles", 抓应用层Http(s)请求。但不推荐使用,因为它无法导入客户端证书(p12、Client SSL Certificates),对于服务器校验客户端证书的情况无法Bypass
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中流过,从而实现不适用代理抓包的效果
BrupSuite
一个较为专业的抓包工具
Hping
面向命令行的用于生成和解析TCP/IP协议数据包汇编/分析的开源工具。它支持TCP,UDP,ICMP和RAW-IP协议,具有跟踪路由模式
反编译
AndroidCrackTool 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文件
JEB
JEB是一个功能强大为安全专业人士设计的安卓应用程序反编译工具,用于逆向工程或者审计apk文件
dex2jar
https://github.com/pxb1988/dex2jar
将安卓可执行文件dex转为jar包
jd-gui
https://github.com/java-decompiler/jd-gui
可将安卓可执行文件dex转为jar包,并提供可视化代码阅读能力
Jadx/Jadx-gui
https://github.com/skylot/jadx
非常方便的Java反编译工具,一般用到的功能主要是搜索、反混淆、查找方法调用这几样,性能和反编译出来的代码效果都比使用dex2jar+jd-gui之类的方式好。
wxUnpacker
github上牛人写的小程序反编译工具 , 现已被封,但有其他fork版本
https://github.com/geilige/wxappUnpacker
ByteViewer
https://github.com/Konloch/bytecode-viewer
支持apk、dex等多种文件格式的反编译
Hook
Xposed
https://github.com/rovo89/Xposed
功能十分强大的Hook框架,很多逆向工具都是基于它来写的,有特殊需求时也可以自己写一个模块使用
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操作一下,一个搜索,加密参数就原形毕露了
Frida
https://github.com/frida/frida
作为Hook工具,相对于Xposed而言Frida的受欢迎度不断上升,它的功能在某些方面要比Xposed强得多。
它是一种动态插桩工具,可以插入一些代码到原生app的内存空间去,动态地监视和修改其行为,可对内存空间里的对象方法实现监视、修改甚至替换
VirtualAPP
它通过代理常用系统服务的方式,在系统服务层与应用层之间添加了一层虚拟空间,从而允许在不安装应用的情况下运行应用。特别说明的是VirtualApp本身并不需要root权限。利用VirtualApp提供的虚拟空间可以做很多事情。如应用启动时,会初始化Application,此时会在应用所在的进程中调用bindApplication()。而VirtualApp重写了相关代码,那么我们就可以在把注入代码的窗口放在这里,从而实现应用启动时,加载外部的hook代码。
Objection
https://github.com/sensepost/objection
Frida的集成化工具,简单易用
脱壳
Frida
如上介绍
dexDump
号称“葫芦娃”,Frida集成工具,实现一键脱壳
Fart
https://github.com/hanbinglengyue/FART
内存中DexFile结构体完整dex的dump进行脱壳
DeveloperHelper
基于Xposed写的辅助工具,常用于查看Activity名、查看加固类型、查看Activity结构、自动脱壳。
UCrack
基于Xposed写的辅助工具,集成了自动网络抓包、网络堆栈爆破、文件日志、WebView调试环境、自动脱壳、Native函数注册监控、记录程序自杀堆栈等功能
调试
Postman
https://www.postman.com/
请求接口调试,支持cURL导入
adb
https://developer.android.com/studio/?gclid=Cj0KCQjwub-HBhCyARIsAPctr7yEAxcKDru9JQeYIFnTKmVB9bMryV03LcxniCxTQQNHo-LY4UgIS38aAjLdEALw_wcB&gclsrc=aw.ds
安卓调试调,逆向中用于软件安装、服务启动、动态调试等,用法相当于Linux shell
IDA Pro
强大的调试工具,逆向中常用于so动静态分析,帮助破解Native加密逻辑
DDMS
Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务,它提供查看线程和堆信息、logcat、进程、广播状态信息等功能
AndBug
脚本式Android动态调试器,但不支持单步调试Android程序,并且无法对自定义的方法设置断点,因此在使用过程中可能会感到诸多不便,可以根据实际需要使用它
APPium
用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原生、移动 Web 和混合应用。核心是一个是暴露 REST API 的 WEB 服务器。它接受来自客户端的连接,监听命令并在移动设备上执行,答复 HTTP 响应来描述执行结果
库
xpath
便捷易用的HTML解析库
fake_useragent
User-Agent动态生成,池化技术,可有效避免检测UA的反爬虫策略
Linux
cURL
利用URL语法在命令行下工作的文件传输工具
openssl
ssl类命令行工具,逆向中常用于Android7.0以上证书文件生成hashcode,证书用hashcode重命名后安装到系统目录里面。
openssl x509 -subject_hash_old -in <Certificate_File>
mprop
可修改安装系统属性ro.debuggable,使得app变为可调试状态
/data/local/tmp/mprop
setprop ro.debuggable 1
写在最后
以上为笔者目前收藏和使用到的逆向工具,有更好用的神器和工具请在留言区补充~
相互学习,一起进步,感谢您对技术的热爱~
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)