汇编代码错误

时间:2012-11-28 14:01:32

标签: assembly

我遇到了这个汇编代码,在尝试编译时,它说有一个错误。对组装不太了解我想知道是否有人可以帮助我。提前谢谢。

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

1 个答案:

答案 0 :(得分:0)

JMP的目的地放置一个标签,然后使用该标签代替常量0x1F。或者,知道指令的长度,使用诸如JMP .+length+offset的构造,在这种情况下长度为2个字节,因此它变为JMP .+0x21。然后将其编码为0xeb 0x1f,这是phrack链接显然想要的。 x86中的相对跳转被编码为从下一条指令开始的偏移量,如果你不知道指令长度,你可以在指令之后放置一个标签,如下所示:

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

(本地标签可能会有所帮助,但在这种特殊情况下,1f+0x1f会非常混乱。)

请注意,在汇编代码时,汇编程序可能会选择您不期望的编码,因此如果您不使用标签,则会弄乱您的偏移量。

相关问题