Gcc 如何解除对象文件的堆栈?

Gcc 如何解除对象文件的堆栈?,gcc,kernel,elf,strip,Gcc,Kernel,Elf,Strip,如何解除剥离对象文件的剥离 从elfutils解压的eu能为我做这个吗 我需要这个来将zImage内核转换为vmlinux,而无需重新编译 这是我剧本的一部分: magic="1f 8b 08 00" full_line=$(od -A d -t x1 zImage | grep "$magic" ) offset_full_line=$( echo $full_line | cut -f1 -d" ") data_full_line=$( echo $full_line | cut -f1 -

如何解除剥离对象文件的剥离

从elfutils解压的eu能为我做这个吗

我需要这个来将zImage内核转换为vmlinux,而无需重新编译

这是我剧本的一部分:

magic="1f 8b 08 00"
full_line=$(od -A d -t x1 zImage | grep "$magic" )
offset_full_line=$( echo $full_line | cut -f1 -d" ")
data_full_line=$( echo $full_line | cut -f1 -d" " --complement )
index=$[ $( awk -v a="$data_full_line" -v b="$magic" 'BEGIN{print index(a,b)}' ) / 3 ]
offset=$[ 10#$offset_full_line + $index ]

dd if=zImage bs=1 skip=$offset 2>/dev/null | zcat > vmlinux

但是我的结果vmlinux的格式未知,因为它不包含ELF头,所以如何恢复这些头?

你的问题毫无意义。如果对象文件已被剥离,则显然信息不再存在。您没有任何地方可以提取剥离的数据。

这可能是有意义的。他所指的精灵头可能只是让它启动的魔法,而不是用来查找符号。