符号执行指南
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/symbolic-execution-tools-exlk。
技能介绍
解决什么问题
在使用 angr 做符号执行时,直接写出的脚本往往运行失败或陷入死循环。常见问题包括:未正确初始化内存状态、缺少对 libc 函数(如 scanf、printf)的 SimProcedure Hook,以及面对循环分支时发生的路径爆炸(Path Explosion)。
核心能力与工作流
本技能提供了一套工程化的分析手册,核心基于 angr、Z3 与 Unicorn Engine 三大组件。
- 工具选型:纯数学方程使用
Z3;含控制流的二进制用angr;局部代码模拟或脱壳优先选Unicorn;复杂环境结合两者使用。 - 关键操作:
使用 claripy 构建符号变量并管理约束。
配置 Hook 替换复杂函数,或使用 SimProcedure 简化外部调用。
利用 Concrete + Symbolic 混合模式加速执行,非符号部分由 Unicorn 原生运行。
运用 find/avoid 策略配合 LAZY_SOLVES 或 Veritesting 解决路径爆炸。
适用边界与注意点
- 环境配置:处理复杂二进制时需确认初始内存布局准确,必要时设置
auto_load_libs=False以避免加载干扰。 - 异常排查:Z3 求解超时(
unknown)通常源于非线性约束过复杂,建议拆解问题或设置超时参数。 - 兼容性:SimProcedure 需严格匹配调用约定(如
cdecl或fastcall),避免参数类型不匹配导致的错误。
使用场景
- 解CTF密码题时遇到纯数学方程组,需要利用Z3直接求解变量
- 分析包含控制流的二进制文件,用angr自动探索路径并管理约束
- 逆向加壳程序时,需用Unicorn引擎模拟执行代码段以完成脱壳
- 处理固件或内核代码时,利用Qiling进行具备OS感知的全系统模拟
适合人员
- CTF参赛者,需要在比赛中快速自动求解复杂的逆向题目
- 二进制安全研究员,致力于分析恶意软件和固件的底层逻辑
- 逆向工程开发者,希望掌握angr与Unicorn等自动化分析工具