|
|
hace 1 mes | |
|---|---|---|
| .. | ||
| jsc-extract | hace 1 mes | |
| src-app | hace 1 mes | |
| README.md | hace 1 mes | |
| SUMMARY.md | hace 1 mes | |
从
D:\ProgramFiles\996box\安装目录逆向出来的完整工程。 所有高价值信息(URL、密钥、版本、签名证书等)见 SUMMARY.md。
D:\传奇\996box-decompiled\
├── README.md 本文件
├── SUMMARY.md 高价值信息汇总
├── src-app/ app.asar 完整解包 (业务代码 + 资源)
│ ├── package.json
│ ├── src/
│ │ ├── index.js ★ 主进程入口, 完整可读
│ │ ├── proxyWindow.js
│ │ ├── spawnLauncher.js
│ │ ├── render/*.js 8 个 preload 脚本 (明文)
│ │ ├── browserRender/*.js 6 个 BrowserView preload
│ │ ├── offline/*.html 12 个离线兜底页
│ │ ├── localpages/ 内置 React 静态资源
│ │ ├── assets/ 图标 + axios + crypto-js
│ │ ├── libs/*.jsc 6 个核心库字节码
│ │ ├── bridge/*.jsc 4 个 IPC 桥字节码
│ │ ├── static/*.jsc 2 个静态配置字节码
│ │ ├── workers/*.jsc 1 个 Worker 字节码
│ │ ├── message.html
│ │ ├── xmode.html
│ │ └── versionLF.json
│ └── (已移除 node_modules, 占 90% 体积但无业务价值)
└── jsc-extract/ .jsc 字节码反编译产物
├── extract-strings.js 字符串提取脚本
└── strings/ 13 个 .jsc 的字符串提取结果
├── src__static__config.md ★ 包含 16 个真实 URL + 8 个 key
├── src__libs__urlCreator.md
├── src__libs__tools.md
├── src__libs__Buryingpoint.md
├── src__libs__request.md
├── src__libs__encrypt.md
├── src__libs__titlebarConfig.md
├── src__bridge__core.md
├── src__bridge__main.md
├── src__bridge__common.md
├── src__bridge__server.md
├── src__static__remark.md
└── src__workers__dbWorker.md
996box.exe (127MB) 是原版 Electron 22.3.4 运行时 (Chromium 108 + V8 10.8 + Node 16.17.1 ABI)。
里面没有任何定制业务代码 — 业务全在 resources/app.asar 里。所以"反编译 exe"没有意义,反编译对象应该是 app.asar。
已尝试: | 方案 | 结果 | |---|---| | bytenode 1.6.0 + Node 24 (V8 12.x) | ❌ cachedDataRejected | | bytenode 1.6.0 + Node 18.20.4 (V8 10.2) | ❌ cachedDataRejected | | bytenode 1.6.0 + Electron 22.3.4 (V8 10.8.168) | ❌ cachedDataRejected | | bytenode 1.3.6 + Electron 22.3.4 | ❌ cachedDataRejected | | 手动 patch V8 字节码 0-32 字节 header | ❌ 全部 rejected, hsize=16 时 V8 直接崩溃 | | brotli/gzip 解压 0xa4 0x05 wrapper | ❌ 不是压缩格式 |
根因 (技术细节):
0xa4 0x05 不是 bytenode 标准格式(1.5+ 写 0xa9, 1.3.x 直接写无 wrapper)。作者用 bytenode 编译后又加了 wrapper,或用了 bytenode fork。֤샞ᘢ尮ӝ 这种乱码 (XOR 加密),需要运行 decode 函数才能解。实际可用的工作:
jsc-extract/strings/*.mdurlCreator 模块,需 Frida 动态 hook反编译过程中产生的临时文件 (bytenode 0.x~1.6 全部版本 tarball、各类 probe 脚本、Node 18 / Electron 22 下载) 已清理。 如需重新尝试 .jsc 加载,需要:
cd D:\传奇\996box-decompiled
node jsc-extract\extract-strings.js
输入: src-app/src/**/*.jsc (13 个文件)
输出: jsc-extract/strings/*.md (13 个文件,每文件 500~90000 字符)
(Get-Item D:\ProgramFiles\996box\996box.exe).VersionInfo
Get-AuthenticodeSignature D:\ProgramFiles\996box\996box.exe
Frida hook 提取 urlCreator 真实 URL
urlCreator.createTextUrl 函数入口设置断点, 打印参数公网 API 密钥安全审计
a3e031d8b98743c69fc98d34f12fef08 试着签一次 pc-api.996box.com 的请求IPC API 表面梳理
src-app/src/render/*.js 8 个 preload 文件已全部明文src-app/src/index.js 的 ipcMain.on(...) 对照本工程仅供安全研究/学习目的使用。提取出来的密钥、URL、签名证书信息不得用于:
代码中明文出现的硬编码 key 和 URL 反映的是客户端安全设计缺陷 — 任何客户端 key 都不应被视为"机密"。