X86 一次推一个常量一个字节
我正在尝试使用x86汇编来了解更多信息。我正在生成一个shell,我想将“/bin/sh”推到堆栈上,但我想一次推一个字节,我不确定这是否可行。例如,假设字符串为0x11223344。我能做X86 一次推一个常量一个字节,x86,X86,我正在尝试使用x86汇编来了解更多信息。我正在生成一个shell,我想将“/bin/sh”推到堆栈上,但我想一次推一个字节,我不确定这是否可行。例如,假设字符串为0x11223344。我能做 PUSH 0x11223344 我想要相同的功能,但不是一次推整个常量,我不能 PUSH 0x11 PUSH 0x22 PUSH 0x33 PUSH 0x44 (little endian order) 我尝试先推0x44,但它仍然不适合我。如果我一次推送整个字符串,我的shell就会生成,但如果我一次
PUSH 0x11223344
我想要相同的功能,但不是一次推整个常量,我不能
PUSH 0x11
PUSH 0x22
PUSH 0x33
PUSH 0x44
(little endian order)
我尝试先推0x44,但它仍然不适合我。如果我一次推送整个字符串,我的shell就会生成,但如果我一次推送一个字节,则不会生成。这可能吗?(忽略没有终止字符的事实,我故意不在问题中添加它,因为这不是问题所在)不,你可以在最短的时间内推一个单词。有没有特别的原因让你不能再推一次?我很好奇是什么迫使你单独做这件事。没有理由。只是想看看有没有可能。我确实发现我实际上可以推送这些值,但它们的排列方式与我认为的不同。我想要一些帮助来弄清楚如何按顺序排列字节,尽管我之所以可以推送这些小值,是因为x86有一个8位立即数的推送指令。所以理论上我可以继续推8位立即数,形成32位立即数,这和推32位立即数是一样的。如果这是正确的,我的堆栈应该有正确的值,但是它的NPT采用8位立即数的push将其扩展到操作数大小,没有8位push。