如何才能强迫相对偏移量的值?
我知道该怎么做:jmp label_name
想做的事:jmp $0x01
发布于 2012-07-22 20:25:50
语法问题..。Nasm将使用"$ + 5",(G)将使用". + 5",也可能需要"$“(?)。我从最初的标签上了解到,我们在使用纳玛斯?那么"$ + 5“应该是正确的,但可能不会做你想做的事情。asm语法将是"jmp目标“(或用于Gas的"jmp $target”),您将在反汇编中看到同样的情况.但是仔细看看正在生成的字节。"jmp“操作码后面是”距离目标“,而不是”目标“!如果您想编码“距离到目标”,我认为您需要使用"db 0xE8“(或适当的操作码),然后是"db (或dw或dd) 0x??”(我认为“.byte”或".long“表示天然气)。这可能不是你想做的。重新考虑你的密码。
最好,弗兰克
发布于 2012-07-20 20:39:39
您可以使用相对跳转,例如
jmp $+5
它相对于跳跃的开始。
发布于 2020-11-09 02:48:02
下面是我为好玩而做的一个例子。(使用NASM)
BITS 32
segment .text
global _start
_start:
jmp tmp
PUSH 0x68732f
PUSH 0x6e69622f
LEA EBX,[ESP]
; ...
_jumpstop:
tmp equ ($ - _start)
这样,一旦被编译,它就变成了
00000000 E90D000000 jmp 0x12
00000005 682F736800 push dword 0x68732f
0000000A 682F62696E push dword 0x6e69622f
0000000F 8D1C24 lea ebx,[esp]
因此跳转在lea ebx,[esp]
之后立即着陆
https://stackoverflow.com/questions/11586622
复制相似问题