-3
我遇到了這個彙編代碼,當試圖編譯它時說它有錯誤。對裝配不太瞭解,我想知道是否有人可以幫助我。提前致謝。彙編代碼錯誤
JMP 0x1F
POPL %ESI
MOVL %ESI, 0x8(%ESI)
XORL %EAX, %EAX
我遇到了這個彙編代碼,當試圖編譯它時說它有錯誤。對裝配不太瞭解,我想知道是否有人可以幫助我。提前致謝。彙編代碼錯誤
JMP 0x1F
POPL %ESI
MOVL %ESI, 0x8(%ESI)
XORL %EAX, %EAX
在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
本來會令人困惑。)
請注意,彙編代碼時,彙編器可能會選擇一種您不期望的編碼,因此如果您不使用標籤,就會弄亂您的偏移。
什麼是錯誤以及您使用的彙編程序/體系結構是什麼?另外,我建議重新格式化您的代碼,以便更清楚地看到所有內容都在這裏。 – RonaldBarzell
完整的代碼可以在http://www.phrack.com/issues.html?issue=49&id=14找到。 – melpomene
我原來格式化了它,但忘記在帖子中將其標記爲「代碼」 –