add architecture details and more third-party lib details
This commit is contained in:
parent
39e86f667f
commit
baac905ef2
83 changed files with 17657 additions and 1 deletions
53
docs/ARCHITECTURE.md
Normal file
53
docs/ARCHITECTURE.md
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# Architecture — Rusty Hearts server binaries
|
||||
|
||||
What is known about how the shipped server binaries are built and structured.
|
||||
Each claim is marked **observed**, **inference**, or **unknown** (see AGENTS.md).
|
||||
|
||||
## Implementation language: C++
|
||||
|
||||
All 16 server executables in `binaries/` are written in **C++**, compiled with
|
||||
**MSVC 2010** (Visual C++ 10) for Windows x64.
|
||||
|
||||
| Marker | Why it implies C++ | Where seen |
|
||||
|---|---|---|
|
||||
| MSVC RTTI type descriptors (`.?AV…@@`), including templates | Emitted only for C++ polymorphic classes | All 16 EXEs (161–1,035 each) |
|
||||
| `__CxxFrameHandler3` import | C++ exception-handling runtime | All 16 EXEs |
|
||||
| `MSVCP100.dll` import (`std::` streams/containers) | C++ standard library, VS2010 | All 16 EXEs |
|
||||
| Linker version 10, `MSVCR100.dll` | VS2010 toolchain (matches `vcrun2010` dependency) | Agent (checked) |
|
||||
| vftables, `operator new/delete`, multiple vftables per class | Virtual dispatch, multiple inheritance | Agent (decompiled) |
|
||||
|
||||
Status:
|
||||
- **Observed (decompiled):** `Agent_Release_x64.exe`. See
|
||||
`decomp/Agent_Release_x64/evidence.md` and `cpp/classes.hpp`.
|
||||
- **Observed (markers only):** the other 15 EXEs. The RTTI, C++ EH and MSVCP100
|
||||
checks were run with `strings` and `objdump` on 2026-10-14; they have not been
|
||||
decompiled yet.
|
||||
- **Unknown:** the support DLLs are a mix. OpenSSL and curl are C, BugTrap is
|
||||
C++, and the proprietary DLLs are unchecked (see `third-party/README.md`).
|
||||
|
||||
Implications for decompilation:
|
||||
- Ghidra produces C-like pseudocode. C++ structure is not recovered
|
||||
automatically. Recover it from RTTI and vftables (`decomp/scripts/VTableMap.java`).
|
||||
- No PDBs are shipped, so method names, signatures and data members are
|
||||
unknown unless reconstructed.
|
||||
|
||||
## Statically linked libraries (observed in Agent; others unchecked)
|
||||
|
||||
- **ProudNet** (Nettention, proprietary): networking and RMI. Headers are local-only; see `third-party/README.md`.
|
||||
- **TinyXML** 2.5.x (inference: 2.5.1–2.5.3, from its error table). XML
|
||||
config parsing (`TiXml*` classes); present in 14 of 16 EXEs. Source is in
|
||||
`third-party/tinyxml-2.5.3/`.
|
||||
- **ATL**: `CAtlException` and related classes.
|
||||
|
||||
## Application code conventions (observed in Agent)
|
||||
|
||||
- Class prefixes are `Magi*` / `MG*` / `MB*`, for example `MagiAgentServer`,
|
||||
`MGAgentManagerSession` and `MBCLog`.
|
||||
- The singletons use the `MBISingleton<T>` template.
|
||||
- The timer class is `Magi::Timer`.
|
||||
- Inter-server RMI interfaces live in namespaces named
|
||||
`<FROM>2<TO>_PROTOCOL`, for example `AGENT2AGENTMANAGER_PROTOCOL`. Each
|
||||
generated `Proxy` / `Stub` class is wrapped in the `RNP` namespace.
|
||||
- Config is XML under `option\*.xml`.
|
||||
- Whether the other servers share this framework is an **inference**, based on
|
||||
their names and similar RTTI counts. It is unverified.
|
||||
Loading…
Add table
Add a link
Reference in a new issue