Files
coruna-lab-web/frontend/doc/NATIVE_PACKS.md
T
hashbro 8b079d37e4 Build delivery over HTTPS and flatten source/web.
Keep/restore https://%@ in type0x01/core and rewrite daily module URLs to https, and move campaign assets from source/web/<hash>/ up to source/web/ so templates match the channel artifact layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 16:07:55 +08:00

113 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 一级包与二级包
## 路径
**线上:同一相对目录。** Stage JS、一级包、二级包都从 campaign base 用文件名下载:
```text
{base}/70049138….js # Stage
{base}/6539c1e0….js # 一级包(wire 后缀 .js)
{base}/65704c07….min.js # 二级 type-0x01 包(wire 后缀 .min.js)
```
线上原始 `base` = `/web/34f5121f572d6742703eb84ec2f866a6/`;lab 模板与产物为扁平 `web/`(渠道对外路径为 `/channel/<id>/web/`)。
### Wire 后缀(实测)
| 类型 | 客户端实际请求 | 说明 |
|------|----------------|------|
| Stage JS | `<40hex>.js` | 无 `.min.js` |
| **一级原生包** | **`<40hex>.js`** | 按机型/版本选 flags;**不是** `.min.js` |
| **二级 type-0x01** | **`<40hex>.min.js`** | type 0x07 元数据里的文件名带 `.min.js` |
Campaign / lab 目录里同一 stem 常同时存在 `.js` 与 `.min.js`,且**内容不同**(`.js` 通常更大)。链路只拉上表对应后缀;另一份是同 stem 的另一产物,不要当成重复别名删掉。
**`coruna-online` 落盘为分析拆目录,不是三条不同 URL:**
| 类型 | 线上相对路径(wire) | `coruna-online` 落盘 |
|------|----------------------|----------------------|
| Stage JS / 入口 | `{base}/<name>` | 仓库根目录(见 [`STAGE_JS.md`](./STAGE_JS.md)) |
| 一级原生包 | `{base}/<40hex>.js` | 历史多落在 `payloads/<40hex>.min.js`;**以线上 `.js` 为准**同步到 lab |
| 二级 type-0x01 | `{base}/<40hex>.min.js` | `c2_fetch/<40hex>.min.js`(部分副本带 `xxxxxxxx_` 前缀,lab 已归一) |
## 联系
```text
Stage3
→ 下载「一级包」.js(按机型/版本选 flags)
→ 解密 → F00DBEEF:0x08 / 0x09 / 0x0f / (0x0a) + **type 0x07 元数据**
→ type 0x07 给出二级文件名 + ChaCha key
→ 再下载「二级包」.min.js
→ 解密 → F00DBEEF type **0x01**(SpringBoard 管理器,含 Deployment DGA)
→ DGA → /sync/daily.html → sync/ 下 26 个模块
```
| 层级 | 线上看起来 | 解开后 | 作用 |
|------|------------|--------|------|
| **一级包** | ChaCha 加密 **`.js`** | F00DBEEF:利用/implant(0x08 powerd、0x09、0x0f 等)+ **0x07 指针** | 提权与落地;**0x07 点名二级包** |
| **二级包** | 另一 key 的 **`.min.js`**(key 在 0x07) | F00DBEEF:**仅 type 0x01** dylib | DGA、拉 `daily.html`、下模块、注入 |
一级 ≠ type-0x01;靠一级内的 **0x07** 才接到二级。一级失败则不会拉对应二级包。
---
## 一级包一览(`payloads/` → lab `web/…/`)
清单文件名按 **wire(`.js`)** 书写。lab 中同 stem 的 `.min.js` 为另一份线上产物,体积更小,链路默认不请求。
| lab / 线上文件名(wire) | flags | 内含类型 | `coruna-online` 来源(历史落盘名) |
|---|---|---|---|
| `054bcb73ce2a3023b3813f5be12d0b6ffd6e7611.js` | `0xf230` | 0x08, 0x09, 0x0f, 0x07, 0x07 | `payloads/054bcb73….min.js` |
| `e406714e92671b5218496fcb6666734411cb2320.js` | `0xf330` | 0x08, 0x09, 0x0f, 0x07, 0x07 | `payloads/e406714e….min.js` |
| `694c829e379e12085de6158b85f32509f54f4796.js` | `0xf240` | 0x08, 0x09, 0x0f, 0x07, 0x07 | `payloads/694c829e….min.js` |
| `3b0133801a3f844e7ebafa0363f2423a50005b72.js` | `0xf340` | 0x08, 0x09, 0x0f, 0x07, 0x07 | `payloads/3b013380….min.js` |
| `6f8a7a3bc74d9c65f5463a6a29d4e2c52feefcca.js` | `0xf270` | 0x08, 0x09, 0x0f, 0x07, 0x07 | `payloads/6f8a7a3b….min.js` |
| `eb3e81b54e8763bfe505e7a18be8f5fd828a76f6.js` | `0xf370` | 0x08, 0x09, 0x0f, 0x07, 0x05, 0x09, 0x07 | `payloads/eb3e81b5….min.js` |
| `6bbb364c8a423374d42a2cbc45c0dee84e7dc710.js` | `0xf280` | 0x08, 0x09, 0x0f, 0x07, 0x07 | `payloads/6bbb364c….min.js` |
| `99010a27e08b3312650c8d9f321958433e577a30.js` | `0xf380` | 0x08, 0x09, 0x0f, 0x07, 0x07 | `payloads/99010a27….min.js` |
| `6539c1e0dc731ea7c7011af236cc7c2871af7c40.js` | `0xf290` | 0x08, 0x09, 0x0f, 0x07, 0x07 | `payloads/6539c1e0….min.js` |
| `c9118a62558ed444a64c2dfe350c6c57fa277a3a.js` | `0xf390` | 0x08, 0x09, 0x0f, 0x07, 0x05, 0x09, 0x07 | `payloads/c9118a62….min.js` |
| `076de672aebfc78137aa863e51ff3d8980dcdd10.js` | `0xf373` | 0x08, 0x09, 0x0f, 0x07, 0x0a, 0x07 | `payloads/076de672….min.js` |
| `62415a3d105a8c40c41b19cf456e8474fe441359.js` | `0xf383` | 0x08, 0x09, 0x0f, 0x07, 0x0a, 0x07 | `payloads/62415a3d….min.js` |
| `a5847c3e2e439e2f7c4b1582932cf81a06100981.js` | `0xf275` | 0x08, 0x09, 0x0f, 0x07, 0x0a, 0x07 | `payloads/a5847c3e….min.js` |
| `f7994d47ee03dfb33e0fc7df94c8a215ff8fe66a.js` | `0xf375` | 0x08, 0x09, 0x0f, 0x07, 0x0a, 0x07 | `payloads/f7994d47….min.js` |
| `a13a74c0123f5a0c4acaf0586f035f8735bac0c8.js` | `0xa205` | 0x08, 0x0a | `payloads/a13a74c0….min.js` |
| `f10b572f33adf343a7398487c3f4cc71088b56ab.js` | `0xa305` | 0x08, 0x0a | `payloads/f10b572f….min.js` |
| `906a996fa11bcaa5347c6453e328f538d17d5dbf.js` | `0xa306` | 0x08, 0x0a | `payloads/906a996f….min.js` |
| `4614dd1cf7c0b41d0443e1a1a306706fb94a2bb6.js` | `0xa303` | 0x08, 0x0a, 0x0a | `payloads/4614dd1c….min.js` |
| `d1a39a282f3dc9d0e261c3df466093ee0f8d441d.js` | `0xa304` | 0x08, 0x0a, 0x0a | `payloads/d1a39a28….min.js` |
解出的中间 dylib:`coruna-online/payloads/*_type0xNN.dylib`(lab 未复制)。
---
## 二级包一览(`c2_fetch/` → lab `web/…/`)
均为 type **0x01** SpringBoard helper(含 DGA)。Wire 文件名为 **`.min.js`**。
**为何 10 个二级包、实质只有 2 份 dylib:**
| dylib SHA-256(前 16) | 体积 | stem 数 | 成员 |
|---|---:|---:|---|
| `8bef11cb6cdf18f9…` | 347472 | 5 | `039c68f0` / `34736715` / `65704c07` / `6bac8b93` / `743312ca` |
| `124f9b07b58c90c3…` | 362056 | 5 | `1d0df5a0` / `242a0afb` / `630c2b42` / `7cb20652` / `7f208248` |
差异在**投递包装**,不是两套 DGA:各一级包的 type **0x07** 点名不同 `<stem>.min.js` 并带不同 ChaCha key;两条构建内 Deployment/Reporting **seed 相同**。改 seed:改 2 个唯一 dylib → 用各自 type07 key 重加密要用到的二级 `.min.js`(要覆盖全部一级变体则 10 个都重打)。
| lab / 线上文件名 | `coruna-online` 来源 | 说明 |
|---|---|---|
| `039c68f0ca742a85e94516818385a9eca2e204d8.min.js` | `c2_fetch/039c68f0….min.js` | 二级 type-0x01 |
| `1d0df5a0a12a20aa8b0c8aeb660742268f311d19.min.js` | `c2_fetch/1d0df5a0….min.js` | 二级 type-0x01 |
| `242a0afb1d88b83e9a1a5b570fed6778def892fc.min.js` | `c2_fetch/242a0afb….min.js` | 二级 type-0x01 |
| `347367155da44f3efcc9053337913061079610b9.min.js` | `c2_fetch/34736715….min.js` | 二级 type-0x01 |
| `630c2b42300333d91588353d43afab9ec8325e09.min.js` | `c2_fetch/630c2b42….min.js` | 二级 type-0x01 |
| `65704c0722165a7bdedad3f3f61258b2f95470f6.min.js` | `c2_fetch/65704c07….min.js` | HAR 中出现过的二级包之一 |
| `6bac8b93b6f97ddd8a1f86fecfa6431b9ffeb9fb.min.js` | `c2_fetch/6bac8b93….min.js` | 二级 type-0x01 |
| `743312cafb58176af57b89098d94dca1c60f8d1e.min.js` | `c2_fetch/743312ca….min.js` | 二级 type-0x01 |
| `7cb20652ef7156e931f894dd3d99f24601b80368.min.js` | `c2_fetch/7cb20652….min.js` | 二级 type-0x01 |
| `7f208248c748f97956fe4a7cf246c91235852e67.min.js` | `c2_fetch/7f208248….min.js` | 二级 type-0x01 |
解出的 dylib:`coruna-online/c2_fetch/<stem>_type0x01.dylib`(lab 未复制)。
业务模块见 [`SYNC.md`](./SYNC.md)。