SuperAPI AI 工具集

anti-debugging-techniques

测试与质量

查看项目

更新于 10-16 07:22

技能介绍

用途:在逆向受保护的二进制程序时,识别并绕过针对调试器的检测机制。内容覆盖 Linux 与 Windows 平台,并强调用户态与内核态检测的区别及各自的补丁策略。

主要能力:梳理检测手法与对应绕过方式。Linux 侧包括 ptrace(PTRACE_TRACEME) 自附加、读取 /proc/self/status 的 TracerPid、rdtsc/clock_gettime 计时检测、SIGTRAP 信号检测、/proc/self/maps 与 LD_PRELOAD 检测、环境变量检测;Windows 侧包括 IsDebuggerPresent、PEB 的 BeingDebugged 与 NtGlobalFlag、NtQueryInformationProcess、硬件断点检测、INT 2D/INT 3/UD2 异常技巧、TLS 回调、NtSetInformationThread(ThreadHideFromDebugger)、基于 VEH 的检测。

高级手法:自调试(fork + ptrace)、多进程互检、多检查点累积计时检测、Nanomite/INT3 跳转替换。工具方面列出 ScyllaHide、TitanHide、Frida、LD_PRELOAD shim、GDB 脚本、Qiling,并给出按检测类型的绕过选择与优先级。流程上提供静态识别、分类、按序应用绕过、验证完整性的方法论,以及决策树和 CTF/真实保护(VMProtect、Themida、Enigma Protector 等)的对应模式。

必要用法示例:LD_PRELOAD 方式为 gcc -shared -o /tmp/ap.so /tmp/ap.c 后执行 LD_PRELOAD=/tmp/ap.so ./target;GDB 中用 catch syscall ptrace 并 set $rax = 0;Frida 可用 Interceptor.replace 挂钩 ptrace 或 IsDebuggerPresent 返回 0。

限制:资料未提供具体适用版本、平台细节之外的收费或授权信息;绕过效果取决于目标保护实现,需自行验证。