Hunter 反调试 & Unidbg 检测 - 进程被调试或模拟执行
这项在查什么
反调试(Anti-Debug)和 Unidbg 是两种不同的技术,但都和「进程有没有被外部力量干预」相关,Hunter 把它们放在同一项里检测:
反调试检测
反调试是 Android 安全应用常用的手段——应用在运行时检测自己有没有被调试器附加(IDA、gdb 等),如果发现就退出或降低功能。Hunter 的反调试检测反其道而行之——它检测的是:当前进程有没有处于被调试状态。
检测方法包括:
- 读取
/proc/self/status里的TracerPid字段(非零表示有调试器附加) - 检测
ptrace系统调用的状态 - 检查
debuggerd是否在运行
Unidbg 检测
Unidbg 是一款让 Android SO 文件在 PC 上模拟执行的工具,常用于逆向分析——把目标 SO 拉到 PC 上跑,不需要真机。Hunter 检测的是:当前环境是不是在 Unidbg 的模拟执行环境里。
谁会被触发
| 场景 | 触发概率 | 说明 |
|---|---|---|
| 用 IDA / gdb 正在调试 | 反调试必触发 | 调试器附加了进程 |
| 用 Unidbg 模拟执行 | Unidbg 必触发 | 在模拟环境里跑 |
| 某些游戏反作弊框架内部用了反调试 | 可能触发 | 框架的反调试会在进程里留下痕迹 |
| 完全没碰过调试工具 | 正常不触发 | 反调试报红要认真查 |
反调试报红但你没在调试怎么办
这种情况大概率是以下几种:
- 某款应用自带的反调试机制在运行:部分银行、游戏、加密钱包应用会常驻反调试代码
- Frida / LSPosed 等框架的注入触发了反调试信号:框架的内存修改会被反调试逻辑误判
- 系统自带的调试权限状态残留:部分 ROM 解锁开发者选项后会留下调试状态属性
Hunter 详情页会给出具体的信号来源(TracerPid 值、检测到的进程名等),顺着路径去排查。
Unidbg 报红在真机上几乎不会出现
因为 Unidbg 是 PC 工具,真机上正常不会触发。如果你在真机上看到 Unidbg 报红,大概率是 Hunter 的误判(某些 ROM 的特定属性值和 Unidbg 环境巧合),先按误报处理。
和其他检测项的关系
反调试检测和 Frida & IDA 检测互相印证:
- 反调试报红 + Frida 报红 → 几乎可以确认有调试环境在运行
- 反调试报红但 Frida 不报 → 可能是框架注入或应用自带反调试