让我们的输入 执行到 puts("Good Job.");
程序就是正确的
让程序通过所有约束到达 puts("Good Job.");
这个位置
找到我们需要的位置
# -*- encoding: utf-8 -*-
from __future__ import print_function
import angr
'''
@文件 :angr_exp.py
@时间 :2020/04/22 21:26:34
@作者 :0xc4m3l
'''
p = angr.Project("./00_angr_find") # 创建一个工程
init_state = p.factory.entry_state() # 初始化 入口点
sm = p.factory.simulation_manager(init_state) # 从 init_state 初始状况开始执行
# 要让程序执行到 0x08048678 push offset aGoodJob ; "Good Job." 正确后到的地方
sm.explore(find=0x08048678)
# 找到的会被保存在 found[0] 中
found_state = sm.found[0]
# 得到这个情况下的输入 0 输出为 1
print(found_state.posix.dumps(0))