用途:面向CTF逆向与二进制自动化分析,提供符号执行与约束求解的实战方法,用于恢复密钥、绕过校验、解混淆与自动化分析。
主要能力:angr用于探索二进制控制流并自动管理约束;Z3用于纯数学、方程组与位向量约束求解;Unicorn Engine用于模拟特定代码区域,适合脱壳、解密字符串与短密钥爆破;Qiling用于内核/固件等需要操作系统感知的全系统模拟。资料还给出工具选择表:纯数学用Z3,带控制流的二进制用angr,模拟特定区域用Unicorn,复杂二进制加自定义VM用angr+Unicorn组合,内核/固件用Qiling。
使用方式:angr典型流程为Project→entry_state/blank_state→SimulationManager→explore(find,avoid)→solver.eval;符号输入用claripy.BVS,可约束为可打印ASCII;通过proj.hook或SimProcedure替换printf、scanf、strcmp等函数。Z3用BitVec/Int/Bool与Solver,支持Optimize最小化。Unicorn需mem_map、mem_write、reg_write后emu_start,并可挂载内存与指令钩子。安装命令:pip install angr、pip install z3-solver、pip install unicorn、pip install capstone、pip install keystone-engine。
适用场景:CTF逆向题、密钥恢复、校验绕过、脱壳、字符串解密、混淆函数分析、固件代码模拟。
限制:资料指出常见问题包括路径爆炸导致angr挂起、Z3对复杂非线性约束返回unknown、Unicorn未处理系统调用会崩溃、状态初始化错误导致结果错误、符号内存过大、SimProcedure参数类型不匹配、缺少库导致angr无法加载二进制;对应修复包括添加avoid、拆分约束、设置超时、钩住系统调用、使用auto_load_libs=False并钩住所需符号等。具体版本兼容性与性能数据暂未提供。