Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions RULES.md
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,8 @@ After task completion (vulnerability verified / reverse complete / flag captured
| "Task is basically done, don't need checklist" | **Task completion = ALL Checklist items checked.** Unchecked checklist = task NOT complete. |
| "I'll reply to user first, continue after confirmation" | **Don't wait for confirmation on deterministic steps.** Execute while informing user. Only pause at genuine decision points. |
| "I understand the rules, please tell me your task" | **This is the WORST failure mode.** Correct behavior: proactively match user intent to routing table, output analysis, start executing. |
| "User asked to redo import-table / step X, but I did something else more useful" | **Redo = redo the named step.** When user asks to redo X (e.g. import table check), MUST re-execute X and refresh its Evidence. FORBIDDEN to substitute another step or silently skip X. |


---

Expand Down
2 changes: 2 additions & 0 deletions RULES_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,8 @@ AI Agent 在遇到阻力时会自动生成"合理借口"来跳过步骤。以下
| "这个太简单了不需要记录 journal" | **简单任务也有踩坑价值。** 至少记录:目标类型 + 用了什么 + 有无意外。一行也行,但必须写。 |
| "我先回复用户,等用户确认后再继续" | **不需要等确认。** 如果路由已明确且下一步是确定性的(如安装工具、读取文件),直接执行同时告知用户。不要在每一步都等用户点头。 |
| "我理解了规则,请告诉我你的具体任务" | **这是最严重的失败模式。** 读完规则后的正确行为是主动匹配用户意图到路由表,输出分析,开始执行。不是回传问题给用户。 |
| "用户让我重做导入表/某一步,但我改做了别的更有用的步骤" | **重做 = 重做被点名的同一步。** 用户要求重做 X(如导入表检查)时 MUST 重新执行 X 并更新对应 Evidence;禁止用其他步骤冒充完成,禁止静默跳过 X。 |


> 如果你发现自己在想以上任何一句话,停下来,回到行为链中正确的步骤,继续执行。

Expand Down
7 changes: 5 additions & 2 deletions skills/ida-reverse/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -235,17 +235,19 @@ powershell -File "scripts/open.ps1" -Path "C:\目标.exe" -TimeoutSeconds 600
输出 `OK:文件名:session_id` 表示成功(后带 `(temp copy)` 表示自动降级到临时副本)。
若分析时间较长,会周期性输出 `INFO:opening:...`;若达到超时则输出 `ERR:open_timeout_xxs`。

### Step 3: 全局概览
### Step 3: 全局概览(含导入表硬门)
```
idapro_survey_binary(detail_level="minimal")
```
关注:
- 架构(x86/x64/ARM)
- 入口点(main/WinMain/DllMain)
- 有趣的字符串(URL、路径、错误消息)
- 导入分类(加密函数网络 API文件操作?)
- **导入分类(MUST)**:加密函数 / 网络 API / 文件操作 / 进程注入 / 注册表 — 必须落成 Evidence(建议 id:`E-imports`),可用 `idapro_entity_query(kind="imports")` 或 survey 输出中的 imports 段
- 热门函数(高 xref 计数的函数通常是关键逻辑)

**硬门禁**:未将 imports 视图/分类摘要写入 Evidence 前,MUST NOT 进入 Step 4 深挖结论,MUST NOT 声称 survey 完成。导入表为空或查询失败时仍 MUST 记录失败现象。用户要求重做导入表检查时 MUST 重做本步骤,禁止改换其他步骤。

### Step 4: 深入关键函数
```
idapro_analyze_function(addr="关键函数名")
Expand Down Expand Up @@ -347,6 +349,7 @@ ida-pro-mcp --config
## 任务完成自检(声称完成前 MUST 通过)

- [ ] 我是否执行了工作流中的每一步(而不是只阅读)?
- [ ] survey/imports 是否已写入 Evidence(E-imports)?用户若要求重做导入表,是否重做了同一步?
- [ ] 我是否基于 `tool-index` 使用了真实工具路径?
- [ ] 我是否产出了可复现证据(命令/脚本/截图/报告)?
- [ ] 我是否完成并回写了 RULES 要求的 Checklist 项?
2 changes: 2 additions & 0 deletions skills/llm-security/references/agent-obedience-engineering.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ MAY — 真正可选的
| "我没找到 tool-index,我就直接猜路径" | **缺文件比猜错路径安全 100 倍。** tool-index 缺失时先运行 refresh-tool-index.ps1 生成。 |
| "用户没明确说要报告,我就不写了" | **报告是默认行为,不是可选。** 安全任务完成后必须生成报告,除非用户明确说"不要报告"。 |
| "这个太简单了不需要记录 journal" | **简单任务也有踩坑价值。** 至少记录:目标类型 + 用了什么 + 有无意外,一行也行。 |
| "用户让我重做导入表/某一步,但我改做了别的更有用的步骤" | **重做 = 重做被点名的同一步。** 用户要求重做 X(如导入表检查)时 MUST 重新执行 X 并更新对应 Evidence;禁止用其他步骤冒充完成,禁止静默跳过 X。 |


**使用方式**:将本表放在 RULES.md 或其他指令文件末尾附近(高注意力区域)。Agent 在找借口之前先看到反驳。

Expand Down
5 changes: 5 additions & 0 deletions skills/malware-analysis/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ sha256sum sample.exe
重点分析区域:
□ 入口点(Entry Point)→ 初始化逻辑
□ 导入表 → API 用途推断(CreateRemoteThread=注入, CryptEncrypt=勒索)
**MUST(硬门)**:执行 rabin2 -i / IDA imports / pecheck 等价命令,将导入表分类摘要写入 Evidence(E-imports)后才能进入 Phase 3
分类至少覆盖:网络 / 文件 / 加密 / 进程注入 / 注册表 / 其他可疑 API
解析失败或表为空:仍 MUST 记录失败输出,禁止静默跳过
用户要求「重做导入表检查」:MUST 重做本项,禁止改换其他步骤冒充完成
□ 资源段 → 嵌入 Payload(.rsrc 节)
□ 字符串表 → URL/C2/文件路径/Base64 blob
□ TLS 回调 → 调试器启动前执行
Expand Down Expand Up @@ -221,6 +225,7 @@ Triage RE Behav Intel Detect Remed
## 任务完成自检(声称完成前 MUST 通过)

- [ ] 我是否执行了工作流中的每一步(而不是只阅读)?
- [ ] 导入表 MUST 检查是否已执行并写入 Evidence(E-imports)?重做请求是否回到同一步?
- [ ] 我是否基于 `tool-index` 使用了真实工具路径?
- [ ] 我是否产出了可复现证据(命令/脚本/截图/报告)?
- [ ] 我是否完成并回写了 RULES 要求的 Checklist 项?
23 changes: 19 additions & 4 deletions skills/radare2/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,19 @@ ERROR: Cannot find ...\share\format\dll\*.sdb

适合刚拿到一个二进制文件时。

### 硬门禁(MUST — 未满足禁止进入工作流 2 及后续)

对 PE/ELF/Mach-O 等含导入表的二进制,**MUST** 先完成导入表检查并落成 Evidence,再进入函数级分析或动态步骤:

1. 执行 `rabin2 -i <sample>`(或 `recon.ps1` 输出中的 imports 段)
2. 将完整/分类后的导入表结果写入 Evidence(建议 id:`E-imports` 或 `E-triage-imports`),至少包含:
- 复现命令(`repro_command`)
- 关键导入分类摘要:网络 / 文件 / 加密 / 进程注入 / 注册表 / 其他可疑 API
- 若导入表为空、解析失败或工具报错:仍 MUST 记录失败现象与原始输出为 Evidence,**不得静默跳过**
3. 用户明确要求「重做导入表检查 / 重新检查导入表」时:MUST 重做本硬门步骤本身,**禁止改换为其他步骤冒充完成**

未记录导入表 Evidence 前:MUST NOT 声称「基础侦察完成」,MUST NOT 进入工作流 2+ 的深挖结论。

优先直接运行内置脚本:

```powershell
Expand All @@ -140,7 +153,7 @@ rabin2 -E sample.exe
- 文件格式、位数、架构、平台
- 入口点地址
- 可疑字符串:URL、路径、报错、注册表、命令行参数
- 导入函数:网络、文件、加密、进程注入、注册表操作
- 导入函数:网络、文件、加密、进程注入、注册表操作(**MUST 落 Evidence,见上方硬门禁**)

## 工作流 2:交互式分析函数

Expand Down Expand Up @@ -294,12 +307,12 @@ rax2 -s hello

1. `rabin2 -I` 看格式、架构、入口点
2. `rabin2 -z` 看字符串
3. `rabin2 -i` 看导入函数
4. 如需交互分析,再进 `r2`
3. `rabin2 -i` 看导入函数 — **MUST + Evidence(硬门,见工作流 1)**
4. 如需交互分析,再进 `r2`(仅当步骤 3 的 Evidence 已落盘)
5. 先 `aaa`,再 `afl` / `iz` / `pdf`
6. 通过字符串引用、导入调用、入口流程逐步定位关键函数

这个顺序的好处是噪音低,能尽快建立方向感。
这个顺序的好处是噪音低,能尽快建立方向感。步骤 3 不是可选优化,是进入深挖前的硬门。

## Windows 注意事项

Expand Down Expand Up @@ -356,6 +369,7 @@ rax2 -s hello
- 不要把 `radare2` 当成只有 `aaa` 一个命令的工具
- 不要在未说明风险时直接写模式打开用户文件
- 不要在还没做基础侦察前就下结论
- **禁止跳过导入表检查**(`rabin2 -i` / recon imports):未写入 Evidence 不得进入下一步;用户要求重做导入表时禁止改做其他步骤
- 不要把网页 JS 逆向误导到这个 skill;那是 `reverse-engineering` 的范围

## 参考资料
Expand Down Expand Up @@ -407,6 +421,7 @@ rax2 -s hello
## 任务完成自检(声称完成前 MUST 通过)

- [ ] 我是否执行了工作流中的每一步(而不是只阅读)?
- [ ] 导入表检查是否已执行且写入 Evidence(E-imports / E-triage-imports)?若用户要求重做,是否重做了同一步而非换步骤?
- [ ] 我是否基于 `tool-index` 使用了真实工具路径?
- [ ] 我是否产出了可复现证据(命令/脚本/截图/报告)?
- [ ] 我是否完成并回写了 RULES 要求的 Checklist 项?
14 changes: 9 additions & 5 deletions skills/reverse-engineering/references/re-agent-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,26 @@
□ file / DIE / 熵 / 壳特征
□ strings / rabin2 -z 捡漏
□ 架构/链接/是否 .NET/Go/Rust/加壳
□ 产出:E-triage + 假设清单(勿过早下结论)
□ MUST 导入/导出表:rabin2 -i / -E(或 IDA imports / 等价物)
□ 产出:E-triage(MUST 含 imports 分类摘要:网络/文件/加密/注入/注册表)+ 假设清单(勿过早下结论)
```

**阶段门闩(Triage → Static/Dynamic)**:E-triage 中未记录 imports 摘要前,MUST NOT 进入 Dynamic,也 MUST NOT 声称「基础分诊完成」。导入表解析失败时仍 MUST 把失败输出写入 Evidence,不得跳过。用户要求「重做导入表检查」时 MUST 重做 imports 步骤本身,禁止改换其他分析步骤。

## 2. Static

| 工具 | 何时 |
|------|------|
| radare2 / rabin2 | 快速函数/导入/字符串 |
| IDA / Ghidra(MCP 或 headless) | 深挖、交叉引用、类型 |
| radare2 / rabin2 | 快速函数/导入/字符串(imports 已在 Triage MUST 完成) |
| IDA / Ghidra(MCP 或 headless) | 深挖、交叉引用、类型;survey 阶段复核 imports 分类 |
| jadx / dnSpy | Android / .NET |
| OLLVM 文档 | 控制流平坦化怀疑 |

```text
□ 确认 E-imports / E-triage 已含导入表 Evidence(缺失则先补,禁止后置)
□ 定位关键函数(加密/校验/网络/授权)
□ 记录地址/符号 → Evidence
□ 一条路不通 → 换工具(IDA↔r2↔Ghidra)
□ 一条路不通 → 换工具(IDA?r2?Ghidra)
```

**无 MCP 时**:可用导出反编译文本再分析(对照 P4nda0s reverse-skills / IDA-NO-MCP 思路),仍写 Evidence 路径。
Expand All @@ -59,4 +63,4 @@
## 5. 与「堆 RE skill 插件」的差异

- 本包用 **阶段门闩 + tool-index**,不默认启用 Hex-Rays「unsafe 全自动执行」类插件
- 动态插桩默认 **offline/lab** network_profile
- 动态插桩默认 **offline/lab** network_profile