reverse-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok609hecl1pq6qi
2026-10-20 02:17:15 +03:00
commit da24c2bd20
2227 changed files with 443931 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
# 字符串表与最小求值
这份文档用于处理字符串表、解码包装、局部别名链和最小引导 `eval`。
## 适用场景
- 文件开头几条语句就在初始化解码器。
- 顶层 IIFE 里传入数组、对象或字符串表。
- 源码里大量出现 `fn(12)`、`arr[123]`、`String.fromCharCode(...)`。
- 第一层去壳之后,函数内部还存在二次字符串恢复。
## 推荐顺序
1. 先定位数组字面量、解码函数和别名链。
2. 尽量优先做静态恢复,例如数组下标、纯字面量拼接、纯数字参数调用。
3. 只有静态无法推进时,才执行最小引导代码。
4. 删除已经消费掉的引导声明或包装层。
5. 重新 parse 一次,再进入控制流还原阶段。
## 最小引导 `eval` 原则
- 只执行前几条足以构造解码器的代码。
- 不要直接执行整份源文件。
- 不要在未隔离的环境里执行明显依赖 DOM、`window`、定时器或网络的逻辑。
- 求值目标应尽量窄,例如“只恢复数字参数到字符串的函数调用”。
## 常见模式
### 顶层 IIFE 带数组参数
- 从顶层调用提取 `formalParam -> actualArg` 映射。
- 只替换明确命中的数组下标访问。
- 处理包装函数里直接可展开的语句块。
### 前几条语句就是解密引导
- 只截取前 2 到 5 条关键语句。
- 建立最小运行时后,恢复只带字面量参数的调用点。
- 删除已消费的引导语句。
### 去掉第一层后,局部函数还有二次恢复
- 先展开顶层 IIFE。
- 重新 parse。
- 再识别函数内部那组“构造器 + 成员表达式 + 数字下标”的模式。
## 停止条件
- 主要字符串表已经恢复。
- 核心解码器入口已经清楚。
- 剩余部分不再适合纯静态恢复。
满足以上条件后,应切换到控制流或结构标准化阶段。