我试图在二进制文件中找到一个调用函数,因此我尝试了以下操作:
编译我的代码(用C语言),
使用命令:mips-mti-linux-gnu-objdump -d myapp.elf> objdump.txt
objdump.txt文件中的函数:9d003350: 42000828 myfunction 0x1
现在,我想在myapp.bin中识别这个函数。但是,我明白了:28080042
我试图使用命令:xxd -ps myapp.bin> xxd.txt
只需要找到:28080042
有可能吗?

最佳答案

这是一场冲突。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/

10-11 21:56