Online play¶
Online mode has been validated end-to-end, on real console, against both a private test server and the real official Battle.net: connection, realm selection, character selection, game creation, act loading, a game actually played.
Access to official Battle.net: on by default
Access to the real Battle.net is on by default — this unofficial
client connects to it directly, with no environment variable to
activate. D2_LOCAL_ONLY=1 restricts the runtime to a private/local
server if you don't want that. Playing on your official account with an
unofficial client carries a real risk of sanction under Blizzard's
terms of service (Warden can be pushed in-game by the server; its
behavior against this runtime is not proven). That's a decision for the
player to make, not something this project encourages or guarantees to
be risk-free.
What's proven¶
| Step | Evidence (real console) |
|---|---|
| CheckRevision | Real verification, not a fabricated response — hash computed on the real binary, different for every seed sent by the server |
| Authenticode | Real PKCS#7/X.509 chain-of-trust verification — Get-AuthenticodeSignature on the same binary reports Valid on real Windows; this runtime answers the same way |
| CD keys | Recognized by the server as real keys (mechanism below) |
| Connect → realm → character → game | Full path played autonomously, including against official Battle.net |
| The game binary during play | Unchanged: 0 bytes of code modified in memory, verified by a dedicated probe |
Principle: nothing is fabricated¶
Non-negotiable project rule, including where cheating would be most tempting: no fabricated response, no forged packet, no special memory view to bypass an anti-cheat check. What can't be honestly represented is documented as a known limitation, never quietly worked around — see Fidelity Warden / anti-cheat for the technical backlog of gaps still open relative to a real Windows process (structured exception handling, memory introspection). None of these gaps is exploited to give the player an advantage; they're accepted limitations, not shortcuts.
The CD key mechanism¶
Contrary to popular belief, Diablo II does not store its CD keys in the
registry — BLIZZARDKEY, found there, is actually an RSA public key used
to sign MPQ files, not a player secret. The real secret lives encrypted in
three small files written by the original installer (inside the game's MPQ
file chain, 72 bytes each); the game decrypts them itself, through its own
code, with encryption that depends on no machine-specific data.
This port provides an honest alternative mechanism for entering your own
keys: a text file (ux0:data/d2vita/keys.txt, alongside the MPQs) that the
player fills in themselves. Its content is
re-encoded exactly in the format the Blizzard installer would have
produced, then the game decrypts it itself, through its own path —
nothing is injected into its memory after the fact. Validated end-to-end
with real keys on console: the server receives exactly the same public
values as with a classic install.
What remains open¶
- Warden, the anti-cheat module Battle.net can push in-game: its exact behavior against this runtime is not proven — it has never been seen activating during testing so far, which doesn't prove it never would.
- A small number of known gaps relative to a real Windows process (structured exception handling, memory/process introspection) remain documented as such rather than hidden — none affects normal play today. Full technical detail: Fidelity Warden / anti-cheat.
To contribute to this part of the code¶
The network protocol, the private test server, and the A/B validation
protocol (byte-for-byte traffic comparison before/after any change
touching an active network path) are documented in the repository —
.claude/agents/online-validation.md.