angr ddg 实例解析

对于如下的汇编代码

img


使用angr的DDG分析工具产生了粉色方框所示的两条数据依赖,粉色方框中的内容由左到右分别代表
block地址(指令地址),block地址(指令地址),DDG对于该条数据依赖解析出的内容

img

1.为什么语句41cd0f和41cd17之间存在依赖关系?我理解的是应该使用到了41cd0f修改了的寄存器rdx才算存在依赖关系

2.找到的一个关于DDG的定义,请问上述依赖关系是否属于这三个中的其中一个?

img

3.在何种情况下,才说两个指令之间存在数据依赖?

1.指令41cd0f修改了寄存器rdx的值,41cd17的指令使用了寄存器rdx的值,因此这两个指令之间存在数据依赖关系。

2.上述依赖关系属于数据依赖中的“真依赖”。真依赖指的是后续指令依赖于前面指令修改的数据的依赖关系。

3.两个指令之间存在数据依赖的情况包括以下三种:

真依赖:后续指令依赖于前面指令修改的数据。
假依赖:后续指令需要前面指令的结果,但是前面指令并未修改内存或寄存器。
控制依赖:后续指令的执行受前面指令条件分支的影响。