2015-04-06 79 views
0

一些拆卸展望,我看到了下面一行:MOVZX 86編碼

0f b7 8c 00 c4 99 86  movzx ecx,WORD PTR [eax+eax*1-0x3e79663c] 

如何拆裝是從編碼所獲得的價值「0x3e79663c」?它看起來不是相對於指令的地址。

望着原始字節,如果我們從0減去0x8699c4,我們得到0xff79663c。該數字的最後3個字節是反彙編程序的內容,但我仍然沒有看到最重要的字節(0x3e)來自哪裏。


更新

原來objdump的是一種奇怪的方式打印出來。由於某種原因,它將缺少的字節打印爲下一個操作碼。

35: 83 c7 01    add edi,0x1 
    38: 0f b7 8c 00 c4 99 86 movzx ecx,WORD PTR [eax+eax*1-0x3e79663c] 
    3f: c1 
    40: 8d 81 30 96 86 c1  lea eax,[ecx-0x3e7969d0] 

感謝Jester找出答案。

+2

這不是下一個操作碼,它只是一個延續線。如果需要,可以使用'--insn-width = 15'設置更寬的顯示。 – Jester

回答

4

您從指令末尾丟失了一個字節。 它應該是0f b7 8c 00 c4 99 86 c1,其偏移量爲0xc18699c4-0x3e79663c

+0

你說得對。我會更新這個問題。 –