symbolic-execution-tools

Symbolically execute CTF binaries to recover secrets via angr and Z3 constraints.

5|2|Updated May 16, 2026
One-click install
npx skills add https://github.com/DorianGallo/hack-skills-local --skill symbolic-execution-tools-doriangallo
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: symbolic-execution-tools
Source: https://github.com/DorianGallo/hack-skills-local/tree/main/skills/symbolic-execution-tools
Command: npx skills add https://github.com/DorianGallo/hack-skills-local --skill symbolic-execution-tools-doriangallo

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) and assets (resource) components.

What problem does it solve?

Symbolic execution often turns CTF binaries into unsolved puzzles because you must correctly model inputs, memory state, and failure/success conditions to automatically recover secrets like flags or keys.

Core Features & Use Cases

  • Angr playbook for input modeling and state setup: Use entry/blank/full-init states, symbolic stdin/argv, and memory stores to model the exact way a challenge reads data.
  • Z3 constraint solving patterns: Translate validation logic into solvable constraints (bit-vectors, boolean logic, XOR, modular arithmetic) and extract concrete solutions.
  • Unicorn Engine emulation for speed and unpacking: Emulate specific routines/regions to quickly deobfuscate or analyze code paths with less symbolic overhead.

Use case: Recover a flag from a stripped crackme where success/failure strings appear only after complex checks by combining angr exploration with careful hooking of libc calls and then extracting the symbolic input with solver evaluation.

Quick Start

Ask the AI to produce an angr script that models the challenge’s actual input method (stdin/argv/file), hooks any libc functions that break analysis, and uses find/avoid addresses (or output predicates) to recover the correct flag bytes.

Frequently Asked Questions about symbolic-execution-tools

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I recover a flag from a CTF binary using symbolic execution?

Recover flags by using angr to symbolically execute code paths, modeling stdin, argv, or file inputs, and solving the resulting Z3 constraints to extract the correct flag bytes.

Why does symbolic execution hang on my stripped crackme and how can Unicorn help?

Symbolic execution often hangs on complex routines; using Unicorn Engine emulation speeds up path exploration and deobfuscation by reducing symbolic overhead for specific code regions.

How do I model stdin and argv inputs when setting up angr for a challenge?

Model inputs by using angr's entry, blank, or full-init states to define symbolic stdin, argv, and memory stores, ensuring the exploration accurately reflects the challenge's data reading method.

What is the best way to hook libc functions that break angr binary analysis?

Hook problematic libc functions using SimProcedure replacements to ensure correct state initialization and maintain tractable path exploration during symbolic execution.

Can Z3 constraint solving automatically extract secrets from XOR validation logic?

Yes, Z3 constraint solving translates complex validation logic, including bit-vectors, boolean logic, XOR, and modular arithmetic, into solvable constraints to extract concrete solutions.

How do I find and avoid addresses in angr to target success conditions in a binary?

Use find and avoid addresses, or output predicates, in angr exploration to guide path discovery toward success conditions and bypass failure paths to recover secrets.