2012-11-28 77 views
-3

我遇到了這個彙編代碼,當試圖編譯它時說它有錯誤。對裝配不太瞭解,我想知道是否有人可以幫助我。提前致謝。彙編代碼錯誤

JMP 0x1F 
POPL %ESI 
MOVL %ESI, 0x8(%ESI) 
XORL %EAX, %EAX 
+2

什麼是錯誤以及您使用的彙編程序/體系結構是什麼?另外,我建議重新格式化您的代碼,以便更清楚地看到所有內容都在這裏。 – RonaldBarzell

+1

完整的代碼可以在http://www.phrack.com/issues.html?issue=49&id=14找到。 – melpomene

+0

我原來格式化了它,但忘記在帖子中將其標記爲「代碼」 –

回答

0

JMP的目的地並使用它的不斷0x1F放置一個標籤。或者,知道指令的長度,使用構造如JMP .+length+offset,在這種情況下,長度是2個字節,因此它變成JMP .+0x21。這將被編碼爲0xeb 0x1f,這是phrack鏈接顯然需要的。在86相對跳轉被編碼爲從下一條指令的開始偏移,如果你不知道的指令長度,你可以把一個標籤的指令後,像這樣:

JMP next+0x1f 
next: 
POPL %ESI 
MOVL %ESI, 0x8(%ESI) 
XORL %EAX, %EAX 

(局部標籤可能會有所幫助,但在這種特殊情況下1f+0x1f本來會令人困惑。)

請注意,彙編代碼時,彙編器可能會選擇一種您不期望的編碼,因此如果您不使用標籤,就會弄亂您的偏移。