我有专门的指令将"/bin/sh“的8字节十六进制值存储在%rax寄存器中。
因此,8个字节意味着64位。因此,我的第一个方法是使用movq命令。但是我不能确定如何正确地格式化命令。
/bin/sh十六进制为: 2f 62 69 6e 2f 73 68,仅占用7个字节。是否存在某种类型的空结束符或填充,我必须正确地在其中写入命令?
# Write the 8-byte hex value for "/bin/sh" to %rax register
movq $0x68732f6e69622f, %rax最终,该命令将由syscall使用
谢谢!
发布于 2019-04-17 01:26:59
寄存器是一个特殊的大小,所以无论你做什么,它都会占用64位。它将有效地在高阶比特中填充零。将$0x1移入时,最低值为一位,其余为零。
你不会“空终止”这些值,这将会产生一些任意因子乘以的效果。显然,$0x1000与$0x0001不是一回事。
https://stackoverflow.com/questions/55713487
复制相似问题