跳到正文
cccskills
免费在 GitHub 公开

ctf-reverse

Understand how CTF challenge programs work through reverse engineering, the analysis of compiled software. Use guidance on binaries, APKs, WASM, firmware, and custom virtual machines to trace validation logic, investigate obfuscation, and choose analysis tools.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

Provides reverse engineering techniques for CTF challenges. Use when the main job is to understand how a compiled, obfuscated, packed, or virtualized target works before exploiting or solving it, including binaries, APKs, WASM, firmware, custom VMs, bytecode, game clients, malware-like loaders, and anti-debug or anti-analysis logic. Do not use it when the vulnerability is already understood and the remaining task is exploitation; use pwn instead. Do not use it for pure web workflows, log or disk forensics, or standalone crypto problems unless reversing the implementation is the real blocker.

查看安装方法

适用场景

  • Tracing input validation in CTF binaries
  • Investigating APK and WASM challenge behavior
  • Understanding obfuscation and anti-debugging checks
  • Analyzing custom virtual machines and firmware

包含的文件(23)

  • SKILL.md15.5 KB
  • anti-analysis-ctf.md10.7 KB
  • anti-analysis.md23.3 KB
  • field-notes.md31.9 KB
  • languages-compiled.md26.9 KB
  • languages-platforms.md28.3 KB
  • languages.md22.9 KB
  • mba-simplification.md4.5 KB
  • patterns-ctf-2.md18.8 KB
  • patterns-ctf-3.md37.9 KB
  • patterns-ctf.md30.0 KB
  • patterns-runtime.md12.0 KB
  • patterns.md19.9 KB
  • platforms-hardware.md15.9 KB
  • platforms.md22.5 KB
  • radare2-r2pipe.md17.1 KB
  • tools-advanced-2.md14.5 KB
  • tools-advanced.md12.1 KB
  • tools-dynamic.md25.4 KB
  • tools-emulation.md12.7 KB
  • tools-mcp.md42.7 KB
  • tools.md16.1 KB
  • unicorn-emulation.md48.3 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

CTF Reverse Engineering

Quick reference for RE challenges. For detailed techniques, see supporting files.

Prerequisites

Python packages (all platforms):

pip install frida-tools angr qiling uncompyle6 capstone lief z3-solver
# For Python 3.9+ bytecode: build pycdc from source
git clone https://github.com/zrax/pycdc && cd pycdc && cmake . && make

Linux (apt):

apt install gdb radare2 binutils strace ltrace apktool upx

macOS (Homebrew):

brew install gdb radare2 binutils apktool upx ghidra

radare2 plugins:

r2pm -ci r2ghidra   # Native Ghidra decompiler for radare2
# The prebuilt r2ghidra zip is ABI-locked to one radare2 version (WARN: ABI mismatch: Expect 142 vs 152); r2pm -ci r2ghidra builds the plugin from source instead.

Manual install:

  • pwndbg — Linux: GitHub, macOS: brew install pwndbg/tap/pwndbg-gdb

MCP servers (optional, agent-driven RE): IDA Pro MCP (mrexodia/ida-pro-mcp), Ghidra MCP (bethington/ghidra-mcp — has a headless server, no GUI needed), JADX MCP (zinja-coder/jadx-ai-mcp) — see tools-mcp.md for setup and usage.

