Frida、IDA、反调试术语对照 - 逆向与调试相关的 Hunter 检测词
Frida
Frida 是一款流行的动态插桩框架——它可以在不修改目标二进制的情况下,向正在运行的进程注入 JavaScript 代码,实现 hook 函数、拦截调用、修改返回值等操作。
Frida 由两部分组成:
- Frida Server:运行在目标设备上(Android / iOS / Linux / Windows 都支持),监听端口等待客户端连接
- Frida Client:运行在你的 PC 上,通过 Python / JavaScript 写 hook 脚本,远程连接 Frida Server 执行
Hunter 检测 Frida 的方向包括:Frida Server 进程是否存在、默认端口(27042)是否监听、内存里是否有 Frida 的特征字符串。
IDA Pro
IDA Pro(简称 IDA)是业界最著名的反汇编器/反编译器——可以把 Android 的 SO 文件或 APK 反汇编成可读的汇编代码甚至伪 C 代码。IDA 也支持远程调试——通过 IDA Remote Debugger 连接目标设备的进程,断点执行、单步跟踪。
Hunter 检测 IDA 的方向主要是远程调试端口和调试器附加状态。
ptrace 反调试
ptrace 是 Linux 提供的进程跟踪系统调用——调试器(gdb、IDA、Frida)通过 ptrace 附加到目标进程,实现断点、单步、内存读写等功能。
Android 安全应用常用的反调试技术就是检测 ptrace 的状态:
- 读取
/proc/self/status里的TracerPid字段(非零 = 有调试器附加) - 定期尝试
ptrace(PTRACE_ATTACH, ...),如果 attach 失败说明已经有调试器了
Hunter 的反调试检测反其道而行——它检测的是自己有没有被 ptrace 附加,间接判断设备上是否有调试环境在运行。
Unidbg
Unidbg 是一款让 Android SO(native 库文件)在 PC 上模拟执行的工具。逆向工程师常用它把目标 SO 拉到 PC 上跑,不需要真机就能分析 SO 的逻辑。
Hunter 会检测当前运行环境是不是 Unidbg 模拟环境——这在真机上正常不会触发。
Inline Hook / GOT Hook
两种核心 hook 技术,Hunter 专门检测:
- Inline Hook:直接改写目标函数的机器码开头,插入跳转指令
- GOT Hook:修改 ELF 文件的全局偏移表(GOT)里的函数指针
ELF 文件
ELF(Executable and Linkable Format)是 Android / Linux 上可执行文件和动态库的标准格式——APK 里的 .so 文件就是 ELF 格式。ELF 文件里包含 GOT 表、PLT 表、符号表等关键数据结构,是 hook 技术的主要操作对象。