2014-01-09 138 views

回答

4

在-d或-D(反彙編)的objdump輸出內部,通常會有多個只包含省略號的行的實例。這只是因爲上面和下面的字節之間的所有字節都是空的(0x00)。

下面是一個反彙編的32位程序的輸出。 00234(+4)和00240之間的偏移量都是可執行文件內部的0x00。

40022c: 00000034 0x34 
400230: 0000016a 0x16a 
400234: 000001ac 0x1ac 
    ... 
400240: 00000098 0x98 
400244: 00000000 nop 
400248: 000000a9 0xa9 
    ... 
400254: 000000cf 0xcf 

看看我們反彙編的應用程序,你可以看到省略號發生的地方都是空字節。沒有必要多次向用戶輸出這些信息,所以objdump只是簡單地刪除它們。粗體文本是省略號出現的地方。我還應該注意到,如果只有一個空字節部分(32/64位),objdump將根據機器顯示爲nop或類似。

 
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 

00000220          34 00 00 00    4... 
00000230 6A 01 00 00 AC 01 00 00 00 00 00 00 00 00 00 00 j...¬........... 
00000240 98 00 00 00 00 00 00 00 A9 00 00 00 00 00 00 00 ˜.......©....... 
00000250 00 00 00 00 CF 00 00 00       ....Ï... 
2

我已經使用了objdump的-z參數,它抑制了一些零信息的隱藏。你應該看到帶有零的.word參數。

當你將objdump的輸出傳遞給另一個程序時,這似乎很有用。