Mad Bomber: original fdopen retry

2026-10-18, one original passive diagnostic after the tested binary _fdopen implementation and callback ownership prerequisite were integrated. This is a follow-up to Mad Bomber 0.2.5 and the binary fdopen contract.

Observed result

The original zlib packed initializer passed its previous missing-symbol boundary:

API event Original call Result
110 GetProcAddress(0x00400000, "_fdopen"), return 0x00c6fcc5 0x07504880
111–121 Further original CRT import lookups through fseek Nonzero
122 GetProcAddress(0x00400000, "rewind"), return 0x00c6fcc5 NULL

The process then reported DLL_PROCESS_ATTACH returned FALSE and exited 1. The caller is the same original zlib lookup loop (RVA 0x12cc5) identified in the earlier diagnostic. This proves the previous _fdopen resolution boundary is cleared and identifies the next unresolved symbol. It does not prove that the original game called _fdopen, used a supported mode, or reached its menu. There was no _fdopen invocation, window, PNG, guest input or retry.

No unpacked replacement, import bypass, mode bypass or fake symbol was used. rewind remains a new implementation/review task; this run did not change it.

Exact run and preservation

Canonical source HEAD: c8399aa73fd0e80feb561abe3f60c6f90ddaaa54. Module SHA-256: aafa600aabbf48b03ba1166ae7bf9c69dc77af499e8e4cb813e60c5bd3b924b1. The retained original route had 140 physical files mounted into C:\MADBOMBER and seven original DLL seeds, with the original EXE and original package hashes. The automatically available shared msvcrt.dll was separately pinned before and after, SHA-256 887eb5ce93edb7192ca3e9220f07f9ca0f94db02af5862ebcbdfcb852db99fd1 (278,581 bytes).

The controller used the existing cooperative CLI with real calendar/ticks, no guest input, no build and no threads. Guest time limit was 10 seconds, controller quit at 15, hard group kill at 25, and log cap 2 MiB. Filtered API trace covered LoadLibraryA, GetProcAddress and _fdopen, with bounded name/mode memory capture. The retained launch JSON contains the exact full argv.

Start: 2026-10-18T22:39:08.031Z; finish: 2026-10-18T22:39:08.189Z. Log: 25,927 bytes. Minimum free disk: 2,321,084,416 bytes. No disk/time/log guard triggered. The child PID was 2590262 and controller PID 2590238; both were independently absent afterward and the child process group had no survivors. All 3,204 physical source pins, the module, 140 original files, original archive and shared CRT matched after the run in both controller and independent checks.

Evidence is under repository-root scratch/runs/20261018-madbomber-fdopen-retry/: original log, launch and identity, all pin manifests, terminal receipt, controller, independent postflight and structured import findings. review.json was written after inspecting them. The app remains unregistered, so no unrelated dashboard candidate/result entry was created. The prepared packet is separately retained under scratch/runs/20261018-madbomber-fdopen-retry-prep/, including pure guard tests, packet hashes, unchanged original launch plan/manifest, and the freshly pinned canonical/shared-CRT identities. The pure checks cover disk boundaries, route tampering, missing grant, unready/tampered CRT pins and bounded trace/time flags.