Skip to content
All modules
CoreModule 11 of 15120 minutes

Reverse engineering

Get from an unknown executable to the one function that decides whether your input is right, and recognise which of four shapes the check takes.

By the end you can

  • Establish format, architecture and whether a binary is stripped, and say what each implies
  • Use strings and cross-references to find the check function without reading from main
  • Classify a flag check as direct comparison, transform-then-compare, hash-then-compare, or a constraint system
  • Invert a transform-then-compare check using the constants already in the binary
  • Say when a decompiler helps and when its output is a reconstruction to be distrusted

1. Read

2. Use the tools

In the order they come up while solving. Each opens the workspace tab that runs it.

3. Try one now

Generated in your browser and checked in your browser. No account, nothing to download, and a fresh one whenever you want another.

4. Practise on the real thing

Real picoCTF challenges that use these techniques, easiest first. 49 match in total - see the full index.

Checkpoint

Given a stripped 64-bit binary that transforms input before comparing it, name the transform, invert it, and produce the flag without running the binary.

Teaching note

Students start at main and read forward, which is the slowest possible route. Make the first exercise strings-plus-cross-references only, with the disassembler closed - once they have found a check function that way they rarely go back to reading linearly.