[英]Differences between objdump and xxd
我試圖在二進制文件中找到調用函數,所以我嘗試了以下方法:
mips-mti-linux-gnu-objdump -d myapp.elf> 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為一組,並將其解釋為little-endian。
xxd
可以使用-e
標志(缺省分組為4個字節,使用-g
標志更改每組的字節數)以低位字節序打印。 但是,這與-p
標志不兼容,因為-p
標志會忽略任何分組。
可以使用-EB
標志使objdump
以大端順序打印。但是,這將影響它報告的指令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.