返回列表 发新帖

自动精灵脚本破译方向

[复制链接]

1

主题

31

回帖

181

积分

小学生

Rank: 2

金币
103
好评
0
信誉
100
发表于 2026-6-10 11:05:10 来自手机  | 显示全部楼层 | 阅读模式  来自 贵州
本帖最后由 ymlgc 于 2026-6-10 11:05 编辑

frida抓取脚本专用密钥,zjs破译成sjson,sjson再解码成zjs。
【免责声明】
本作品仅限个人逆向技术学习交流,禁止商用、侵权及违法行为。
所有资源仅供临时学习参考,请在下载后24小时内自觉删除。
使用者一切行为自负法律责任,作者不承担任何相关后果。
回复

使用道具 举报

1

主题

31

回帖

181

积分

小学生

Rank: 2

金币
103
好评
0
信誉
100
发表于 2026-6-13 13:11:15 来自手机  | 显示全部楼层  来自 贵州
本帖最后由 ymlgc 于 2026-6-13 13:13 编辑

# ZJS 解密工具 - Web 应用

## 项目概述

本项目是一个基于 Flask 的 ZJS 文件解密工具 Web 应用,用于解密和处理.zjs 格式脚本文件。该工具支持多种加密动作的解密、SJSON 二进制数据解码以及乱码修复功能。

## 技术架构

### 技术栈

| 分类 | 技术 | 版本 | 说明 |
|------|------|------|------|
| 后端框架 | Flask | 2.0.1 | Web 应用框架 |
| 加密库 | pycryptodome | 3.15.0 | AES 加密/解密 |
| 前端框架 | Bootstrap | 5.3.0 | UI 组件库 |
| 语言 | Python | 3.11+ | 后端开发语言 |

### 项目结构

```
decrypt_web/
├── app.py                    # Flask Web 应用主入口
├── requirements.txt          # Python 依赖列表
├── templates/
│   └── index.html            # 前端页面模板
├── uploads/                  # 上传文件临时存储目录
└── decrypt_tools/            # 解密工具模块
    ├── decrypt_full_pipeline.py  # 完整解密流程
    ├── sjson_decoder.py          # SJSON 二进制解码器
    ├── fix_zjs_garble.py         # ZJS 乱码修复工具
    └── key_database.py           # 密钥库管理
```

## 核心功能

### 1. ZJS 完整解密

**功能描述**:对 .zjs 文件进行完整解密处理,包括:
- 解析 ZJS 文件的 JSON Lines 格式
- 识别并解密加密动作(类型为 `加密动作` 的行)
- Base64 解码 → AES 双重解密 → SJSON 二进制解码
- 自动修复乱码

**解密流程**:
```
.zjs 文件 → 逐行解析 → Header保留 → 普通动作保留 → 加密动作解密
                                         ↓
                            Base64解码 → AES Layer1 → AES Layer2 → SJSON解码 → JSON
```

### 2. SJSON 解码

**功能描述**:对二进制 SJSON 数据进行解码,支持智能多策略 XOR 解码:

| 策略 | 名称 | 适用场景 | 说明 |
|------|------|----------|------|
| F | UTF-8字符串级CharXOR | 长文本/混合内容 | Frida验证100%正确 |
| E | UTF-8感知混合XOR | ASCII+CJK混合 | 字节级混合处理 |
| C | 每3字节第3个XOR | 纯中文短串 | 中文优化策略 |
| A | latin-1字节级XOR | 纯ASCII英文 | 英文优化策略 |

### 3. ZJS 乱码修复

**功能描述**:修复解密后 ZJS 文件中的常见乱码问题,包括:
- 特定乱码字符串替换
- 语法错误修复
- 不引入新的乱码

## API 接口

### 1. 首页

- **URL**: `/`
- **方法**: `GET`
- **功能**: 返回前端页面

### 2. 处理文件

