IDA 中的反向引用

逆向工程 艾达
2021-06-15 21:49:35

我正在尝试对二进制文件进行逆向工程。我很想找到它的网络流量,但动态分析失败了。使用 IDA 我能够识别网络调用,但是当我尝试x在几个调用者之后使用快捷方式反转它的调用者时,我卡在了这一点上:

.text:00407230                 dd offset sub_40600C
.text:00407234                 dd offset sub_403C30
.text:00407238                 dd offset nullsub_4
.text:0040723C                 dd offset sub_40601C
.text:00407240                 dd offset sub_4039BC
.text:00407244                 dd offset sub_40C294

我想问一下我怎么才能继续下去。

1个回答

这意味着这些函数是间接调用的(如果曾经调用过的话)。如果这个程序是用 C++ 之类的东西写的,这可能是一个虚函数指针表,无论如何这种代码组织通常代表间接调用使用的函数表。

如果这个程序是用 C++ 编写的,我建议阅读@Igor Skochinsky 的这个演示文稿- 这是非常有教育意义的阅读。

我将按以下步骤进行:

  • 查找对存储函数地址的特定地址的引用。
  • 如果没有人引用它,则在您正在使用的某个地址之前查找第一个地址,并检查对它的所有引用。
  • 您可能会发现从表中间接调用其中一个函数或在类的实例中初始化虚拟函数指针表。