146 lines
11 KiB
Markdown
146 lines
11 KiB
Markdown
# third-party/ — upstream sources for shipped support DLLs
|
||
|
||
Source trees matched to the Support DLLs listed in `decomp/INVENTORY.md`.
|
||
Used as reference when decompiling (symbol recovery, struct layouts, FLIRT-style
|
||
matching). **Not** build inputs for anything in this repo.
|
||
|
||
"Matched" here means the upstream version equals the version embedded in the
|
||
DLL (VERSIONINFO + in-binary version strings). Compiled DLLs cannot be
|
||
byte-matched to source without the original toolchain/flags; the archives
|
||
themselves were verified against upstream checksums where available.
|
||
|
||
| DLL(s) | Embedded version (observed) | Directory | Upstream / integrity | Match |
|
||
|---|---|---|---|---|
|
||
| `libeay32.dll`, `ssleay32.dll` | FileVersion `1.0.0d`; strings `OpenSSL 1.0.0d 8 Feb 2011`; PDB `...\OpenLibrary\openssl-1.0.0d\out32dll\` | `openssl-1.0.0d/` | `openssl.org/source/old/1.0.0/openssl-1.0.0d.tar.gz`, SHA-1 `32ca934f380a547061ddab7221b1a34e4e07e8d5` (matches official `.sha1`); SHA-256 `92511d1f…6320db` | Exact release |
|
||
| `libcurl_x64.dll`, `libcurl_Win32.dll`, `libcurld_x64.dll`, `libcurld_Win32.dll` | FileVersion `7.21.4`; strings `libcurl/7.21.4` | `curl-7.21.4/` | git tag `curl-7_21_4` (commit `827f0a31…`) via GitHub archive, SHA-256 `1dd41d4b…eb3240`. Official release tarball no longer downloadable (404). | Exact tag; see note |
|
||
| `BugTrapU-x64.dll` | FileVersion `1.3.3466.24114`; PDB `...\OpenLibrary\BugTrap\Win32\Bin\BugTrap.pdb` | `BugTrap-1.3-57bd515/` | `github.com/bchavez/BugTrap` commit `57bd515` (earliest public import, `1.3.3718.38316`) | **Closest available, NOT exact** |
|
||
| `dbghelp.dll` | Microsoft, Debugging Tools for Windows `6.12.0002.633` | `mingw-w64-dbghelp-63ebe6c/` | `github.com/mingw-w64/mingw-w64` commit `63ebe6cd…` (master HEAD, retrieved 2026-10-14): `include/dbghelp.h`, `lib-common/dbghelp.def` (x64), `lib32/dbghelp.def`, licence files | **Header + export list only, not an implementation** |
|
||
|
||
Notes:
|
||
- **curl**: the git tag differs from a release tarball only by generated files
|
||
(configure, Makefiles) and `maketgz` version stamping. I applied the version
|
||
stamp only (`LIBCURL_VERSION` → `"7.21.4"` in `include/curl/curlver.h`,
|
||
`CURL_VERSION` in `src/version.h`); `LIBCURL_TIMESTAMP` left as `"DEV"`
|
||
because the real release timestamp is unknown.
|
||
- **BugTrap**: no public source for build 3466 found. Export comparison: the
|
||
shipped DLL's 83 `BT_*` exports (82 shared) equal `source/BugTrap.h` of 57bd515 except the
|
||
DLL exports `BT_GetErrorString` (not in header) and the header declares
|
||
`BT_SetTerminate` (not exported). Treat API/structs as approximate.
|
||
- The `debug` (`libcurld_*`) and Win32 variants share the same source version.
|
||
- **dbghelp (mingw-w64)**: clean-room, public-domain/ZPL headers, not
|
||
Microsoft's. All 205 named exports of the shipped `dbghelp.dll` appear in
|
||
`lib-common/dbghelp.def`. Header is a modern superset of the 6.12 API, so
|
||
struct versions/sizes may differ from 2010-era definitions. mingw-w64 has no
|
||
dbghelp implementation; an open implementation exists in Wine
|
||
(`dlls/dbghelp/`, LGPL-2.1).
|
||
|
||
## No public source (not included)
|
||
|
||
| DLL | Observed identity | Reason |
|
||
|---|---|---|
|
||
| `dbghelp.dll` | Microsoft, Debugging Tools for Windows `6.12.0002.633` | Proprietary implementation; clean-room header included (see table above). |
|
||
| `hasp_windows_x64_95595.dll` | SafeNet Sentinel LDK RuntimelessAPI `6.3.1.28566` | Proprietary; `hasp_api.h` ships only in the vendor-licensed Sentinel LDK SDK. Bundles trio and hamsterdb internally (observed strings). |
|
||
| `XTrap4Server.dll` / `20100731_521_XTrap4Server.dll` | no VERSIONINFO | Proprietary anti-cheat (WiseLogic XTrap); no public SDK. |
|
||
| `ApexProxy.dll`, `ApexProxyMain.dll` | no VERSIONINFO | Proprietary (Apex anti-cheat); no public SDK. |
|
||
| `XLSLogin.dll` | no VERSIONINFO | Unknown origin; no public source identified. |
|
||
|
||
## Statically linked: TinyXML
|
||
|
||
TinyXML is not a separate DLL; it is compiled into the server EXEs.
|
||
|
||
- **Identity (observed):**
|
||
- 9 `TiXml*` RTTI classes appear in 14 of the 16 server EXEs. The two
|
||
`SMMonitoring` EXEs have none.
|
||
- In `Agent_Release_x64.exe`, the 12 TinyXML error-table strings and
|
||
`Failed to open file` appear contiguously at file offset `0x11d570`.
|
||
- There is no version string in the binary.
|
||
- **Version (inference from the error table):**
|
||
- The binary contains `Memory allocation failed.`. TinyXML 2.6.x removed that
|
||
entry; 2.5.1–2.5.3 have it, and their error tables are identical.
|
||
- So it is 2.5.1–2.5.3, but which one is unresolved. `tinyxml.h` and
|
||
`tinyxmlparser.cpp` differ between those releases, and the code has not been
|
||
compared.
|
||
- 2.5.0 couldn't be fetched, and pre-2.5 releases were not checked.
|
||
- **Directory:** `tinyxml-2.5.3/` holds the latest 2.5.x release, unmodified.
|
||
- Source: `sourceforge.net/projects/tinyxml`, file `tinyxml_2_5_3.zip`.
|
||
- SHA-256: `143590aa5930c1326315fb9fe3c0aab316a43751a44582dedd69331004b2c6a1`.
|
||
- **Match:** closest available, not confirmed exact.
|
||
- **Licence:** zlib, so it's fine to commit.
|
||
- **Use:** class layouts and the parser source let you label TinyXML functions
|
||
in the decompiled output, via the class records' method tables and the error
|
||
strings above.
|
||
|
||
## Statically linked: ProudNet (Nettention) — local-only headers
|
||
|
||
ProudNet is not a separate DLL; it is linked into the server EXEs.
|
||
|
||
- **Identity (observed):** in `Agent_Release_x64.exe`, RTTI and assert
|
||
strings name `Proud::CNetServerImpl`, `Proud::CNetClientImpl`, RMI stubs
|
||
and proxies, and `GET /PNReport/ReportError.php`. There is no version string
|
||
in the binary. VS2010 build, so likely an early-2010s ProudNet (inference).
|
||
Other EXEs not yet checked.
|
||
- **Public material:** `github.com/Nettention/ProudNet` contains prebuilt libs
|
||
and headers only. There is no public implementation source.
|
||
- **Licence:** proprietary EULA. It forbids redistribution and
|
||
reverse-engineering (§1.2b), treats the software as confidential (§3), and
|
||
is governed by Korean law (§7–8). **Do not commit any ProudNet files.**
|
||
- **Local copy (gitignored):** `_local/proudnet-1.8.00001/`. It holds
|
||
`ProudNet/include/` (187 headers) plus `ProudNet-License-En.txt`, from tag
|
||
`ProudNetLibSetup-1.8.00001` (commit `c70f23f9…`, May 2023). Fetched at the
|
||
user's direction for local naming reference only.
|
||
- **Match:** not version-matched; 1.8 is about a decade newer than the build.
|
||
Only 18 of 63 `Proud::` RTTI classes in the Agent appear in these headers;
|
||
the rest are internal `*Impl` types. Verify any struct layout against the
|
||
decompiled code before relying on it.
|
||
- To re-fetch:
|
||
`git archive ProudNetLibSetup-1.8.00001 ProudNet/include ProudNet-License-En.txt`
|
||
from that repo into `_local/proudnet-1.8.00001/`.
|
||
- **`github.com/Nettention/ProudChatSDK` (checked 2026-10-15, `main` = tag
|
||
`1.1.0001`, commit `e0d9d6b8`).**
|
||
- **Contents:** bundles ProudNet **1.8.58849**: 185 headers, plus prebuilt
|
||
libraries for Windows (v110/v120/v140, dll), Android, iOS and
|
||
**x86_64 Linux** (`libProudNetServer.so/.a`, `libProudNetClient.so/.a`;
|
||
`__xstat` → old glibc).
|
||
- **Licence:** the repo's `LICENSE` (MIT) covers the chat SDK only;
|
||
`ProudNet/` keeps the same proprietary EULA (§1.2b). Nothing from it is
|
||
stored in this repo.
|
||
- **Headers:** identical to 1.8.00001 apart from the version banner and
|
||
translated doc comments in `ErrorType.h`. They add one error code and give
|
||
no new information beyond `_local/proudnet-1.8.00001`.
|
||
- **Compatibility with the 2013 ProudNet linked into DBCServer:**
|
||
|
||
| Aspect | Result | Type |
|
||
|---|---|---|
|
||
| PIDL proxy ABI | Matches: `IRmiProxy` keeps `m_signature` at +0x14, which the generated constructor checks against 1 (`MS:0x140008e20`). `RmiID` is still `uint16_t`. The `PIDL compiler is incompatible` and `CStartServerParameter::m_(fast)encryptedMessageKeyLength` strings appear in both | O |
|
||
| Internal implementation | 29 of DBCServer's 63 `Proud::` RTTI classes are absent from the 1.8.58849 Linux libraries' symbols, e.g. `CTcpLayer_C`, `CUdpSocket_S`, `CUpnp`, `ICompletionPortEventSink` | O |
|
||
| Internal net version | **2013 build: 196978 (0x30172)**, the global at `DBC:0x140344d40`. It is copied into the server object at +0x220 (`DBC:0x14018fa70`, instruction at `0x14019018d`) and into the client objects (`0x1401dd3e0`, `0x1401df000`). In the connect handshake (`DBC:0x1401a8110`, `NotifyServerConnectionRequestData`) the server reads a credential byte array, a 16-byte protocol GUID and a 4-byte int, and accepts only if the GUID **and** the int equal its own. The same value appears exactly once in `.data` of all 16 EXEs (O). **1.8.58849: 197144 (0x30218)** (`CNetConfig::InternalNetVersion`, rejected via `NotifyProtocolVersionMismatch`). The values differ by 166 | O |
|
||
| Licensing | 1.8 also contains license and activation checks (`CPNLic`, `NotifyLicenseMismatch`) | S |
|
||
|
||
- **Conclusion (I):**
|
||
- **Source-level:** usable as a header/ABI reference for PIDL-generated
|
||
stubs and proxies.
|
||
- **Wire-level:** **not** compatible with the original 2013 peers. The
|
||
internal net versions differ (196978 vs 197144), and the 2013 handshake
|
||
requires an exact match. This is O for the 2013 server side; I for the
|
||
1.8 side, which was not traced beyond the symbol name.
|
||
- **Linking:** linking `libProudNetServer.so` into `src/dbc_server`
|
||
would require accepting the EULA and a licence, and would give a
|
||
ProudNet 1.8 server that the original binaries likely cannot talk to.
|
||
|
||
Vendor attributions for XTrap (WiseLogic) and Apex are inferred from DLL
|
||
names, not corroborated by decompilation.
|
||
|
||
## Acquisition routes for the remaining libraries
|
||
|
||
| DLL | Route | Notes |
|
||
|---|---|---|
|
||
| `dbghelp.dll` | Windows SDK / WDK 7.1 "Debugging Tools for Windows" (official `dbghelp.h` + `.lib`); Microsoft public symbol server `msdl.microsoft.com/download/symbols` for the PDB | Public PDB gives Ghidra near-complete function names. Wine `dlls/dbghelp/` (LGPL-2.1) is an open reimplementation if implementation code is wanted. |
|
||
| `hasp_windows_x64_95595.dll` | Thales Sentinel LDK SDK (free evaluation after registration) for `hasp_api.h` | `95595` is the vendor ID; the runtimeless DLL is generated per vendor, so this exact build is obtainable only from the publisher. Modern `hasp_*` C API is largely backward-compatible with 6.3. |
|
||
| `XTrap4Server.dll` | Publisher-licensed SDK under NDA only; vendor appears inactive | Practical path: recover interface from the 22 KB DLL's exports + server call sites (REA/Ghidra). |
|
||
| `ApexProxy.dll`, `ApexProxyMain.dll` | Publisher-licensed SDK only | Same as XTrap; `ApexProxyMain` has a `Ver: %s Build: %s` string as a starting point. |
|
||
| `XLSLogin.dll` | Unknown | Identify first: exports/imports/PDB path/signer via `rea_inspect_with_objdump`. |
|
||
|
||
Policy: commit only redistributable material (upstream OSS, mingw-w64
|
||
headers). Vendor SDKs obtained under licence must stay out of git. Interfaces
|
||
reconstructed from binaries go in `decomp/<dll>/` with an `evidence.md`
|
||
ledger; they describe static interface only, not runtime behavior.
|