测试环境搭建:ADB配置、Root设备与模拟器、Frida环境、Burp Suite代理设置
做移动安全测试,环境搭建是第一步,也是最容易踩坑的一步。我见过太多人卡在环境配置上,还没开始测就放弃了。说白了,工具链没搭好,后面全是白搭。今天我就把这几块内容掰开揉碎了讲清楚。
核心要点:测试环境搭建的四个支柱——ADB通信、设备权限、动态插桩、流量拦截。缺一个,你的测试能力就瘸一条腿。
1. ADB配置:Android调试桥的完整搭建
ADB是Android Debug Bridge的缩写,它是你与Android设备通信的桥梁。我个人习惯把ADB比作「手机和电脑之间的电话线」——没有它,你什么都干不了。
安装步骤:
- 下载Android SDK Platform Tools(官方地址即可)
- 解压到本地目录,比如
C:\adb或/usr/local/adb - 将目录添加到系统环境变量PATH中
- 打开终端,输入
adb version验证安装
我在项目中遇到过一个问题:明明装了ADB,但就是识别不到设备。后来发现是驱动没装好。Windows用户记得装一下手机厂商的USB驱动,或者直接用通用驱动。
小技巧:用 adb devices -l 可以查看设备的详细信息,包括型号和状态。如果显示 unauthorized,记得在手机上确认USB调试授权。
常用ADB命令速查:
| 命令 | 用途 |
|---|---|
adb devices |
列出已连接的设备 |
adb install app.apk |
安装应用 |
adb uninstall package.name |
卸载应用 |
adb shell |
进入设备shell |
adb logcat |
查看日志 |
adb push/pull |
文件传输 |
2. Root设备与模拟器:权限是安全测试的入场券
为什么要Root?你想想看,很多安全测试需要读取 /data/data/ 目录下的应用私有数据,没有Root权限,你连看都看不到。说白了,Root就是给你一把万能钥匙。
真机Root方案:
- Magisk: 目前最主流的方案,支持系统less Root,可以隐藏Root状态
- SuperSU: 老牌方案,适合旧版本Android
- KernelSU: 内核级Root,更隐蔽,但支持的机型有限
我曾经用一台旧Pixel手机刷了Magisk,结果刷完发现WiFi打不开了。嗯,这里要注意:刷机前一定要备份原厂镜像,不然哭都来不及。
模拟器方案:
如果你没有真机,或者不想折腾刷机,模拟器是个不错的选择。我个人推荐以下几种:
- Android Studio自带模拟器: 官方出品,支持快照,可以随时回滚状态
- Genymotion: 性能好,自带Root,适合快速测试
- MuMu / 雷电模拟器: 国产模拟器,兼容性好,适合跑普通应用
警告:模拟器虽然方便,但很多恶意应用会检测模拟器环境并隐藏行为。真机测试仍然是不可替代的。
3. Frida环境:动态插桩的瑞士军刀
Frida是什么?说白了,它让你能在应用运行时动态修改代码逻辑。不需要重打包,不需要反编译,直接hook函数,改返回值,看参数。我在做金融类App测试时,经常用Frida绕过SSL Pinning,或者修改加密函数的输入输出。
安装Frida:
# 安装Frida工具(电脑端)
pip install frida-tools
# 下载frida-server(手机端)
# 注意版本必须和电脑端一致
# 从 https://github.com/frida/frida/releases 下载对应架构的版本
# 推送到手机并运行
adb push frida-server-xx.x-android-arm64 /data/local/tmp/
adb shell chmod 755 /data/local/tmp/frida-server-xx.x-android-arm64
adb shell /data/local/tmp/frida-server-xx.x-android-arm64 &
验证安装:
# 电脑端运行
frida-ps -U
# 如果看到进程列表,说明环境搭建成功
我记得有一次,frida-server版本和电脑端版本不一致,结果一直报 Failed to spawn 错误。折腾了半天才发现是版本号差了一个小版本。所以,版本匹配是铁律。
避坑指南:我曾经在Android 12上遇到frida-server无法启动的问题。解决方案是使用最新版Frida,或者用 --no-pause 参数启动。
4. Burp Suite代理设置:流量拦截的标配
Burp Suite是Web安全测试的标配,在移动端同样适用。你需要做的就是把手机的流量导向Burp,然后Burp就能看到所有的HTTP/HTTPS请求和响应。
设置步骤:
- 打开Burp Suite,进入 Proxy → Options,添加一个监听端口(比如8080)
- 勾选「Support invisible proxying」以支持非浏览器流量
- 手机连接和电脑同一个WiFi
- 手机WiFi设置中,修改代理为「手动」,填入电脑IP和Burp端口
- 用手机浏览器访问
http://burp,下载并安装CA证书
安装CA证书到系统信任区(需要Root):
# 将Burp导出的cacert.der转换为pem格式
openssl x509 -inform DER -in cacert.der -out cacert.pem
# 计算证书hash
subject_hash=$(openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -1)
# 重命名并推送到系统证书目录
cp cacert.pem $subject_hash.0
adb push $subject_hash.0 /system/etc/security/cacerts/
adb shell chmod 644 /system/etc/security/cacerts/$subject_hash.0
adb reboot
注意:Android 7.0以上,系统只信任系统级CA证书。如果你没有Root,或者不想Root,可以用VirtualXposed + JustTrustMe模块来绕过SSL Pinning,但那是另一个话题了。
知识体系总览
下面这张图把整个测试环境搭建的脉络梳理清楚了。你可以把它当作一张地图,随时回来对照。
环境验证清单
搭建完成后,我建议你按这个清单逐项验证,确保每个环节都正常工作:
- ADB:
adb devices能列出设备,状态为device - Root: 在shell中执行
su能切换到root用户 - Frida:
frida-ps -U能列出手机进程 - Burp: 手机浏览器访问
http://burp能下载证书,且HTTPS流量能在Burp中看到
个人经验:我一般会先跑一个简单的测试——用Frida hook一个系统函数,比如 java.lang.System.currentTimeMillis(),看看返回值能不能被篡改。如果能,说明环境基本没问题。
环境搭建这块,说白了就是「工欲善其事,必先利其器」。花点时间把基础打牢,后面做测试的时候会顺畅很多。嗯,今天就先到这里,剩下的我们后面再聊。