EC-001: Ghidra session — Scooby.exe analysis checklist

Paired WP: WP-001 Purpose: Step-by-step checklist for executing WP-001 without scope sprawl into general game-logic disassembly.

The Ghidra session has a habit of sprawling — once the binary is open, every interesting function is tempting. This checklist exists to keep the session scoped to the WP-001 goal: characterize the toolchain, map the runtime surface, and trace the TGIFILE.ART decode function. Anything else is logged for a future WP and not pursued in this session.


Pre-flight

Step 1 — Rich Header / toolchain check (time-box: 15 min)

Outcome of this step: Compiler family and version are known. Skip to Step 4 if the binary turns out to be packed (Ghidra on a packed binary is wasted time).

Step 2 — Ghidra project setup (time-box: 30 min, mostly waiting)

Step 3 — Imports table review (time-box: 30 min)

Outcome of this step: A one-page architectural map of the runtime surface. This is high-value Ghidra output even if Steps 4–5 fail.

Step 4 — File-I/O call site labeling (time-box: 1 hour)

Outcome of this step: Loader functions are labeled in Ghidra and recorded. This is the foundation for both WP-002 (decode) and any future Phase 4 puzzle disassembly.

Step 5 — TGIFILE.ART decode trace (time-box: 2 hours; HARD STOP at 4 hours total elapsed)

Hard stop: at 4 hours total elapsed in this session. If the decode function isn’t isolated by then, stop, write up “decode is in this region but not isolated” in scooby-exe.md, and switch to WP-002 with probe_art.py blind-decoding. Don’t sink another day; the binary path can resume in a follow-up session once probe_art.py results give hints about what to look for.

Definition of done

Out-of-scope captures

Things you will be tempted to do during the session that are not WP-001’s scope. Note them for future WPs and move on:

Record each as a one-line “follow-up” at the bottom of scooby-exe.md so they don’t get lost.