mcpField
R
reverse-engineer

reverse-engineer

github.com/sickn33安全48.7k900 次安装今天更新
代码仓库

关于 reverse-engineer

面向逆向工程任务的指导技能,适用于安全研究、CTF 和防御性恶意软件分析。涵盖从文件侦察到静态、动态分析与结果记录,并要求对目标操作先确认书面授权和范围。

主要功能

  1. 01分阶段逆向分析方法
  2. 02常见分析环境指导
  3. 03代码模式与调用约定识别
  4. 04目标操作前授权确认
  5. 05分析结果记录建议

适用场景

  1. 01分析 CTF 二进制文件
  2. 02检查获准分析的 DLL
  3. 03在受控环境研究恶意软件
  4. 04记录程序行为与漏洞发现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill reverse-engineer

安装后在 Claude Code 中输入/reverse-engineer确认已加载。

详细介绍

⚠️ 仅限授权使用 此技能仅用于教育目的或经授权的安全评估。 使用此工具前,必须取得系统所有者明确的书面许可。 滥用此工具属于违法行为,严禁滥用。

强制确认关卡 在运行任何会探测、利用、修改目标、在目标上建立持久访问、从目标提取数据或尝试访问凭据的命令之前:

  1. 请用户说明确切的目标 URL、IP、账户或资源。
  2. 请用户确认已获得书面授权,并说明许可的范围。
  3. 展示确切的命令,并说明预期效果。
  4. 等待用户在当前对话中明确确认。

未获得确认时,请保持只读,并仅提供防御性指导。优先使用沙箱、一次性 VM 或受控实验室。

常见逆向工程脚本环境

  • IDAPython(IDA Pro 脚本)
  • Ghidra 脚本(通过 Jython 使用 Java/Python)
  • r2pipe(radare2 Python API)
  • pwntools(CTF/漏洞利用工具包)
  • capstone(反汇编框架)
  • keystone(汇编框架)
  • unicorn(CPU 模拟器框架)
  • angr(符号执行)
  • Triton(动态二进制分析)

适用场景

  • 处理常见逆向工程脚本环境相关任务或工作流
  • 需要常见逆向工程脚本环境的指导、最佳实践或检查清单

不适用场景

  • 任务与常见逆向工程脚本环境无关
  • 需要使用此范围以外的其他领域或工具

说明

  • 明确目标、约束和所需输入。
  • 应用相关最佳实践并验证结果。
  • 提供可执行的步骤和验证方法。
  • 此处未附带所引用的实现手册。请使用下述自包含方法和已查阅的工具文档;不要声称已审阅无法获取的辅助内容。

分析方法

阶段 1:侦察
  1. 文件识别:确定文件类型、架构和编译器
  2. 元数据提取:字符串、导入项、导出项、资源
  3. 加壳器检测:识别加壳器、保护程序和混淆器
  4. 初步分类:评估复杂度,识别值得关注的区域
阶段 2:静态分析
  1. 载入反汇编器:适当配置分析选项
  2. 识别入口点:主函数、导出函数、回调函数
  3. 绘制程序结构:函数、基本块、控制流
  4. 注释代码:重命名函数、定义结构、添加注释
  5. 交叉引用分析:追踪数据和代码引用
阶段 3:动态分析
  1. 环境设置:隔离 VM、网络监控、API 钩子
  2. 断点策略:入口点、API 调用、相关地址
  3. 追踪执行:记录程序行为、API 调用、内存访问
  4. 输入操控:测试不同输入,观察行为变化
阶段 4:文档记录
  1. 函数文档:用途、参数、返回值
  2. 数据结构文档:布局、字段含义
  3. 算法文档:伪代码、流程图
  4. 发现摘要:关键发现、漏洞、行为

响应方式

协助处理逆向工程任务时:

  1. 明确范围:确保分析用于授权目的
  2. 了解目标:需要哪些具体信息?
  3. 推荐工具:建议适合任务的工具
  4. 提供方法:逐步说明分析方法
  5. 解释发现:提供清晰的说明和佐证
  6. 记录模式:记录有趣的代码模式和技术

代码模式识别

常见模式
// String obfuscation (XOR)
for (int i = 0; i < len; i++)
    str[i] ^= key;

// Anti-debugging (IsDebuggerPresent)
if (IsDebuggerPresent())
    exit(1);

// API hashing (common in malware)
hash = 0;
while (*name)
    hash = ror(hash, 13) + *name++;

// Stack string construction
char s[8];
*(DWORD*)s = 0x6C6C6548;  // "Hell"
*(DWORD*)(s+4) = 0x6F;     // "o\0"
调用约定
  • x86 cdecl:参数位于栈上,由调用者清理
  • x86 stdcall:参数位于栈上,由被调用者清理
  • x64 Windows:依次使用 RCX、RDX、R8、R9,然后使用栈
  • x64 System V:依次使用 RDI、RSI、RDX、RCX、R8、R9,然后使用栈
  • ARM:依次使用 R0-R3,然后使用栈

安全与道德

仅限授权用途
  • 经适当授权的安全研究
  • CTF 竞赛和教育性挑战
  • 以防御为目的的恶意软件分析
  • 通过负责任的渠道披露漏洞
  • 为实现互操作性而了解软件
绝不协助以下行为
  • 未经授权访问系统
  • 出于恶意目的创建恶意软件
  • 非法绕过软件许可
  • 窃取知识产权
  • 任何非法活动

交互示例

CTF 二进制挑战
User: "I have a CTF binary that asks for a password. How do I approach this?"

Response: Let me guide you through the analysis:

1. First, identify the binary type:
   $ file challenge
   $ checksec --file=challenge

2. Load in Ghidra/IDA and find main()

3. Look for:
   - String comparisons (strcmp, memcmp)
   - Crypto functions (xor loops, constants like 0x5A827999)
   - Input validation logic

4. Set breakpoints on comparison functions in GDB:
   $ gdb ./challenge
   (gdb) break strcmp
   (gdb) run

5. Examine memory at comparison point to see expected value
库分析
User: "I need to understand how this closed-source DLL handles authentication"

Response: For authorized analysis of the DLL:

1. Static analysis:
   - List exports: dumpbin /exports library.dll
   - Find auth-related functions by name patterns
   - Load in IDA/Ghidra, analyze exported functions

2. Dynamic analysis:
   - Hook API calls with Frida
   - Monitor network traffic
   - Trace function parameters

3. Documentation:
   - Document function signatures
   - Map data structures
   - Note any security considerations

限制

  • 仅当任务明确符合上述范围时,才使用此技能。
  • 不要将输出视为针对特定环境进行验证、测试或专家审查的替代品。
  • 如果缺少必要的输入、权限、安全边界或成功标准,请停止并请求澄清。

评论

支持 Markdown