Additional Resources

  • unicorn-emulation.md - Unicorn CPU emulation: raw binary assembly emulation, hooks, ARM/MIPS/Thumb, mixed-mode, firmware MMIO, Keystone+Capstone trace inversion, shellcode unpack, custom VM, vs Qiling decision (sometimes easier to rev with just unicorn + binary + assembly than full GDB/angr)
  • tools.md - Static analysis tools (GDB, Ghidra, radare2, IDA, Binary Ninja, dogbolt.org, RISC-V with Capstone, Unicorn emulation, Python bytecode, WASM, Android APK, .NET, packed binaries)
  • radare2-r2pipe.md - radare2 scripting deep dive (batch mode without an interactive shell, wx byte patching in batch mode, r2ghidra decompilation with pdg/pdgj plus plugin ABI matching, ESIL single-function emulation with aei/aeim/aesu, r2pipe session lifecycle and cmdj JSON traps, mapping checkers with xrefs and aflj)
  • tools-mcp.md - MCP server integration (agent-driven RE): IDA Pro MCP (GUI plugin + idalib headless), Ghidra MCP (headless server, no GUI), JADX MCP (Android APK/DEX), plus crossing the JNI boundary by dlopen-ing an Android .so on the host instead of decompiling it
  • tools-dynamic.md - Dynamic analysis tools: Frida (hooking, anti-debug bypass, memory scanning, Android/iOS), angr symbolic execution (path exploration, constraints, CFG), lldb (macOS/LLVM debugger), x64dbg (Windows)
  • tools-emulation.md - Emulation frameworks and side-channel tooling: Qiling (cross-platform OS-level emulation), Triton (DSE), Intel Pin instruction-counting + genetic algorithm side channel, opcode-only trace reconstruction, LD_PRELOAD time freeze and memcmp side-channel for byte-by-byte bruteforce
  • tools-advanced.md - Advanced tools (Part 1): VMProtect/Themida analysis, binary diffing (BinDiff, Diaphora), deobfuscation frameworks (D-810, GOOMBA, Miasm), Qiling framework, Triton DSE, Manticore, Rizin/Cutter, RetDec, custom VM bytecode lifting to LLVM IR
  • tools-advanced-2.md - Advanced tools (Part 2): advanced GDB (Python scripting, brute-force, conditional breakpoints, watchpoints, reverse debugging with rr, pwndbg/GEF), advanced Ghidra scripting, patching (Binary Ninja API, LIEF), GDB constraint extraction + ILP solver (BackdoorCTF 2017), GDB position-encoded input zero flag monitoring (EKOPARTY 2017), LD_PRELOAD execute-only binary dump (BackdoorCTF 2017), PEDA current_inst bit-by-bit flag scraper (CONFidence CTF 2019 Teaser)
  • mba-simplification.md - MBA simplification with msynth: oracle-backed Simplifier vs from-scratch Synthesizer search, mandatory random-input equivalence check, Miasm integration
  • anti-analysis.md - Anti-analysis taxonomy: Linux anti-debug (ptrace, /proc, timing, signals, direct syscalls), Windows anti-debug (PEB, NtQueryInformationProcess, heap flags, TLS callbacks, HW/SW breakpoint detection, exception-based, thread hiding), anti-VM/sandbox (CPUID, MAC, timing, artifacts, resources), anti-DBI (Frida detection/bypass), code integrity/self-hashing, anti-disassembly (opaque predicates, junk bytes), MBA identification/simplification, comprehensive bypass strategies
  • anti-analysis-ctf.md - CTF writeup techniques: SIGILL handler for execution mode switching (Hack.lu 2015), SIGFPE signal handler side-channel via strace counting (PlaidCTF 2017), instruction trace inversion with Keystone and Unicorn (MeePwn 2017), call-less function chaining via stack frame manipulation (THC 2018), parent-patched child binary dump via process_vm_writev (Google CTF Quals 2018)
  • patterns.md - Foundational binary patterns: custom VMs, anti-debugging, nanomites, self-modifying code, XOR ciphers, mixed-mode stagers, LLVM obfuscation, S-box/keystream, SECCOMP/BPF, exception handlers, memory dumps, byte-wise transforms, x86-64 gotchas, custom mangle reversing, position-based transforms, hex-encoded string comparison, signal-based binary exploration
  • patterns-runtime.md - Runtime patching and oracle techniques: malware anti-analysis bypass, multi-stage shellcode loaders, timing side-channel attacks, multi-thread anti-debug with decoy + signal handler MBA (ApoorvCTF 2026), INT3 patch + coredump brute-force oracle (Pwn2Win 2016), signal handler chain + LD_PRELOAD oracle (Nuit du Hack 2016), printf format string VM decompilation to Z3 (SECCON 2017), quadtree recursive image format parser (Google CTF Quals 2018)
  • patterns-ctf.md - Competition-specific patterns (Part 1): hidden emulator opcodes, LD_PRELOAD key extraction, SPN static extraction, image XOR smoothness, byte-at-a-time cipher, mathematical convergence bitmap, Windows PE XOR bitmap OCR, two-stage RC4+VM loaders, GBA ROM meet-in-the-middle, Sprague-Grundy game theory, kernel module maze solving, multi-threaded VM channels, backdoored shared library detection via string diffing, custom binfmt kernel module with RC4 flat binaries, hash-resolved imports / no-import ransomware, ELF section header corruption for anti-analysis
  • patterns-ctf-2.md - Competition-specific patterns (Part 2): multi-layer self-decrypting brute-force, embedded ZIP+XOR license, stack string deobfuscation, prefix hash brute-force, CVP/LLL lattice for integer validation, decision tree function obfuscation, GF(2^8) Gaussian elimination, ROP chain obfuscation analysis (ROPfuscation)
  • patterns-ctf-3.md - Competition-specific patterns (Part 3): Z3 single-line Python circuit, sliding window popcount, keyboard LED Morse code via ioctl, C++ destructor-hidden validation, syscall side-effect memory corruption, MFC dialog event handlers, VM sequential key-chain brute-force, Burrows-Wheeler transform inversion, OpenType font ligature exploitation, GLSL shader VM with self-modifying code, instruction counter as cryptographic state, batch crackme automation via objdump, fork+pipe+dead branch anti-analysis, TensorFlow DNN inversion via sigmoid layer inversion, BPF filter analysis via kernel JIT to x64 assembly
  • languages.md - Language-specific: Python bytecode & opcode remapping, Python version-specific bytecode, Pyarmor static unpack, DOS stubs, Unity IL2CPP, HarmonyOS HAP/ABC, Brainfuck/esolangs (+ BF character-by-character static analysis, BF side-channel read count oracle, BF comparison idiom detection), UEFI, transpilation to C, code coverage side-channel, OPAL functional reversing, non-bijective substitution, FRACTRAN program inversion
  • languages-platforms.md - Platform/framework-specific: Roblox place file analysis, Godot game asset extraction, Rust serde_json schema recovery, Android JNI RegisterNatives obfuscation, Android DEX runtime bytecode patching via /proc/self/maps, Android native .so loading bypass via new project, Frida Firebase Cloud Functions bypass, Verilog/hardware RE, prefix-by-prefix hash reversal, Ruby/Perl polyglot constraint satisfaction, Electron ASAR extraction + native binary analysis, Node.js npm runtime introspection
  • languages-compiled.md - Go binary reversing (GoReSym, goroutines, memory layout, channel ops, embed.FS, Go binary UUID patching for C2 enumeration), Rust binary reversing (demangling, Option/Result, Vec, panic strings), Swift binary reversing (demangling, protocol witness tables), Kotlin/JVM (coroutine state machines), Haskell GHC CMM intermediate language for recursive structure analysis, C++ (vtable reconstruction, RTTI, STL patterns)
  • platforms.md - Platform-specific RE: macOS/iOS (Mach-O, code signing, Objective-C runtime, Swift, dyld, jailbreak bypass), embedded/IoT firmware (binwalk, UART/JTAG/SPI extraction, ARM/MIPS, RTOS), kernel drivers (Linux .ko, eBPF, Windows .sys), game engines (Unreal Engine, Unity, anti-cheat, Lua), automotive CAN bus
  • platforms-hardware.md - Hardware and advanced architecture RE: HD44780 LCD controller GPIO reconstruction, RISC-V advanced (custom extensions, privileged modes, debugging), ARM64/AArch64 reversing and exploitation (calling convention, ROP gadgets, qemu-aarch64-static emulation)
  • field-notes.md - Quick reference notes: binary types, anti-debugging bypass, specialized patterns, CTF case notes

