关于 reverse-engineer
reverse-engineer 是面向逆向工程任务的指导技能,适用于安全研究人员、CTF 参与者和软件分析人员。它按侦察、静态分析、动态分析和文档整理提供方法,并涵盖常见脚本环境。
主要功能
- 01覆盖常见逆向脚本环境
- 02提供文件侦察与初步分析步骤
- 03指导静态分析和交叉引用
- 04规划动态分析与执行跟踪
- 05强调授权分析与结果验证
适用场景
- 01分析授权测试中的二进制文件
- 02研究 CTF 挑战程序
- 03为防御目的检查恶意软件
- 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:侦察
- 文件识别:确定文件类型、架构和编译器
- 元数据提取:字符串、导入项、导出项和资源
- 加壳检测:识别加壳器、保护器和混淆器
- 初步分类:评估复杂度并找出值得关注的区域
阶段 2:静态分析
- 载入反汇编工具:适当配置分析选项
- 识别入口点:主函数、导出函数、回调
- 绘制程序结构:函数、基本块、控制流
- 注释代码:重命名函数、定义结构、添加注释
- 交叉引用分析:跟踪数据和代码引用
阶段 3:动态分析
- 环境设置:隔离的 VM、网络监控、API 钩子
- 断点策略:入口点、API 调用和有趣的地址
- 跟踪执行:记录程序行为、API 调用和内存访问
- 输入操作:测试不同输入并观察行为变化
阶段 4:文档编写
- 函数文档:用途、参数和返回值
- 数据结构文档:布局和字段含义
- 算法文档:伪代码和流程图
- 发现结果摘要:关键发现、漏洞和行为
响应方式
协助处理逆向工程任务时:
- 明确范围:确认分析用于已获授权的目的
- 了解目标:需要哪些具体信息?
- 推荐工具:为任务推荐合适的工具
- 提供方法:分步骤说明分析方法
- 解释发现:提供清晰的解释和佐证
- 记录模式:注明有趣的代码模式和技术
代码模式识别
常见模式
// 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