0
1 | from angr import *#导入angr框架 |
简单探索(Simple Exploration)
符号执行最普遍的操作是找到能够到达某个地址的状态,同时丢弃其他不能到达这个地址的状态。SM为使用这种执行模式提供了捷径:
.explore()
方法。当使用find
参数启动.explore()
方法时,程序将会一直执行,直到发现了一个和find
参数指定的条件相匹配的状态。find
参数的内容可以是想要执行到的某个地址、或者想要执行到的地址列表、或者一个获取state作为参数并判断这个state是否满足某些条件的函数。当active
stash中的任意状态和find
中的条件匹配的时候,它们就会被放到found
stash中,执行随即停止。之后你可以探索找到的状态,或者决定丢弃它,转而探索其它状态。你还可以按照和find
相同的格式设置另一个参数——avoid
。当一个状态和avoid
中的条件匹配时,它就会被放进avoided
stash中,之后继续执行。最后,num_find
参数指定函数返回前需要找到的符合条件的状态的个数,这个参数默认是1。当然,如果active
stash中已经没有状态可以执行,那么不论有没有找到你指定的状态个数,都会停止执行。
SimState类
p.factory.entry_state(),sm.found[0]同属于SimState类
posix – MISNOMER: 操作系统或者环境模型的表示 (包含stdin(0),stdout(1),stderr(2))
posix.dumps()用于导出posix中的输入输出、错误,参数就是对应的数据标号
- 标题: 0
- 作者: runwu2204
- 创建于 : 2023-12-31 17:10:02
- 更新于 : 2023-12-31 18:00:52
- 链接: https://runwu2204.github.io/2023/12/31/Re/分析工具/angr分析框架/angr_ctf/00/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论