GPN CTF 2026 Königsberg Delivery Problem writeup — Binary Ninja HLIL, Stack View, Graph View, and jump-table resolution for a 250-state FSM

GPN CTF 2026 — Königsberg Delivery Problem: A Binary Ninja Workflow

Platform GPN CTF 2026 (kitctf) Difficulty Medium-Hard OS Reverse — 250-state FSM, jump tables, Hamiltonian path Tags reading 4,500 lines of straight-line dispatch in Binja HLIL instead of objdump, using Stack View to identify a per-state visit-counter array, extracting jump-table successors via function.basic_blocks[i].outgoing_edges, building a 250-node directed graph from Binja-recovered edges, running Warnsdorff's heuristic DFS to find a Hamiltonian path in ~70 ms Königsberg Delivery Problem is the GPN CTF 2026 reverse challenge that turned a 4,500-line straight-line dispatch routine into a graph-theory problem. The binary cartographer is 140 KB, not stripped, dynamically linked, x86-64 PIE. The interesting function cfg() is 250 logically-identical state blocks ending in indirect jmp rdx jumps over .rodata jump tables. The win condition is “visit every state at least once” — Hamiltonian path on a 250-node directed graph. ...

June 7, 2026 · 9 min · 1901 words · CyberSecurity Elite Team
Educational content for authorized testing only. · Disclaimer · Editorial Policy · Sitemap