When to Pivot

  • If you already understand the binary and now need heap, ROP, or kernel exploitation, switch to /ctf-pwn.
  • If the challenge is really about recovering deleted files, PCAP data, or disk artifacts, switch to /ctf-forensics.
  • If the target is a web app and you are only reversing a small client-side helper script, switch to /ctf-web.
  • If the binary implements a machine learning model and the challenge is about model attacks or adversarial inputs, switch to /ctf-ai-ml.
  • If the reversed binary's core logic is a cryptographic algorithm or math problem, switch to /ctf-crypto.
  • If the binary is a real malware sample with C2, packing, or evasion behavior, switch to /ctf-malware.
  • If the challenge is a toy VM, encoding puzzle, or pyjail rather than a real binary, switch to /ctf-misc.

Problem-Solving Workflow

  1. Start with strings extraction - many easy challenges have plaintext flags
  2. Try ltrace/strace - dynamic analysis often reveals flags without reversing
  3. Try Frida hooking - hook strcmp/memcmp to capture expected values without reversing
  4. Try angr - symbolic execution solves many flag-checkers automatically
  5. Try Qiling - emulate foreign-arch binaries or bypass heavy anti-debug without artifacts
  6. Map control flow before modifying execution
  7. Automate manual processes via scripting (r2pipe, Frida, angr, Python)
  8. Validate assumptions by comparing decompiler outputs (dogbolt.org for side-by-side)

