程序逻辑

main

complex_function

分析

让我们的输入 执行到 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))