符号执行分析套件
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/symbolic-execution-tools-lr-519w。
技能介绍
要解决的具体问题
符号执行是 CTF 与二进制漏洞分析中的常用手段,但直接让模型编写 angr 脚本往往得到不可用的代码:状态初始化错误导致脚本启动即崩溃,缺少 libc 函数钩子让求解器陷入无意义的路径探索,路径爆炸让执行迟迟无法收敛。本技能把这些易错点固化为可复用的模式。
具体痛点:
- 脚本不稳定:基础模型生成的
angr脚本常因状态初始化错误、缺少 libc 函数钩子而直接崩溃。 - 约束不会解:符号值与具体值混用,导致
Z3求解失败或得到错误答案。 - 执行被卡住:路径爆炸后探索空间失控,脚本长时间无法结束。
技能如何工作
核心流程分四步:
- 选工具:纯逻辑约束交给
Z3;需要寄存器与内存状态、路径探索时用angr;二进制加壳或无法直接加载时先用Unicorn Engine仿真脱壳。 - 初始化状态:加载二进制、建立初始状态,按模板完成符号化输入(stdin、argv 或符号文件)。
- 挂接钩子:对
scanf、printf、malloc、strcmp等 libc 函数套用钩子模板或SimProcedure替换,避免无关调用拖慢探索。 - 求解与收敛:探索结束后把路径约束交给
Z3求解,得到满足条件的输入。
配套的 ANGR_COOKBOOK.md 收录 15+ 个开箱即用的脚本模式,覆盖常见 CTF 场景,并给出路径爆炸管理的优化技巧。遇到反调试检查可路由到 anti-debugging-techniques,做去混淆时路由到 code-obfuscation-deobfuscation,分析自定义 VM 挑战时路由到 vm-and-bytecode-reverse。
适用边界与注意点
- 路径爆炸在复杂程序上仍可能失控,钩子与剪枝只缓解不消除。
SimProcedure替换改变了函数语义,对结果有强依赖的场景需人工复核。- 仿真脱壳只覆盖轻量壳,强混淆或带反仿真的壳需要额外手段。
- 自定义 VM 挑战需先识别字节码语义,
angr无法自动推导 VM 指令。
使用场景
- 拿到加壳的 CTF 二进制,需先用 Unicorn Engine 仿真脱壳,再在解压逻辑上跑符号执行。
- 逆向含反调试检查的程序,需用符号执行把检测条件符号化绕过,继续向目标状态探索。
- 面对含符号化输入的二进制,需构造 stdin/argv 符号化模式并用 Z3 解出合法输入。
- 自定义 VM 挑战中,需用 angr 建立状态后对字节码语义做符号执行求解。
适合人员
- CTF 选手:需要在比赛里快速对二进制挑战做符号执行,拿 flag 而不是手写动态分析脚本。
- 逆向工程师:需要在没有源码的二进制里自动化求解约束,定位隐藏分支与关键输入。
- 安全研究员:需要在漏洞分析中复现或绕过反调试,用符号执行代替手工补丁和动态调试。