我试图在二进制文件中找到一个调用函数,因此我尝试了以下操作:
编译我的代码(用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
。
有可能吗?
最佳答案
这是一场冲突。objdump
和xxd
给你相同的字节,它们只是使用不同的端接。
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/