mcpField
R
reverse-engineer

reverse-engineer

github.com/rmyndharis安全1.9k70 次安装2 周前更新
代码仓库

关于 reverse-engineer

reverse-engineer 是面向逆向工程任务的指导技能,适用于安全研究人员、CTF 参与者和软件分析人员。它按侦察、静态分析、动态分析和文档整理提供方法,并涵盖常见脚本环境。

主要功能

  1. 01覆盖常见逆向脚本环境
  2. 02提供文件侦察与初步分析步骤
  3. 03指导静态分析和交叉引用
  4. 04规划动态分析与执行跟踪
  5. 05强调授权分析与结果验证

适用场景

  1. 01分析授权测试中的二进制文件
  2. 02研究 CTF 挑战程序
  3. 03为防御目的检查恶意软件
  4. 04记录闭源库的行为

安装

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

$npx skills add https://github.com/rmyndharis/antigravity-skills --skill reverse-engineer

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

详细介绍

常用逆向工程脚本环境

  • 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