簡體   English   中英

objdump和xxd之間的區別

[英]Differences between objdump and xxd

我試圖在二進制文件中找到調用函數,所以我嘗試了以下方法:

  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

有可能這樣做嗎?

那是字節順序沖突。 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為一組,並將其解釋為little-endian。

xxd可以使用-e標志(缺省分組為4個字節,使用-g標志更改每組的字節數)以低位字節序打印。 但是,這與-p標志不兼容,因為-p標志會忽略任何分組。

可以使用-EB標志使objdump以大端順序打印。但是,這將影響它報告的指令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM