云涯历险记

热爱可抵万难

云涯历险记

热爱可抵万难

OD攻略

OD攻略:调用堆栈、交叉引用

查看调用堆栈:ALT + K

OD分析时,经常用到栈回溯方法。假设我们在一个函数的入口点images

使用ALT + K查看此函数的父级调用。
images

 

 

 

堆栈调用窗口显示的每一行,代表从上一层函数,进入当前函数的入口,这个功能缺点就是只能在程序运行到某个函数中,并且断下来后,才能使用。

CTRL + K

假设我们有这样的需求,我不想运行到某个函数,只想查看该函数的调用关系。

  • 我想知道谁调用了它?
  • 我想知道它又调用了哪些函数?

这时候使用CTRL+K可以清楚的看到某个函数的上一层,以及这个函数内部调用了那些方法。images

 

 

 

 

 

 

 

 

 

 

  • 第一列 显示的是main函数的上一层函数是谁
  • 第二列 显示的是当前的函数
  • 第三列显示的是当前函数内部调用了那些函数

在任意一列,双击,可以把双击的那一列,作为当前函数,进一步追踪。假设我双击了test.CDemo::CDemo这个函数。

CTRL+R 交叉引用

IDA中有个很强大的功能,就是查看某个函数或者变量的交叉引用。同样OD中也这样的功能
我们在函数的入口点,按下CTRL+R,可以看到谁引用了这个函数入口的地址。

假设我在内存窗口,看到有个重定位的变量地址,先选中它,然后按下CTRL+R。

我可以找到所有引用这个常量的地方,同理,字符串常量也可以。

发表回复