The Game That Lies: Trust the ROM, Not the Screen
- ▣ Sep 2026
- ◈ Reverse Engineering 2 · The game that lies
- ◷ 4 min read
- ⚑ Team Megnetar
Overview
The challenge provided a .gb Game Boy ROM. Its description warned that the game logic works but the emulator screen cannot be trusted — a hint to stop playing and start reading the binary.
Challenge brief
The game logic works; the display lies. Find the truth.
Analysis
Running the ROM confirmed the display was unreliable, so the analysis moved to static inspection. Listing strings with their offsets surfaced a region of bytes that did not decode as meaningful ASCII — a strong sign of encoding.
1file the_game_that_lies.gb2strings -a -t x the_game_that_lies.gbSolution
Trying single-byte XOR keys against the suspicious region, 0x55 produced readable text in the flag format.
1data = open("the_game_that_lies.gb", "rb").read()[start:end]2print(bytes(b ^ 0x55 for b in data))Flag
Redacted. Format: Bsides_Mumbai{…}.
Lessons learned
When the runtime is designed to mislead, go to the artefact. The ROM always contains the truth; the emulator only shows one interpretation of it.