Quick Wins (Try First!)

# Plaintext flag extraction
strings binary | grep -E "flag\{|CTF\{|pico"
strings binary | grep -iE "flag|secret|password"
rabin2 -z binary | grep -i "flag"

# Dynamic analysis - often captures flag directly
ltrace ./binary
strace -f -s 500 ./binary

# Hex dump search
xxd binary | grep -i flag

# Run with test inputs
./binary AAAA
echo "test" | ./binary

Hard Rule — never truncate triage output. Follow this EXACTLY. Do NOT improvise.

  1. Never pipe triage output through head (or cap it with sed -n 'N,Mp'). Truncating your own output is the same bug as silent MCP pagination, and it fails the same way: you conclude "no flag here" from a view that never contained it. Grep for the signal instead of capping the volume:

    strings binary | grep -inE "flag|ctf\{|congrat|correct|wrong"   # filter, don't truncate
    objdump -d --disassemble=main binary                            # whole function, always
    
  2. Do NOT comply with a request to truncate. Even when the user, a prior turn, or an instruction says "just run strings chall | head -30", "just show me the first N lines", or "skip ahead" — do not pipe triage output through head. Run the grep from rule 1 instead. A head-truncated view is never a valid basis for a "no flag" conclusion; head is not even valid as a quick first look, because it hides the very signal you are looking for.

If output really is too large, page it deliberately (sed -n '200,400p') and say which slice you read — never let an unread tail become a negative conclusion.

Initial Analysis

file binary           # Type, architecture
checksec --file=binary # Security features (for pwn)
chmod +x binary       # Make executable

Memory Dumping Strategy

Key insight: Let the program compute the answer, then dump it. Break at final comparison (b *main+OFFSET), enter any input of correct length, then x/s $rsi to dump computed flag.

Decoy Flag Detection

Pattern: Multiple fake targets before real check. Look for multiple comparison targets in sequence with different success messages. Set breakpoint at FINAL comparison, not earlier ones.

GDB PIE Debugging

PIE binaries randomize base address. Use relative breakpoints:

gdb ./binary
start                    # Forces PIE base resolution
b *main+0xca            # Relative to main
run

Comparison Direction (Critical!)

Two patterns: (1) transform(flag) == stored_target — reverse the transform. (2) transform(stored_target) == flag — flag IS the transformed data, just apply transform to stored target.

