CSE 260 honors project repo.
This is basically a small survey plus a few controlled experiments with KLEE and angr. The main write-up is in docs/report.md. The rest of the repo is just the small harnesses, runner scripts, and notes behind that report.
target/- small C programs used in the experimentsscripts/- helper scripts for KLEE and angranalysis/- experiment notes and comparisonsdocs/report.md- final reportdocs/report.pdf- exported report
This is the easiest path on Windows.
- Start Docker Desktop.
- Run
powershell -ExecutionPolicy Bypass -File scripts\run_klee_docker.ps1 - To change the search strategy, add
-Search dfs,-Search bfs, or-Search random-path - To run the larger heuristic harness, add
-Program heuristic_demo -MaxInstructions 400
Outputs go in outputs/klee_*.
- Open the project in a Linux environment with KLEE installed.
- Run
make bitcode - Run
klee --output-dir=outputs/klee_run bitcode/example.bc
- Install dependencies:
sudo apt install -y python3-venv python3-pip build-essential - Create a virtual environment:
python3 -m venv .venv - Activate it:
source .venv/bin/activate - Install angr:
pip install angr - Build the Linux binary:
gcc -o binaries/example_plain target/example_plain.c - Run the example:
python scripts/angr_example.py - Run the security demo:
gcc -no-pie -o binaries/auth_demo target/auth_demo.cthenpython scripts/angr_security_demo.py
angr is meant to run on native Linux binaries in WSL. I am not relying on Windows PE analysis here.
analysis/path_constraints.md- path-condition walkthrough for the simple harnessanalysis/heuristic_comparison.md- bounded DFS/BFS comparisonanalysis/practical_strategies.md- short survey of practical scaling strategiesdocs/report.md- final project report with bibliography