- **URL**: `/process`
- **方法**: `POST`
- **Content-Type**: `multipart/form-data`
- **参数**:

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| file | File | 是 | 要处理的文件(.zjs 或 .bin) |
| function | String | 否 | 处理功能(默认 zjs-decrypt) |
| enc-key | String | 否 | 加密密钥(默认 YD3U@ItmK2;S(^p>) |

- **function 可选值**:
  - `zjs-decrypt`: ZJS 完整解密(默认)
  - `sjson-decode`: SJSON 解码
  - `fix-garble`: ZJS 乱码修复

- **成功响应**:
```json
{
  "success": true,
  "message": "处理完成!正常动作: 10, 加密动作: 5 (成功: 5, 失败: 0), 总计: 15 个动作。",
  "details": "[0] NORMAL 'action' | ...\n[1] ENCRYPTED 'code' | ...",
  "download_url": "/download/tmpXXX/fixed.zjs",
  "filename": "fixed.zjs"
}
```

- **失败响应**:
```json
{
  "success": false,
  "message": "处理失败: 错误描述"
}
```

### 3. 下载文件

- **URL**: `/download/<path:filename>`
- **方法**: `GET`
- **功能**: 下载处理后的文件

## 加密机制

### AES 双重加密

ZJS 文件中的加密动作采用 AES-CBC 模式的双重加密:

```
加密流程:
明文 → AES(ENC_KEY) → AES(CALLK) → Base64编码 → 存储

解密流程:
Base64解码 → AES(CALLK) → AES(ENC_KEY) → 明文
```

### 密钥信息

| 密钥名称 | 值 | 用途 |
|----------|-----|------|
| CALLK | "联系Q673636904" | 第一层 AES 密钥 |
| ENC_KEY | "YD3U@ItmK2;S(^p>" | 第二层 AES 密钥(默认) |
| AES_IV | "f815de617ed77f83" | AES 初始向量 |

### SJSON XOR 密钥生成

SJSON 解码使用的 XOR 密钥由 ENC_KEY 派生:

```python
def _generate_char_xor_key(seed):
    parts = [str(java_hashcode(seed))]
    for i in range(2, len(seed)):
        sub = seed[i-2:i]
        parts.append(str(java_hashcode(sub)))
    return ''.join(parts)
```

生成的密钥长度为 66 字符。

## 使用指南

### 启动应用

```bash
cd decrypt_web
pip install -r requirements.txt
python app.py
```

### 访问应用

打开浏览器访问:`http://localhost:5000`

### 使用步骤

1. **选择文件**: 点击文件选择按钮,选择要处理的 .zjs 或 .bin 文件
2. **选择功能**:
   - ZJS 完整解密:解密整个 ZJS 文件
   - SJSON 解码:仅解码 SJSON 二进制数据
   - ZJS 乱码修复:仅修复乱码
3. **选择密钥**: 从下拉菜单选择预设密钥或自定义输入
4. **开始处理**: 点击"开始处理"按钮
5. **下载结果**: 处理完成后点击"下载结果"获取文件

## 支持的文件格式

| 格式 | 扩展名 | 说明 |
|------|--------|------|
| ZJS | .zjs | 脚本文件(JSON Lines 格式) |
| SJSON | .bin | SJSON 二进制编码数据 |


## 安全性说明

1. **临时文件管理**: 上传的文件和处理结果保存在 `uploads/` 目录下的临时文件夹中
2. **文件大小限制**: 最大支持 100MB 文件上传
3. **错误处理**: 所有异常都被捕获并返回友好的错误信息

## 开发说明

### 添加新的解密策略

在 `sjson_decoder.py` 的 `xor_decode_value` 函数中添加新的解码策略:

```python
# ===== 策略X: 新策略 =====
try:
    # 实现你的解码逻辑
    s = your_decode_logic(data, key)
    sc = score(s)
    candidates.append((sc, 'X_newStrategy', s))
except Exception:
    pass
```

### 添加新的乱码修复规则

在 `fix_zjs_garble.py` 的 `fix_garble` 函数中添加新的替换规则:

```python
replacements = {
    # 已有规则...
    '乱码文本': '正确文本',
}
```

## 许可证

本项目仅供学习和研究使用。

---
回复

使用道具 举报

36

主题

765

回帖

2994

积分

大学生

Rank: 5Rank: 5

金币
1247
好评
7
信誉
80
QQ
发表于 2026-6-26 14:30:15 | 显示全部楼层  来自 陕西
太专业了,看不懂。
回复

使用道具 举报

0

主题

763

回帖

1310

积分

高中生

Rank: 4

金币
72
好评
0
信誉
100
发表于 2026-6-26 20:15:55 | 显示全部楼层  来自 江苏
支持一下!
回复

使用道具 举报

1

主题

71

回帖

267

积分

初中生

Rank: 3Rank: 3

金币
151
好评
0
信誉
100
发表于 2026-7-1 21:46:15 来自手机  | 显示全部楼层  来自 广东
ymlgc 发表于 2026-6-13 13:11
# ZJS 解密工具 - Web 应用

## 项目概述

哥我也想学习这个新开始从哪学
回复

使用道具 举报

0

主题

11

回帖

51

积分

小学生

Rank: 2

金币
21
好评
0
信誉
100
发表于 2026-8-6 04:04:25 来自手机  | 显示全部楼层  来自 广东
怎么搞
回复

使用道具 举报

0

主题

11

回帖

51

积分

小学生

Rank: 2

金币
21
好评
0
信誉
100
发表于 2026-8-6 06:00:51 来自手机  | 显示全部楼层  来自 广东
加一下好友
回复

使用道具 举报

0

主题

11

回帖

51

积分

小学生

Rank: 2

金币
21
好评
0
信誉
100
发表于 2026-8-6 12:48:40 来自手机  | 显示全部楼层  来自 广东
加一下Q聊一下2877932947
求你了大哥
回复

使用道具 举报

0

主题

11

回帖

51

积分

小学生

Rank: 2

金币
21
好评
0
信誉
100
发表于 2026-8-6 20:31:43 来自手机  | 显示全部楼层  来自 广东
没有,哥,我借鉴一下
回复

使用道具 举报

0

主题

42

回帖

194

积分

小学生

Rank: 2

金币
86
好评
0
信誉
100
QQ
发表于 2026-8-8 12:23:29 来自手机  | 显示全部楼层  来自 浙江
看看
回复

使用道具 举报

0

主题

872

回帖

1671

积分

高中生

Rank: 4

金币
288
好评
0
信誉
100
发表于 2026-8-8 14:02:22 | 显示全部楼层  来自 江苏
支持一下!
回复

使用道具 举报

73

主题

2524

回帖

8094

积分

硕士生

Rank: 6Rank: 6

金币
1643
好评
2
信誉
100
发表于 2026-8-9 19:56:43 来自手机  | 显示全部楼层  来自 吉林
感谢分享
回复

使用道具 举报

73

主题

2524

回帖

8094

积分

硕士生

Rank: 6Rank: 6

金币
1643
好评
2
信誉
100
发表于 2026-8-13 23:02:53 来自手机  | 显示全部楼层  来自 吉林
这个太复杂,.py 可以更简单!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表