M2: confirm worker-thread + event-driven gate (architectural wall)
Add a bounded manual stack-scan in the GoOnline detour (FIFA-frame finder). Result: zero FIFA23.exe frames, sp ~2.4KB below stack top => GoOnline runs on an anadius worker thread (queued), not FIFA's thread. Three-way corroboration that the gate is an async "online established" event anadius (offline-only) never pushes; FIFA waits/retries. No handler-response flip can cross it. Documented in connection-gate-findings.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -207,6 +207,30 @@ Next: trace the FIFA-side FUT online-flow (what the game does after `GoOnline`
|
||||
and exactly which event/condition it waits on) — Ghidra on FIFA23.exe (import
|
||||
saved at `C:\openfut\gh-proj`), or RE anadius's LSX event-send path. `TODO/CONFIRM`.
|
||||
|
||||
### M2 deeper finding — worker-thread + event architecture (confirmed)
|
||||
A live call-stack capture from inside the GoOnline detour (manual stack scan,
|
||||
bounded by `GetCurrentThreadStackLimits`) found **zero FIFA23.exe frames** and
|
||||
showed `sp` sitting ~2.4 KB below the thread's stack top. So the handler runs at
|
||||
the top of a short stack — i.e. on an **anadius worker thread** (IOCP/threadpool),
|
||||
not FIFA's calling thread. anadius **queues** the GoOnline command and a worker
|
||||
services it.
|
||||
|
||||
Combined with the retry behaviour, the architecture is now clear and three-way
|
||||
corroborated: **FIFA calls `EbisuSDK::GoOnline` → anadius queues it → returns →
|
||||
FIFA waits for an async "online established" event → anadius (offline-only, no
|
||||
online-event code) never pushes it → timeout/retry.** No handler-response flip
|
||||
can unblock this; the game waits on a *push* anadius never produces.
|
||||
|
||||
**Conclusion:** crossing this gate requires emulating the EA-app online-event
|
||||
sequence (synthesize + inject the online-status event on the worker→game callback
|
||||
/ LSX path, in EbisuSDK's expected format) — a research-grade emulation effort,
|
||||
preceding the Blaze backend. The cheap in-process flips are exhausted.
|
||||
|
||||
Reaching the FIFA-side flow would need either: (a) locate `EbisuSDK::GoOnline` in
|
||||
FIFA23.exe via anadius's detour table, then `callers` to the online-flow; or
|
||||
(b) find anadius's LSX event-send path and reverse the online-event format. Both
|
||||
are deep. `TODO/CONFIRM`.
|
||||
|
||||
### M2 directions (superseded — see above)
|
||||
- Check whether the flags at `+0xCAB1A` / `+0xCAB1B` are settable via anadius
|
||||
config / a hidden option (cheapest flip).
|
||||
|
||||
Reference in New Issue
Block a user