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,129 @@
# 分析契约
分析全流程的三条契约:分析前(上下文清单 + 调查预算)、分析中(数据传递字段)、分析后(复核格式)。所有网关与原子技能执行分析时遵循本契约。
中途再路由:证据触发按 [[rerouting]] 双轨执行(轨 1 网关完成必查 / 轨 2 证据出现即查),命中即调对应技能。
## 一、分析上下文清单(分析前)
分析一个目标前,先收集以下上下文再动手。**通用四项按目标域展开**(域字段见第三节 3.2),不套用文件域字段:
- 目标标识:标识符(路径 / 端点 / 设备 / 包名 / 模型文件)、哈希(sha256)、大小
- 结构信息(**按域取**):文件域 = 架构/格式/节表/导入导出;协议域 = 端点/端口/帧样例;车载域 = 仲裁 ID/周期/DLC;射频域 = 中心频率/采样率/调制;模型域 = 格式/张量清单;TEE 域 = TA/会话/SMC 号;取证域 = 来源设备/时间线
- 关联信息(**按域取**):文件域 = xrefs/caller/callee/引用字符串;协议域 = 请求-响应配对;模型域 = 层间依赖与算子序列;取证域 = 跨数据源的同一记录
- 已知线索:已命名/已恢复的结构(符号表、struct/字段语义、协议字段名)、本会话已得出的结论(跨环节传递)
收集不到的项目记「未知」,不阻塞开工——但禁止跳过收集直接分析。
## 二、调查预算(分析中)
- **软预算,不是硬上限**:主动申请额外证据(xrefs/反编译/内存读取等工具调用)**8 次为一档**——**到档必须重新评估**(当前假设是否还成立、下一步的证据增益是否还值得),**而不是禁止继续**。复杂目标(大型固件 / 内核 / 协议 / 混淆程序)评估通过后进入下一档
- **到档评估三选一**:继续(写明新的证据假设)/ 换路(按 pivot 链)/ 收束(交付部分结论 + 置信度)。评估结论记录在案,便于复核
- 同参数重复 ≥2 次无新证据 → 换思路;单命令 ≥3 次无进展 → 停下评估
- 证据预载优先:上下文清单一次给足,减少来回调用
## 三、数据契约(分析中,环节间传递)
链式编排(入口 → 域环节 → 后续环节)的传递字段,**分两层:核心字段(所有域必带)+ 域扩展字段(按目标域选用)**。此前本表只有文件域一套字段,对其他域(协议/射频/车载/模型/TEE/取证)不适用——按域取字段,不硬套。
### 3.1 核心字段(所有域)
| 字段 | 含义 | 产出环节 |
|---|---|---|
| target_id | 目标标识(路径 / 端点 / 设备 / 包名 / 模型文件) | 入口 / [[re-triage]] |
| sha256 | 目标哈希(证据存档键;非文件目标用等价指纹——pcap 哈希、固件镜像哈希、模型文件哈希) | 入口 / [[re-triage]] |
| evidence | 证据链(路径 + 哈希 + 命令输出位置) | 各环节 |
| findings | 结论列表(每条带等级 confirmed / supported / hypothesis 与置信度,见第四节) | 各环节 |
| unverified | 本环节无法确认的部分(对应复核格式的「未验证项」) | 各环节 |
### 3.2 域扩展字段(按目标域选,代表技能仅示例)
| 域 | 扩展字段 | 代表产出技能 |
|---|---|---|
| 文件 / 二进制(PE/ELF/Mach-O/固件) | arch、format、entropy、sections、imports_exports、strings_refs、base_addr、symbols_known | [[re-triage]]、[[re-format-pe]] / [[re-format-elf]] / [[re-format-macho]]、[[re-imports]]、[[re-ghidra]] |
| 网络 / 协议 | endpoints(五元组与会话)、frames(帧样例与字段偏移)、state_machine(状态转移)、crypto_layer(加密层与密钥来源) | [[re-netcap]]、[[re-proto-rev]]、[[re-tls]] |
| 总线 / 车载(CAN 等) | arbitration_ids(ID/周期/DLC)、signals(字节序与位布局)、diagnostic_sessions(UDS 服务序列)、seed_key(算法与密钥来源) | [[re-automotive]]、[[re-ics]] |
| 射频 / SDR | center_freq、sample_rate、modulation、sync_words(帧同步字)、demod_chain | [[re-sdr]] |
| AI 模型(文件级) | model_format、tensors(名/形状/dtype)、graph_ops(算子序列)、watermark_evidence(权重/metadata 异常) | [[re-ai-model]] |
| AI 模型(行为级 / 仅 API) | api_endpoints、query_budget、behavior_fingerprint(响应一致性)、extraction_evidence | [[re-ai-attack]] |
| 移动 / 托管代码 | package、components(Activity/Service)、sandbox_paths、jni_map(native 方法 ↔ 地址)、bytecode_units | [[re-apk]]、[[re-android-native]]、[[re-dotnet]]、[[re-java]] |
| TEE / 可信执行 | ta_uuid、smc_ids、secure_storage_items、key_derivation | [[re-tee]]、[[re-hardware-io]] |
| 取证 / 情报 | device_source、timeline(时间/动作/来源)、integrity(哈希链与分区摘要)、iocs | [[re-mem-forensics]]、[[re-disk-forensics]]、[[re-mobile-forensics]]、[[re-ioc]] |
| 沙箱 / 行为 | process_tree、persistence、network_behavior、attck_mapping | [[re-sandbox]]、[[re-behavior]] |
### 3.3 传递规则
- **核心字段必带**(收集不到记「未知」,不阻塞);**域扩展字段按目标域选填**——不要求跨域填充(CAN 目标不需要 sections,模型目标不需要 base_addr)
- 每个环节**只增不改**:后续环节追加字段与原字段并存;冲突以新证据为准并记录更正
- 输出形态:JSON 或结构化表格;下一环节直接消费,不重新扫描
## 四、复核格式(分析后)
结论交付前做**独立复核**:换视角重读结论与证据(换模型/换工具/间隔后重读均可),逐条核对:
1. 每条结论有对应证据(文件路径 + sha256),无证据的结论等级为 hypothesis
2. 结论与证据矛盾 → 以证据为准,修正结论
3. 标注**证据等级**(RE 中推断常见,等级必须标注):
- `confirmed`:直接证据可复现(字节级比对 / 调用链 / 官方文档)
- `supported`:多源间接证据一致(字符串 + 行为 + 时序互相印证)
- `hypothesis`:推断 / 单源弱证据(无证据的结论即此级)
高 / 中 / 低置信度保留为辅助维度(与等级并存)
复核输出格式:
```
结论:<一句话>
证据:<路径 + sha256 / 命令输出位置>
等级:confirmed / supported / hypothesis
置信度:高 / 中 / 低
未验证项:<复核时无法确认的部分,留空表示无>
```
示例:
```
结论:样本连接固定 C2
证据:字符串(c2.example.com,xref 至 connect 调用)+ socket 调用链
等级:supported
置信度:中
未验证项:C2 是否仍在线
```
### 通用方法论索引(全库适用,按需引导激活)
以下方法论内容在各域技能中沉淀,全库通用——任何技能遇到对应场景时引导到出处激活:
| 方法论 | 位置 | 适用场景 |
|---|---|---|
| 分析方法论(入口/调用/内存/API/混淆/动态调试/深层/情报与初勘/反汇编方法/验证/知识获取,11 组) | [[re-binary-core]]「分析方法论」 | 一切二进制分析的通用手法(静态为主) |
| 反调试方法论(基础检测/异常机制/时间检测/环境特征/硬件痕迹/线程与调试对象/自修改断点/深层检测/方法论,9 组) | [[re-anti-analysis]]「反调试方法论」 | 任何动态分析遭遇反调试时(gdb/x64dbg/mobile/沙箱) |
| 反虚拟化方法论(指令级/时间硬件/环境评分/虚拟化通道,4 组) | [[re-anti-analysis]]「反虚拟化方法论」 | 沙箱/虚拟机对抗(检测与绕过) |
| 平台经验(跨 OS 安装与行为差异) | [[platform-tips]] | 所有工具准备与跨平台执行 |
### 单函数深分析顺序
逐函数深分析是**收敛循环**,不是单向流水线——实际形态是「粗反编译拿线索 → 恢复类型/常量/调用形状 → 重新反编译 → 直到定点」:
```
初次反编译(先拿粗结果:字段使用、调用形状、switch 形态、分配大小)
→ types / constants / vtables / function identity 四类信息交替恢复
→ 重新反编译
→ 复核对齐;仍有冲突则回到上一步
```
**禁止的是"只反编译不复核就交付",不是"先看反编译"**——类型恢复常常需要先有一次粗反编译才有线索(field-use / call-shape / switch / allocation size)。四类要恢复的信息:
1. **types——类型定义**:还原参数/返回类型与结构体字段。找什么:参数与局部变量引用的 struct、switch/比较中的 enum 值、函数指针类型(回调签名)
2. **constants——常量定义**:识别魔数与加密常量。找什么:疑似 #define 的数字字面量、位掩码及其构成的 flag、有语义的 magic number(如 ELF 魔数——**字节序列是 `7f 45 4c 46`**,写成 C 字面量即 `"\x7fELF"`;按 u32 读时注意字节序:小端得 `0x464c457f`、大端才是 `0x7f454c46`)、协议专用常量、用作 key/标识符的字符串常量
3. **vtables——虚表恢复**:定位虚表,反推类关系与调用点。找什么:thunk 到 vtable 分发的虚方法、读/初始化 vtable 指针、对象构造/析构序列、多条分发路径
4. **function identity——函数名与签名**:对照已命名符号表/导入导出/调用点证据定名。找什么:import/export 的 demangled 符号名、调用点分析推出的调用约定、callee 引用推出的参数个数与类型、返回值使用分析推出的返回类型
5. **收敛判据(定点)**:**四类同时满足才算收敛**——类型全部解析(无裸 ID)、常量已替换为有意义名字、虚调用目标已识别、最终签名带参数名。**每一轮改动都要重新反编译核对**,避免"改了类型但没验证";仍有冲突说明还没到定点,回到对应类别继续
每步发现记录 provenance(哪个证据支撑哪条结论)。工具不绑定:各步在 Ghidra / IDA / radare2 中有等价操作。
### 负面结论标准
下「不存在 / 未发现 / 不支持」类结论前,最少做 **3 次不同尝试**(换工具 / 换视角 / 换参数),并在复核输出中列出尝试清单。负面结论的置信度默认「中」,除非尝试清单覆盖了全部合理路径。
### pivot 提示链
分析卡住时按链换路:反调试对抗 → 打补丁/硬件断点 → 混淆 → 动态追踪 → 脱壳;每换一次记录原因(与调查预算联动:同参数重复 ≥2 次即换思路)。