什么是angr?
加载文件
初始化入口
给入口地址或字节 开始设置模拟执行
告诉程序要执行到的地方
出结果
输出结果
In [1]: import angr In [2]: p = angr.Project("./signal.exe") # 加载文件 In [3]: init_state = p.factory.entry_state() # 初始化入口 In [4]: sm = p.factory.simgr(init_state) # 给入口 开始设置模拟执行 In [5]: sm.explore(find = 0x004017A5) # 告诉程序要执行到的地方 In [6]: found_state = sm.found[0] # 出结果 In [8]: found_state.posix.dumps(0) # 输出结果 # 出flagOut[8]: b'757515121f3d478\x00\x01\x08\x00\x00\x00\x02I\x19\x00\x0c\x00J\x1a\x02\x00\x02\x02\x9a\x01\x00)\x02\x00\x00\x00\x01\x08)*\x00\x00\x08\x83\x08\x00*F\x08\x8a\x00\x08\x02\x00\x08'
angr能够让我们省去逆向的时间,但也有不能用的时候,有其局限性。
文中并没有多介绍angr,在该题中的应用也只是最简单的应用方法。还有大量的相关知识需要学习。
文章系列链接:
题目链接:
https://pan.baidu.com/s/1Cj3DVssh8ZOiZpWax1UDmQ
提取码:9t5k
(题目出自2020网鼎杯青龙组)