【发布时间】:2015-01-22 22:29:39
【问题描述】:
我需要为漏洞利用演示制作一个跳转操作码。
我需要在跳转指令之后跳转到大约 200 个字节。这对jmp short 来说太过分了。
如果我生成一个带有常规跳转的操作码,jmp $200 我会得到这个:
e9 fb 01 00 00
这里的问题是操作码包含 00,它在将字符串传递给程序时被解释为字符串的结尾(因此我无法传递包含它的完整 shellcode)。
我以为我的方法搞砸了,但后来I checked the manual 在第二行显然有一个“近跳”,需要 2 个字节(还有另一个需要 4 个字节,我在上面显示的那个)。这两个跳转都以相同的字节 e9 开始。
如何将e9 fb 01 作为只需要两个字节参数的近跳转传递?如何防止操作系统在e9之后查找四个字节,即:e9 fb 01 90 90?
【问题讨论】:
-
为什么需要将程序作为字符串传递?可以用长度前缀字符串吗?
-
寻找四个字节的肯定不是操作系统,而是处理器
标签: assembly x86 exploit opcode