我想知道rabin2的输出中的crypto,linenum,pcalign,relocs和va值是什么意思。

我看了radare2的源代码,对于ELF va来说似乎总是正确的,我认为这意味着虚拟寻址吗?

https://github.com/radareorg/radare2/blob/1d3698bc96a09e45c4fff4c090278623f146929c/libr/bin/format/elf/elf.c#L2132-L2134



int Elf_(r_bin_elf_has_va)(ELFOBJ *bin) {
    return true;
}


我认为重定位是指重定位表的存在,但是根据我的测试,情况似乎并非如此。

对于linenum,我认为它引用的是与源代码中的行号相关的信息?但是,当ELF二进制文件上没有DWARF信息时,这似乎仍然是正确的。

对于其他2个,我也不知道它们指的是什么。

#1 楼

rabin2的输出肯定有点神秘,这是我所查询的有关组件的一些信息。
crypto
relocs
指示二进制文件执行了运行时重定位
va
指示正在使用虚拟寻址,如果通过-p标志运行rabin2则为false
linenum
ELF二进制文件的DWARF调试部分中存在的行数信息
pcalign
与数据结构对齐有关,可以引用ELF程序头中的p_align成员。 p_align给出在内存和文件中段对齐的值。值0和1表示不需要对齐
某些链接可以提供更多上下文

Rabin2输出
使用radare2反转基础
构建Linux调试器
数据结构对齐