问题描述
这是一个在汇编代码中没有 int 0x80 的情况下运行 syscall sys_execve 的示例,因此,我的目的是在 EIP 寄存器中设置堆栈指针寄存器 (ESP) 地址。假设 0x80cd(int 0x80 = 0xcd80,但我们需要在小端)在栈顶。
代码前的注册状态为:
*EAX 0xb
EBX 0xffffd144 ◂— '/bin//sh'
ECX 0xffffd13c —▸ 0xffffd144 ◂— '/bin//sh'
EDX 0xffffd140 ◂— 0x0
EDI 0x0
ESI 0x0
EBP 0x0
ESP 0xffffd138 ◂— 0x80cd
*EIP 0x8049022 (_start+34) ◂— call esp
此刻我有以下内容(显然,我知道这些代码片段的变体可能具有不同的寄存器,但使用相同的指令):
1-
push esp
ret
2-
lea edi,[esp]
jmp edi
3-
call esp
我想知道更多代码片段来执行此操作。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)