假设我有 elf 二进制输出中某个字符串或符号的地址,strings -a
并且想知道该地址位于哪个部分。
通常,我会手动objdump -h
查找包含该地址的部分地址范围。然而,这既容易出错,又极其缓慢。
有更简单的方法来执行此任务吗?
答案1
如果您知道要查找的地址(作为二进制文件中的偏移量),则可以使用如下内容:
objdump -h /path/to/binary |
awk -v target=address 'BEGIN { target = strtonum("0x" target) }
NF > 1 {
if (typeof($1) == "strnum") {
if (strtonum("0x" $6) <= target) { section = $2 }
}
}
END { print section }'
替换address
为十六进制地址。
可以通过更改字段 ( $6
) 来调整此值以搜索虚拟地址而不是二进制偏移量。