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,18 @@
# 变种OB混淆
当样本是OB变种混淆时,使用这份规则。
识别信号:
- 仍然能看到 `_0x` 风格的标识符。
- 经过通用处理后,OB 家族的包装层依旧存在。
流水线建议:
- 将 OB 家族逻辑保留在专用适配器里,只给 OB 类样本复用。
- 适配器运行后,直接把 `loop/switch` 残留与参考 `decode` 结果对比。
当前残留重点:
- 仍然残留的直接 `loop/switch` 平坦化结构。
- 任何高于参考基线的 OB 风格命名或包装层痕迹。

View File

@@ -0,0 +1,18 @@
# 顶象
当样本属于顶象或非常接近的混淆家族时,使用这份规则。
识别信号:
- IIFE 的参数会喂给后续平坦化阶段使用的数组或查找对象。
- 清理 dispatcher 会有帮助,但更关键的是恢复由数组承载的执行顺序。
流水线建议:
- 先解析由参数驱动的数组,再判断 `loop/switch` 平坦化是否仍然存在。
- 平坦化完成后保持流程保守,默认不要再追加第二轮高开销的字面量内联。
当前残留重点:
- 相对 `decode.js` 仍然存在的结构噪音。
- 在直接 `loop/switch` 块已经清零后,依然残留的 dispatcher 包装层差距。

View File

@@ -0,0 +1,18 @@
# 极验4
当样本属于极验4,或属于相近的 guarded-switch VM 家族时,使用这份规则。
识别信号:
- `loop/switch` 平坦化外层还包着 guarded `if` 结构。
- 即使通用平坦化器已经能处理较简单的 handler,输出与参考结果仍然差很多。
流水线建议:
- 将 guarded-switch 适配器作为家族专用步骤运行,不要塞进通用平坦化器内部。
- 优先压低直接 `loop/switch` 残留,再考虑命名或可读性层面的清理。
当前残留重点:
- 仍然残留的直接 `loop/switch` 热点。
- 仍然比 `decode.js` 更嘈杂的 guarded opcode dispatcher 结构。

View File

@@ -0,0 +1,18 @@
# 中华人民共和国公安部
当样本属于中华人民共和国公安部,并且符合 OB 家族特征时,使用这份规则。
识别信号:
- 存在 `_0x` 风格标识符以及 OB 家族的包装结构。
- 虽然与招投标样本属于同一家族,但 `loop/switch` 残留画像并不相同。
流水线建议:
- 复用共享的 OB 适配器,但为这种残留画像保留独立规则文档。
- 以直接 `loop/switch` 块是否降到参考基线作为成功判断标准。
当前残留重点:
- 经过 OB 适配器后依然存在的 `loop/switch` 平坦化残留。
- 持续存在的 `_0x` 命名或包装层差距。

View File

@@ -0,0 +1,18 @@
# reese84
当文件路径、hint 或样本标签明确指向 `reese84` 时,使用这份规则。
识别信号:
- 样本体量大,呈现明显的 VM 风格,并且 dispatcher 残留较重。
- 完成结构性处理后,`inline-literals` 的开销会显著升高。
流水线建议:
- 优先采用 `normalize -> prune -> inline-dispatchers -> flatten -> if-to-switch` 这条顺序。
- 除非在更小的裁剪样本上已经验证安全,否则跳过后置的 `inline-literals`。
当前残留重点:
- 仍然存在的 dispatcher 包装层。
- 相对 `decode.js` 的最终行数差距。

View File

@@ -0,0 +1,18 @@
# 同花顺
当样本属于同花顺,或属于相关的 split-order wrapper 家族时,使用这份规则。
识别信号:
- 残留的 `split('|')` 顺序字符串会驱动 `loop/switch` 平坦化。
- 在抵达真正的顺序字符串之前,包装对象还会层层指向其他包装对象。
流水线建议:
- 在 `flatten-array-control-flow.js` 之前插入专门的顺序源适配器。
- 不要默认把 `inline-literals` 当成这里的瓶颈解法。
当前残留重点:
- 尚未解开的 `split('|')` 顺序数组。
- 由多层包装对象驱动的剩余 `loop/switch` 代码块。

View File

@@ -0,0 +1,17 @@
# 小红书
当样本属于小红书时,使用这份规则。
识别信号:
- wrapper 清理相对较轻,剩余平坦化也不算多。
- 可读性提升主要依赖结构规范化,而不是更深的求值或执行。
流水线建议:
- 让适配器保持轻量。
- 优先做规范化和包装层清理,而不是激进的常量传播。
当前残留重点:
- 仍然与 `decode.js` 存在差异的小型 dispatcher 或包装层残留。

View File

@@ -0,0 +1,18 @@
# 网易易盾
当样本属于网易易盾时,使用这份规则。
识别信号:
- 通用 dispatcher 处理之后,wrapper 仍然比较密集。
- 做一轮字面量传播通常仍然有帮助,而且不至于把文件推向病态体积。
流水线建议:
- 让 dispatcher 适配器尽量贴近 `inline-dispatchers` 这一步。
- 允许执行一轮 `inline-literals`,但不要盲目重复。
当前残留重点:
- 相对 `decode.js` 的 dispatcher 包装层数量差距。
- 主平坦化已经消除后,仍然存在的少量结构差距。