IDA 交叉引用
转载自https://blog.csdn.net/hgy413/article/details/50594320
XREF分类
CODE XREF:代码交叉引用
DATA XREF:数据交叉引用
XREF描述含义
- 这是个代码交叉引用
- sub401000是被引用者,main+2A是引用者(引用sub401000的位置)
- 下箭头表示引用者的地址比sub401000高,你需要向下滚动才能到达引用者地址(main+2A),上行反之
- 每个交叉引用注释都包含一个单字符后缀(箭头后面),用以说明交叉引用的类型,这里是↓P
CODE XREF
代码交叉引用用于表示一条指令将控制权转交给另一条指令。
在IDA中,指令转交控制权的方式叫做流(flow)
IDA中有3种基本流:
-
普通流:两条相邻指令的顺序执行
(虚线分隔,表示两条相邻指令间没有普通流) -
调用流:函数调用,后缀↓p(看做是Procedure)
-
跳转流:无条件分支跳转和条件分支跳转,后缀↑j(看做是Jump)
DATA XREF
数据交叉引用与IDA数据库中虚拟地址的字节有关
数据交叉引用与栈变量毫无关系
最常用的3种数据交叉引用:
- 数据被读取(读取交叉引用):使用后缀↑r(看做是Read)
- 数据被写入(写入交叉引用):使用后缀↑w(看做是Write)
- 数据的地址被使用(偏移量交叉引用):使用后缀↑o(看做是Offset)