
This is a solid reference for anyone doing malware analysis, CTF challenges, or reverse engineering work where you hit anti-debugging roadblocks. It covers the usual suspects like IsDebuggerPresent(), PEB checks, RDTSC timing detection, and ptrace self-tracing on Linux, then gives you concrete bypass strategies for each. The Python scanner for timing checks and the GDB command sequences are immediately useful. What I like is that it doesn't just list techniques but shows you exactly where to patch in x64dbg or what LD_PRELOAD hooks to write. The legal disclaimer upfront is smart given how these techniques could be misused outside legitimate security work.
$ npx -y skills add wshobson/agents --skill anti-reversing-techniques --agent claude-codeInstalls into .claude/skills of the current project.
AUTHORIZED USE ONLY: This skill contains dual-use security techniques. Before proceeding with any bypass or analysis:
- Verify authorization: Confirm you have explicit written permission from the software owner, or are operating within a legitimate security context (CTF, authorized pentest, malware analysis, security research)
- Document scope: Ensure your activities fall within the defined scope of your authorization
- Legal compliance: Understand that unauthorized bypassing of software protection may violate laws (CFAA, DMCA anti-circumvention, etc.)
Legitimate use cases: Malware analysis, authorized penetration testing, CTF competitions, academic security research, analyzing software you own/have rights to
Understanding protection mechanisms encountered during authorized software analysis, security research, and malware analysis. This knowledge helps analysts bypass protections to complete legitimate analysis tasks.
For advanced techniques, see references/advanced-techniques.md
What you provide:
What this skill produces:
Detailed pattern documentation lives in references/details.md. Read that file when the navigation tier above is insufficient.
Detection technique works on x86 but not ARM
RDTSC and CPUID are x86-only. On ARM, use MRS x0, PMCCNTR_EL0 (requires kernel PMU access) or clock_gettime(CLOCK_MONOTONIC). PEB/TEB do not exist on ARM — replace with /proc/self/status (Linux) or task_info (macOS). Rebuild detection logic with platform-specific APIs.
False positive on legitimate debugger or analysis tool
Timing checks fire when Process Monitor or AV hooks inflate syscall latency. Calibrate the threshold at startup: measure the guarded path 3 times and use mean + 3*stddev. For ptrace checks, verify the TracerPid comm name via /proc/<pid>/comm before exiting — it may be an unrelated monitoring tool, not a debugger.
Bypass patch causes crash instead of continuing execution
Before NOPing a conditional jump, trace the "detected" branch fully. If it initializes or frees heap state needed later, patching the jump skips that setup and corrupts state. Instead, patch the comparison operand to the expected "clean" value, or use x64dbg's "Set condition to always false" on the breakpoint rather than modifying bytes.
binary-analysis-patterns — static and dynamic analysis workflows for ELF/PE/Mach-Omemory-forensics — process memory acquisition, artifact extraction, and live analysisprotocol-reverse-engineering — decoding custom binary protocols and encrypted network trafficSponsors