gpt4 book ai didi

linux - objdump 和 xxd 的区别

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:36 25 4
gpt4 key购买 nike

我试图在二进制文件中找到一个调用函数,所以我尝试了这个:

  1. 编译我的代码(用 C 语言),
  2. 使用命令:mips-mti-linux-gnu-objdump -d myapp.elf> objdump.txt
  3. 我在 objdump.txt 文件中的函数:9d003350: 42000828 myfunction 0x1

现在,我想在从内存中读取时在 myapp.bin 中识别这个函数。但是,我得到了这个:28080042

我尝试使用命令:xxd -ps myapp.bin> xxd.txt就可以找到:28080042

这有可能吗?

最佳答案

那是一个 endianness冲突。 objdumpxxd 为您提供相同的字节,它们只是使用了不同的字节顺序。

Actual bytes in order:
28 08 00 42
Big endian value:
28 08 00 42
Little endian value:
42 00 08 28

xxd -p 将按照它们存在的顺序打印出文件中的各个字节。

objdump 正在反汇编它,它知道字节属于 4 组,并将它们解释为小端。

xxd 可以使用 -e 标志以小端顺序打印(默认分组为 4 个字节,使用 -g 改变每组字节数的标志)。但是,这与 -p 标志不兼容,因为 -p 标志忽略任何分组。

objdump 可以使用 -EB 标志以大端顺序打印,但是,这会影响它报告的指令。

关于linux - objdump 和 xxd 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41227875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com