2016-12-19 120 views
0

我試圖找到一個二進制文件的調用函數,所以我想這:差異與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

有沒有可能這樣做?

回答

0

這是一個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組,它將它們解釋爲little-endian。

xxd可以使用-e標誌(使用默認的4字節分組,使用-g標誌來更改每個組的字節數)使用little-endian順序進行打印。但是,這與-p標誌不兼容,因爲-p標誌忽略任何分組。

objdump可以使用-EB標誌以big-endian順序打印,但是,這會影響它報告的指令。