CriDos/d2r_offline
GitHub: CriDos/d2r_offline
一个通过WinHTTP DLL代理技术实现《暗黑破坏神2:重制版》无启动器离线启动的C++项目。
Stars: 1 | Forks: 0
# d2r_offline 1.0
`d2r_offline` 是一个紧凑的 C++ 项目,用于通过代理 `winhttp.dll` 复现 Diablo II: Resurrected 在无需 Blizzard 启动器情况下的离线启动/会话流程。
该项目执行以下操作:
- 替换 `winhttp.dll`,同时将原始 WinHTTP 导出转发到真实的系统库
- 发布预期的环境和注册表响应
- 修补 Diablo II: Resurrected 进程内存中的受信 `PUBLIC KEY`
- 生成兼容的 `%LocalAppData%\Blizzard Entertainment\ClientSdk\cookie.bin`
## 结构
- `src/config` — 配置加载和区域设置标准化
- `src/crypto` — Windows CNG/CryptoAPI 后端和 Serpent CTR
- `src/cookie` — 声明、机器上下文、cryptobox 和 `cookie.bin` 写入
- `src/exports` — 导出列表和汇编转发器
- `src/proxy` — 进程引导和 WinHTTP 转发器加载
- `src/runtime` — 运行时补丁和注册表钩子实现
- `src/support` — 共享类型、密钥材料、日志记录和平台辅助工具
## 构建
要求:
- Windows x64
- Visual Studio 2022 Build Tools
构建:
```
powershell -ExecutionPolicy Bypass -File .\build.ps1
```
输出:
- `build\winhttp.dll`
## 使用说明
要在 Diablo II: Resurrected 中使用该代理:
1. 构建项目并获取 `build\winhttp.dll`,或者从项目发布页 [下载](https://github.com/CriDos/d2r_offline/releases) `winhttp.dll`。
2. 将 `winhttp.dll` 复制到游戏目录中,紧挨着主游戏可执行文件。
3. 直接启动游戏可执行文件,无需通过 Blizzard 启动器。
4. 首次启动时,让 DLL 自动生成 `d2r_offline.ini`,或者将你自己的配置文件放在 `winhttp.dll` 旁边。
5. 成功启动后,离线 cookie 将被写入 `%LocalAppData%\Blizzard Entertainment\ClientSdk\cookie.bin`。
建议的首次运行检查:
- `d2r_offline.log` 在 `winhttp.dll` 旁边创建
- `cookie.bin` 在 `%LocalAppData%\Blizzard Entertainment\ClientSdk\` 下创建
- 游戏以预期的语言和离线会话状态启动
## 配置
DLL 会在其所在目录下查找 `d2r_offline.ini`。如果文件不存在,则会自动创建:
```
[Settings]
Locale=english
LocaleAudio=english
Entitlements=hd,beta,rotw-dlc
```
支持的键:
- `Locale`
- `LocaleAudio`
- `Entitlements`
支持的 `Locale` 和 `LocaleAudio` 值:
- `english` -> `enUS`
- `german` -> `deDE`
- `spanish` -> `esES`
- `latam` -> `esMX`
- `french` -> `frFR`
- `italian` -> `itIT`
- `koreana` / `korean` -> `koKR`
- `polish` -> `plPL`
- `brazilian` -> `ptBR`
- `portuguese` -> `ptPT`
- `russian` -> `ruRU`
- `tchinese` -> `zhTW`
- `schinese` -> `zhCN`
- `japanese` -> `jaJP`
你也可以直接提供 Blizzard 区域设置代码,例如 `enUS` 或 `ruRU`。
运行时日志将写入 DLL 旁边的 `d2r_offline.log`,并在每次启动时重新创建。
## 注意事项
- 输出文件保留为 `winhttp.dll`,因为客户端加载的是该特定模块名称
- 实现旨在实现实际兼容性,而非二进制身份一致性
- 加密层使用 Windows CNG/CryptoAPI 和内置的 Serpent
标签:Blizzard战网, C++, CNG加密, Cookie生成, DLL代理, DLL劫持, SSH蜜罐, Windows开发, WinHTTP代理, 云资产清单, 免登录, 内存补丁, 数据擦除, 暗黑破坏神2重制版, 机器指纹伪造, 注册表钩子, 流量嗅探, 游戏破解, 游戏辅助, 离线启动器, 绕过验证, 进程注入, 逆向工程