IDA中vtable中的“nullsub_XXX”是什么

逆向工程 艾达 C++ 静态分析 虚表
2021-06-22 17:28:46

当我在 IDA pro 中查看 vtable 结构时,我知道这___cxa_pure_virtual意味着该函数是虚拟的。

但是nullsub_XXX在 vtable 结构什么意思呢?

1个回答

欢迎来到逆向工程堆栈交换问答网站!虽然你只是问了nullsub_,但你描述的___cxa_pure_virtual有点不正确,所以我也描述一下

空子_X

通过为某些类型的函数添加前缀或名称,IDA 会根据函数的实现为函数提供有意义但通用的名称

一种这样的情况是nullsub,它是(在分析阶段)自动赋予所有函数的名称。意思是只返回而不做任何事情的函数

此外,由于名称在 IDA 中是唯一的,当使用中的名称设置为函数时,IDA 将在其后加上下划线,然后是自动递增的数字(从 1 开始)。

如果您想知道为什么首先应该存在这样的函数,这篇文章会非常认真地回答这个问题。

___cxa_pure_virtual

这是一个由libstdc++(并且类似的函数由其他 C++ 标准库实现)作为虚函数表中虚函数的占位符实现的函数。

尽管纯虚函数没有实现,但编译器无法消除在运行时调用纯虚函数的风险,因此诸如此类的存根___cxa_pure_virtual用作所有纯虚函数的占位符,因此如果发生这种情况一个纯虚函数将在运行时被调用,有一个显式的处理(程序终止时经常发生一些有意义的崩溃)。