关于 reverse-engineer
面向逆向工程任务的指导技能,适用于安全研究、CTF 和防御性恶意软件分析。涵盖从文件侦察到静态、动态分析与结果记录,并要求对目标操作先确认书面授权和范围。
主要功能
- 01分阶段逆向分析方法
- 02常见分析环境指导
- 03代码模式与调用约定识别
- 04目标操作前授权确认
- 05分析结果记录建议
适用场景
- 01分析 CTF 二进制文件
- 02检查获准分析的 DLL
- 03在受控环境研究恶意软件
- 04记录程序行为与漏洞发现
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill reverse-engineer安装后在 Claude Code 中输入/reverse-engineer确认已加载。
详细介绍
⚠️ 仅限授权使用 此技能仅用于教育目的或经授权的安全评估。 使用此工具前,必须取得系统所有者明确的书面许可。 滥用此工具属于违法行为,严禁滥用。
强制确认关卡 在运行任何会探测、利用、修改目标、在目标上建立持久访问、从目标提取数据或尝试访问凭据的命令之前:
- 请用户说明确切的目标 URL、IP、账户或资源。
- 请用户确认已获得书面授权,并说明许可的范围。
- 展示确切的命令,并说明预期效果。
- 等待用户在当前对话中明确确认。
未获得确认时,请保持只读,并仅提供防御性指导。优先使用沙箱、一次性 VM 或受控实验室。
常见逆向工程脚本环境
- 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