在不写 int 0x80

问题描述

这是一个在汇编代码中没有 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...