Visual FoxPro 9 decompiler.

Compiled VFP9 binaries in. Functionally equivalent, rebuildable projects out.

10,514 / 10,514
sections lifted, development corpus
94.9%
sections lifted, held-out repos
Offline
for pure decompilation

Built because I needed it.

FoxLift started as a personal need and a weekend project. The available tools did not fit a modern CLI and CI workflow, so I started building one.

Roughly four billion model tokens have gone into format research, oracle probes, corpus sweeps, failed hypotheses, code, and review.

The standard is simple: recovered projects must rebuild and behave like the compiled input. Readable guesses are not enough.

FoxLift is created and maintained by qdis.

What it does.

FoxLift follows a measured path from binary containers back to buildable VFP projects.

  1. 01

    Read

    Find modules, forms, classes, reports, menus, and resources.

  2. 02

    Lift

    Decode measured bytecode, symbols, expressions, and control flow.

  3. 03

    Write

    Emit functionally equivalent VFP source and project artifacts.

  4. 04

    Verify

    Rebuild in VFP9 and compare canonical bytecode.

Round-trip, with receipts.

The repo ships a small authored demo project. Compile it on VFP9, decompile it with the CLI, recompile the output: statement frames and symbol tables come back byte-identical. Exit codes, hashes, and per-section verdicts are committed alongside it.

On the development corpus — one vendor's estate of real forms and class libraries — 10,514 of 10,514 method sections lift, none blocked, none silently dropped. On repositories never used to infer schemas, 95.1% of validation sections and 94.9% of held-out sections lift. Of the 286 sections whose emission changed in the latest round, 215 recompile byte-identical against the original bytecode on a real VFP9.

Some things provably cannot come back: comments are never compiled, DECLARE parameter names are discarded, WAIT WINDOW clause order is canonicalised by the compiler, and some identifiers are blanked by the compiler itself. FoxLift proves what is unrecoverable and never invents it.

See the demo receipts

How we built it.

A loop of overseers and a fleet of experimenters, with a real compiler as the referee.

Fleets of GLM-5.3-flash workers ran the experiments: each got one narrow task — one bytecode family, one parser region, one test file — in an isolated worktree, and stopped after one verified commit. Claude Code and Codex ran the oversight loop: plan a wave, review every lane, integrate serially, re-run the gates, re-rank what blocks next, dispatch the next wave.

No finding survived on model consensus. Every hypothesis was settled the same way: compile an authored probe on a real VFP9 and compare the bytecode.

22–28 Aug

Thanks, OpenRouter and GLM-5.3-flash.

Most of the experimental legwork ran on z.ai’sGLM-5.3-flash — available free through OpenRouter as the stealth model “Ox Alpha” from August 22 to 28. That made many long reverse-engineering loops possible.