【发布时间】:2023-03-22 04:18:01
【问题描述】:
假设我想使用以下操作码进行短跳转:
EB CB 或 JMP rel8
"跳短,RIP = RIP + 8位位移符号 扩展至 64 位”
(其中CB是一个字节有符号值,表示EIP寄存器中与方向相关的相对偏移量)
也许偏移量总是offset+2,因为这个短跳转中执行时间(参考方向)的EIP是双字节指令的基数,但加数occurs always p>
eb 30 = jmp 0x00000032 (+30)
eb e2 = jmp 0xffffffe4 (-30)
那么 EIP 可以故意是同一个方向,因为 fe + 2 是 00 或 EIP。
eb fe = jmp 0x00000000
我发现 overoffset 出现分叉令人惊讶,尽管该数字是负数。但在英特尔我发现没有提及(可能是因为 3000 页)。
英特尔® 64 和 IA-32 架构 软件开发人员手册:卷。 2A 3-423
接近跳跃,跳跃范围从当前 EIP 值限制为 –128 到 +127。
然后我考虑了三种可能性:
- 是+2,因为是EIP在执行时间的之后/未来值
- 编码值不是 2s 分量编码的有符号数。
- 这出现在手册中,但我没有看到,因为我很愚蠢
【问题讨论】: