debunked claims · anti-regression

Phantom List

Across 14 rounds, many early-round hypotheses turned out wrong. Each entry below records the original claim, the round that debunked it, and the current truth. Future investigators should avoid re-investigating these.

Phantom #1
5 hook trampolines in .text
R5
claimed by Agent W R3

OLLVM obfuscation salts, not hooks

Phantom #2
Foreign call to 0x7FF8B2858213
R5
claimed by Agent W R3

IDA mis-resolution of indirect call

Phantom #3
Per-thread TLS at MSVC _tls_index
R5
claimed by Agent Z R3

Real slot is gs:[0x20] FiberData

Phantom #4
VM dispatch table at 0x7FF927D3A044
R5
claimed by Agent H R3

Runtime-reconstructed PE .pdata singleton

Phantom #5
FNV-1a IAT resolver at 0x7FF926ABF3E0
R5
claimed by Agent F R4

CFF dispatcher of one obfuscated function

Phantom #6
Hyper-V / VMCALL anti-debug probe
R5
claimed by Agent 3 R2

Byte-coincidence; no real vmcall

Phantom #7
SHA-256 over .text
R5
claimed by Agent B R2

No polynomial or round-constant table present

Phantom #8
Bytecode VM with interpreter
R5 Agent A4
claimed by R3/R4 multiple

OLLVM/Tigress CFF. .eid holds import metadata, not bytecode

Phantom #9
Aegis/Warden slots dispatched in-DLL via PEB.Ldr decoder
R5 Agent A2
claimed by R1-R4 multiple

Host-side tokens, no in-DLL reader

Phantom #10
Resolved-pointer table = 32-byte rows
R6
claimed by R4 + v1 doc

Variable-length records

Phantom #11
Resolved-pointer table = 16-byte rows
R6
claimed by R5

DLL-marker + function-entry variable-length records

Phantom #12
IAT resolver location unknown
R5 Agent A3
claimed by v1 open question

At RVA 0x1F2AF0 (IDA 0x7FF926042AF0)

Phantom #13
Caller-provenance check in d2r_loader.dll
R6 Agent I1 + R13 I27/I35
claimed by Plan hypothesis

NOT in this DLL; consumers of stack-walk APIs are MSVC CRT only

Phantom #14
CFG/XFG enforcement causes hijack failure
R6 CFG probe
claimed by Post-R6 hypothesis

GuardFlags=0x100 only; function table empty; dispatch stub no-op

Phantom #15
Scans loaded modules for bot DLLs
R6 Agent I5 + R13 I28
claimed by

Module enum exists but passive — no kill path from walker

Phantom #16
sub @ RVA 0x693480 is the IAT resolver kernel
R7 Agent I8
claimed by R6

It is an MD5 driver

Phantom #17
RVA 0xEE4F98 is a panic vtable slot
R7 Agent I9
claimed by R6 Agent I3

.pdata RUNTIME_FUNCTION entry; patching does nothing

Phantom #18
Each megadispatcher call passes distinct r8 op-tag
R7 Agent I7
claimed by R6

r8=rsi (state ptr); real op is (rcx,rdx,r9) triplet; dispatch keyed on global cookie

Phantom #19
Trampoline emitter has a static template in .rdata
R8 Agent I14
claimed by Implicit assumption

No static template; OLLVM-obfuscated per-byte arithmetic

Phantom #20
IAT resolver has 23 direct callees
R8 Agent I13
claimed by R6-R7 from IDA func_profile

Only 5 real direct callees; 18 were CFG artifacts

Phantom #21
Megacaller thunk is a VEH handler
R8 Agent I12
claimed by R7 Agent I7

Fiber-state CFF dispatcher; real VEH is at RVA 0xE9FDA0

Phantom #22
thunk +0x40 is AddVectoredExceptionHandler
R8 Agent I12
claimed by R7

Lock-acquire primitive

Phantom #23
Stack-walk APIs prove caller-provenance (R12 reversal)
R13 Agent I27
claimed by R12

Stack-walk APIs in IAT, but consumers are CRT only, not Eidolon

Phantom #24
sub @ RVA 0x1FCE40 is the trampoline emitter
R13 Agent I23
claimed by R11 Agent I19

Only 5 opcode-byte immediates; returns bool; BTel HTTP helper

Phantom #25
Per-API RNG counters at dword_7FF927C93348 / CA4168
R13 Agent I25
claimed by R11

Build-time CFF seed constants, ZERO writers

Phantom #26
Rolling checksum verifies IAT integrity
R13 Agent I30
claimed by R11 Agent I21

CFF opaque predicate (pseudo-random loop bound); NOT an integrity check

Phantom #27
Runtime IID has 248 APIs
R12 Agent I26
claimed by R9 Agent I11

39 DLL canaries (one API per DLL decoy); real 248 is the synthetic IAT thunk table

Phantom #28
Arena uses CRT operator new[]
R13 Agent I31
claimed by R11 Agent I24

VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE)

Phantom #29
sub @ RVA 0x8B9510 is the writer of the thunk table
R13 Agent I36
claimed by R10

It is a consumer; FF 15 is indirect call, not a write. Real writer is in .eid

Phantom #30
Arms DRx on game threads
R13 Agent I33
claimed by Hypothesis

SetThreadContext uses CONTEXT_FULL (0x10000B), not CONTEXT_DEBUG_REGISTERS (0x10010)

Phantom #31
IDD has a layer-2 XOR obfuscation
R9 Agent I11
claimed by R8

No layer 2. Fingerprint constants are plaintext integrity tags

Phantom #32
Resolver is per-API
R12 I24
claimed by R11 I20

Resolver is per-DLL; 39 DLLs, 0x48 stride per descriptor

Phantom #33
Registers ProcessInstrumentationCallback
R13 Agent I29
claimed by

Not set; does not use Win11 instrumentation callback

Phantom #34
Panic stub has static callers
R13 Agents I15/I35/I36
claimed by

Zero static callers across three independent scans

Phantom #35
sub_7FF92728E960 (RVA 0x143E960) is "VEH sibling dispatcher B"
R15 Agent 1
claimed by R13 I35

btel::ResponseProcessor constructor (RTTI + vtable-write confirmed)

Phantom #36
Fiber entry at RVA 0x11E8110 validates caller provenance
R15 Agent 2
claimed by R13 I35

Pure CFF megacaller tail-call with triple (0x4F, 0x38, 0x5E); no stack walk, no gs: reads, no csum writes

Phantom #37
An external user-space PID is the Warden broker
R15 probe B
claimed by R14 D1

R14 flagged 7 PIDs by a naive PROCESS_VM_READ filter. R15 verified 169 of their Process handles and found 0 targeting D2R; the candidate list was research-machine noise (IDE, browser, Windows services), not brokers. Broker identity remains unknown.

Phantom #38
.eid pages 0–12 are encrypted at runtime
R15 probe A
claimed by R14 D3

Live probe measured page-0 entropy of 3.98 — effectively plaintext. The region holds the 44-record stub table, not encrypted code

Phantom #39
Eidolon runtime-hashes .text to detect patches
R15 Agent 5
claimed by Assumed

No WinVerifyTrust callsite (strings are a red herring), no periodic hash, no AV handler, no self-hash. Defense is CFF obfuscation + state kill paths, not cryptographic self-verification

Lesson: multi-agent reverse engineering is noisy. Parallel investigations surface contradictions that serial analysis misses. The correction rate across R1-R14 was ~34 phantoms / 53 agent-reports = 65% of agent conclusions were later revised. Keep investigating.