P0 fingerprint: MSVC2010, DX9, LAA already on

This commit is contained in:
lab 2026-09-07 18:27:12 +00:00
parent d95ced62de
commit a80cbbc6de

View file

@ -0,0 +1,35 @@
# P0 — binary fingerprint
Target: `Sword of the Stars.exe` (GOG Complete Collection v1.8.1, build 19833), 7.5 MB,
extracted via innoextract to `/srv/re-lab/sots-game/`.
## PE / toolchain
- **PE32, i386 (32-bit)**, subsystem Windows GUI 5.01, 5 sections, ImageBase `0x00400000`,
SizeOfImage `0x007b3000`, entry `0x00925794`.
- **Compiler: MSVC 2010 (VC++ 10.0)** — MajorLinkerVersion 10; imports `MSVCR100.dll` +
`MSVCP100.dll`. Resolves the earlier VS2003/2005/2008 uncertainty. Implications: **RTTI
present** (C++ class hierarchy recoverable), MSVC-2010 name mangling (Ghidra demangles),
VS2010 Dinkumware STL — expect heavily inlined `std::vector/map/string`.
- COFF characteristics `0x12F` → includes `IMAGE_FILE_LARGE_ADDRESS_AWARE (0x20)`:
**LAA is already enabled in this build.** The 2 GB→4 GB mitigation is baked in; the memory
ceiling only needs allocator work if large-battle crashes still occur. `RELOCS_STRIPPED`
set (so the ASLR flag in DllCharacteristics `0x8140` is effectively inert).
## Imported subsystems (from the import table)
- **Graphics: DirectX 9** — `d3d9.dll` + `d3dx9_42.dll` (D3DX June 2010). Anchor for the
renderer: `Direct3DCreate9` → `CreateDevice` → present loop.
- **Audio:** `DSOUND.dll` (DirectSound). **Video:** `binkw32.dll` (RAD Bink).
- **Net:** `WSOCK32.dll` + `IPHLPAPI.DLL` (multiplayer).
- Std Win32: KERNEL32, USER32, GDI32, ADVAPI32, SHELL32, SHLWAPI, WINMM, ole32.
## Data
- `sots.gob` (1.45 GB) + `sots_local_en.gob` (599 MB) — renamed uncompressed ZIPs (per
community docs); openable directly. Modding is `./Mods/` override.
## Consequences for the plan
- **Battle-load** becomes the primary bug target (LAA already done).
- The RTTI analyzer should hand us the class hierarchy — the fastest path into the object
model (goal #1), to be cross-referenced with the community save-editor structs.
- D3D9 device init is a clean, well-anchored first renderer target.
_Fingerprint captured 2026-09-07 via objdump on CT111._