16f3452990
The fifa17 hook path installed no connection redirect (only a module-map dump), so FIFA17 relied entirely on Linux iptables DNAT / hosts (and had no Windows equivalent). Add an in-process, config-driven redirect for the fifa17 build: - openfut-common gains ResolvedServer::redirect_for_ea_port(): the single shared decision (EA source-port signature -> configured OpenFUT host+port, network byte order), reused by the hook so it and openfut.cfg agree by construction. Covers 443->https, 10041/42230->blaze_redirector, 42127->blaze_main. - connect_hook: redirect_if_ea now dispatches to a config-driven rewrite when armed (rewrites to the CONFIGURED, possibly remote, server -- not hardcoded 127.0.0.1), matching by EA source port so a hardcoded EA IP (159.153.51.20 redirector) and a DNS-resolved one both land on the server. Legacy loopback path retained only for the not-yet-retired FIFA23 build. - fifa17::install() reads openfut.cfg next to FIFA17.exe via openfut-common and installs connect + WSAConnect (IAT) + ConnectEx (shared redirect). Fail-safe: missing/invalid config installs NO redirect (traffic untouched), never a corrupt sockaddr. Tests: openfut-common redirect map/sockaddr/endian/remote-host/unknown-port. Cross-builds x86_64-pc-windows-gnu --features fifa17; clippy -D warnings clean. No Linux fallback removed (migration gate).
51 lines
1.9 KiB
TOML
51 lines
1.9 KiB
TOML
# Standalone workspace root: this Windows-only version.dll proxy is deliberately
|
|
# NOT a member of the OpenFUT workspace (see that root's `exclude`) so its own
|
|
# [profile.release] below actually applies. An empty [workspace] table stops Cargo
|
|
# from walking up and re-attaching this crate to the parent workspace.
|
|
[workspace]
|
|
|
|
[package]
|
|
name = "openfut-hook"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
[lib]
|
|
crate-type = ["cdylib"]
|
|
|
|
[features]
|
|
# Build with `--features capture_baseline` to DISABLE the LSX 3216→3217 redirect,
|
|
# so FIFA's LSX goes to anadius's in-process server (for capturing anadius's real
|
|
# responses). Default build keeps the redirect (LSX → our bridge).
|
|
capture_baseline = []
|
|
# Build with `--features probe` to install passive logging detours on FIFA's
|
|
# in-process online-flow functions (GoOnline, GetInternetConnectedState, event
|
|
# deserializers). Writes PROBE lines to C:\openfut_hook.log for RE. See probe.rs.
|
|
probe = []
|
|
# Build with `--features fifa17` for the FIFA 17 injection path. DllMain runs ONLY
|
|
# the minimal FIFA-17-safe logic in fifa17.rs (prove injection, dump module map,
|
|
# patch DirtySDK/ProtoSSL cert-verify) and skips ALL the FIFA-23-specific hooking.
|
|
fifa17 = []
|
|
|
|
[dependencies]
|
|
windows-sys = { version = "0.59", features = [
|
|
"Win32_Foundation",
|
|
"Win32_System_LibraryLoader",
|
|
"Win32_System_Memory",
|
|
"Win32_System_SystemServices",
|
|
"Win32_Networking_WinSock",
|
|
"Win32_Security_Cryptography",
|
|
"Win32_System_Threading",
|
|
"Win32_System_Diagnostics_ToolHelp",
|
|
"Win32_System_Diagnostics_Debug",
|
|
"Win32_System_Kernel",
|
|
] }
|
|
# Single source of truth for the OpenFUT redirect config (openfut.cfg schema,
|
|
# EA-port -> OpenFUT-port map, WinSock byte-order helpers). Shared with the
|
|
# launcher so the hook and openfut.cfg agree by construction.
|
|
openfut-common = { path = "../openfut-common" }
|
|
|
|
[profile.release]
|
|
opt-level = "s"
|
|
strip = true
|
|
panic = "abort"
|