angr simulation manager step函数

angr simulation manager step函数

关于该函数的num_inst参数的具体含义是什么?
我查看了angr的源码,进行了如下解释。

img


对于angr的step,每次前进一个block,因此我认为不设置num_inst或者设置num_inst大于当前的块的语句个数的情况下都仅仅只是前进了一个block
假设当前的block含有两个语句,但我的实验结果却和我的想法不一致。

>>> simgr6 = project.factory.simulation_manager(thing=state)
>>> simgr7 = project.factory.simulation_manager(thing=state)
>>> simgr8 = project.factory.simulation_manager(thing=state)
>>> simgr6.step()
with 1 active>
>>> simgr7.step(num_inst=2)
with 1 active>
>>> simgr8.step(num_inst=10)
with 1 active>
>>> simgr6.active
[]
>>> simgr7.active
[]
>>> simgr8.active
[]
>>> 

烦请大家帮忙看一下到底是哪里出现问题,谢谢大家

回答不易,求求您采纳点赞哦

ngr Simulation Manager函数中的num_inst参数step表示当前状态下要模拟的指令条数。当num_inst未指定或设置为大于当前块中指令数的值时,angr 将模拟整个块。

如果您的实验结果与您的预期不同,则可能有其他因素影响了模拟结果。您可以尝试检查以下内容:

  • 块大小:块的大小可能并不总是相同的,并且可能取决于各种因素,例如体系结构、优化和代码结构。

  • 其他状态:在angr中,可以并行模拟多个状态。确保您正在使用正确的状态,并且其他状态不会影响您的模拟。

  • 状态选项:模拟的行为也会受到状态选项的影响,例如内存结尾、寻址模式等。检查状态选项是否设置正确。

  • 输入:模拟也可能取决于提供给模拟的输入。确保输入正确并符合您的期望。

总的来说,在使用angr进行逆向工程和二进制分析时,一定要深入了解angr的底层实现和配置。