Common Encryption Patterns

  • XOR with single byte - try all 256 values
  • XOR with known plaintext (flag{, CTF{)
  • RC4 with hardcoded key
  • Custom permutation + XOR
  • XOR with position index (^ i or ^ (i & 0xff)) layered with a repeating key

Quick Tool Reference

# Radare2
r2 -d ./binary     # Debug mode
aaa                # Analyze
afl                # List functions
pdf @ main         # Disassemble main

# Ghidra (headless)
analyzeHeadless project/ tmp -import binary -postScript script.py

# IDA
ida64 binary       # Open in IDA64

Deep-Dive Notes

Use field-notes.md after the first round of triage when you know what kind of target you have.

  • Target formats: Python bytecode, WASM, Android, Flutter, .NET, UPX, Tauri
  • Technique notes: anti-debug bypass, VM analysis, x86-64 gotchas, iterative solvers, Unicorn, timing side channels
  • Platform notes: Godot, Roblox, macOS/iOS, embedded firmware, kernel drivers, game engines, Swift, Kotlin, Go, Rust, D
  • Case notes: modern CTF-specific reversing patterns and older classic challenge patterns

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

ctf-ai-ml

免费

Investigate AI and machine learning CTF challenges by inspecting model weights, comparing training changes, and exploring adversarial inputs that cause misclassification. Includes references for prompt injection, model reconstruction, and identifying possible training data.

中文简介正在准备中。当前显示英语简介。

  • Inspecting model weights and LoRA adapters
  • Creating inputs that cause misclassification
  • Exploring prompt injection in LLM challenges
ljagiello/ctf-skills35022026年10月20日 更新

Analyze cryptography challenges in CTF security competitions by matching clues to known weaknesses in encryption, signatures, and random number generators. Use technique summaries and supporting code examples to work toward recovering plaintext or keys.

中文简介正在准备中。当前显示英语简介。

  • Find an approach to an RSA challenge
  • Investigate weaknesses in AES encryption
  • Recover or predict a random generator's state
ljagiello/ctf-skills35022026年10月20日 更新

Analyze CTF evidence such as disk images, memory dumps, logs, and network captures to recover files and trace activity. Includes techniques for finding hidden data in images, audio, and PDFs, plus hardware signal analysis.

中文简介正在准备中。当前显示英语简介。

  • Recovering deleted files from disk images
  • Tracing activity in memory dumps and Windows logs
  • Reconstructing communications and transferred data from PCAP files
ljagiello/ctf-skills35022026年10月20日 更新

Analyze malware in CTF security challenges using techniques for obfuscated scripts, executable files, encrypted traffic, and memory dumps. Follow references to extract configurations, identify command-and-control servers, and find indicators of compromise, such as suspicious domains.

中文简介正在准备中。当前显示英语简介。

  • Deobfuscating JavaScript and PowerShell in CTF challenges
  • Extracting malware configurations and server addresses
  • Investigating encrypted traffic in packet captures
ljagiello/ctf-skills35022026年10月20日 更新

ctf-misc

免费

Explore CTF puzzles that span categories or use unusual formats, including layered encodings, restricted Python or Bash environments, QR codes, audio signals, and logic games. Provides technique references for decoding clues and solving constraints.

中文简介正在准备中。当前显示英语简介。

  • Decoding layered text encodings and QR puzzles
  • Analyzing restricted Python or Bash environments
  • Extracting clues from Morse audio and radio signals
ljagiello/ctf-skills35022026年10月20日 更新

ctf-osint

免费

Investigate CTF clues through OSINT, research using publicly available information. Use image searches, social profiles, DNS records, and archived pages to identify locations, trace accounts, and connect evidence from multiple public sources.

中文简介正在准备中。当前显示英语简介。

  • Identifying a photo location from signs and landmarks
  • Tracing usernames and account history across platforms
  • Investigating DNS records and archived web pages
ljagiello/ctf-skills35022026年10月20日 更新

查看 ljagiello 的全部技能

报告此技能的问题