2.8 KiB
2.8 KiB
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).
Shared framework (config files, server kinds, DB access path): see
SHARED_FRAMEWORK.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. Seedecomp/Agent_Release_x64/evidence.mdandcpp/classes.hpp. - Observed (markers only): the other 15 EXEs. The RTTI, C++ EH and MSVCP100
checks were run with
stringsandobjdumpon 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 inthird-party/tinyxml-2.5.3/. - ATL:
CAtlExceptionand related classes.
Application code conventions (observed in Agent)
- Class prefixes are
Magi*/MG*/MB*, for exampleMagiAgentServer,MGAgentManagerSessionandMBCLog.- The singletons use the
MBISingleton<T>template. - The timer class is
Magi::Timer.
- The singletons use the
- Inter-server RMI interfaces live in namespaces named
<FROM>2<TO>_PROTOCOL, for exampleAGENT2AGENTMANAGER_PROTOCOL. Each generatedProxy/Stubclass is wrapped in theRNPnamespace. - 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.