#!/usr/bin/env python3 """Fresh verifier-owned ABI/static-state reproduction; refuses overwrite.""" import hashlib import json import pathlib import struct import subprocess ROOT = pathlib.Path("/home/alex/sots-re") SESSION = "run-7d85d45cb2196e07025e5096" OUT = ROOT / "verify/results/research-completion-abi-independent" / SESSION EXE = ROOT / "dumps/sots.exe" SAVE = ROOT / "verify/results/saves/turn3-state.sav" OBJDUMP = pathlib.Path("/usr/bin/objdump") WINDOWS = [ ("observed-alloc-narrow", 0x57E590, 0x57E5E4), ("observed-alloc-wide", 0x57E590, 0x57E5E6), ("player-append-narrow", 0x86C580, 0x86C62E), ("player-append-wide", 0x86C580, 0x86C630), ("player-copy-narrow", 0x7693F0, 0x7694C0), ("player-copy-wide", 0x7693F0, 0x7694C2), ("observed-push-narrow", 0x7B7320, 0x7B739F), ("observed-push-wide", 0x7B7320, 0x7B73A1), ("observed-realloc-narrow", 0x7B34E0, 0x7B35EF), ("observed-realloc-wide", 0x7B34E0, 0x7B35F1), ("string-alloc-narrow", 0x4249A0, 0x424ADA), ("string-alloc-wide", 0x4249A0, 0x424ADC), ("observed-ctor-control", 0x8562A0, 0x85630D), ("observed-copy-control", 0x79A150, 0x79A1D9), ("player-dtor-control", 0x61AE90, 0x61AEFC), ("import-thunks-control", 0x924FAA, 0x924FBC), ("dedup-narrow", 0x825D40, 0x825E65), ("dedup-wide", 0x825D40, 0x825E67), ("string-not-equal", 0x46F8C0, 0x46F8F0), ("string-compare", 0x4236A0, 0x42370D), ("byte-compare", 0x422720, 0x422796), ("player-ctor", 0x84EE30, 0x84EEF4), ] EXPECTED = { "observed-alloc": "c2 04 00", "player-append": "c2 04 00", "player-copy": "c2 04 00", "observed-push": "c2 04 00", "observed-realloc": "c2 04 00", "string-alloc": "c2 08 00", "dedup": "c2 08 00", } DIRECT = { "observed-alloc": (0x57E5E3, "c20400"), "player-append": (0x86C62D, "c20400"), "player-copy": (0x7694BF, "c20400"), "observed-push": (0x7B739E, "c20400"), "observed-realloc": (0x7B35EE, "c20400"), "string-alloc": (0x424AD9, "c20800"), "dedup": (0x825E64, "c20800"), "plain-ret": (0x85630C, "c3"), "constructor-defaults": (0xAF0DC8, "ffff7f7fffff7f7fffff7f7f"), } def sha(data): return hashlib.sha256(data).hexdigest() def rows(data): return [x.rstrip() for x in data.splitlines() if b":" in x and x.lstrip()[:1].isdigit()] def pe_reader(data): pe = struct.unpack_from(" 0 and x["stderr"]["bytes"] == 0 for x in records + tool_runs), "all_boundary_predictions_hold": all(x["pass"] for x in comparisons), "direct_pe_challenge_pass": all(x["pass"] for x in direct), "independent_state_pass": state["pass"]} (OUT / "manifest.json").write_text(json.dumps(manifest, indent=2) + "\n") if not all((manifest["all_processes_positive"], manifest["all_boundary_predictions_hold"], manifest["direct_pe_challenge_pass"], manifest["independent_state_pass"])): raise SystemExit(1)