将符号名称与 .PLT 条目相关联

逆向工程 艾达 小精灵 拿到 血小板
2021-06-09 23:06:20

弄乱 ELF(x86 和 ARM 版本)。

将符号名称与该.got部分中的条目相关联很简单。找到.got节,找到重定位节.rel.plt/.rela.plt.sh_info包含 的索引.got,并找到.dynsym包含符号名称的符号节

这些部分之间的所有内容都排列得很好,我可以准确地将符号名称分配给.got.

但是,我还需要该.plt部分中存根的名称大致百分比的时间,.plt可以根据.got符号的顺序和与.plt的基部的偏移量推断出 的符号无论出于何种原因,有时情况并非如此。

Binutilsobjdump可以为 x86 准确生成它们,IDA 可以为 x86 和 ARM 准确生成它们(均无需-g调试符号)。这些是如何产生的?

在IDA的情况下,我可以合理地假定有一些先进的逻辑会基于在说明解释.plt,但我知道不能成为情况objdump

1个回答

看到这个线程基本上,它们依赖于这样一个事实,即 PLT 重定位的顺序与.plt节中存根的顺序相匹配,并且存根的大小都相同。

在某些平台上,您还可以使用st_value动态符号表中的符号条目。

IDA 实际上通常不依赖于符号/重定位的顺序,而是检查存根中的实际指令。