1
2
您正在x86-64系统上使用32位汇编代码。所以,这是您的问题,您必须为x86-64系统创建外壳代码。
32位汇编的主要区别之一是如何使用 系统调用 Linux Syscalls x86-64 您可以查看需要调用哪些寄存器 sys\U execve系统
编译并测试它。
|
2
1
正如在评论中提到的,您的外壳代码是针对32位Linux的,但您正试图在64位系统上运行它。这可能解释了修复后的错误。 |
3
0
你忘了
为了能够在64位系统上编译32位二进制文件,您需要可用的32位库。在基于Ubuntu的系统上,您可以通过以下方式安装它们:
请参阅: https://www.homeworkforyou.com/static_media/uploadedfiles/bufoverflow.pdf |
CH_YUR · 为什么这段代码有分段错误? 2 年前 |
Okonjo Mitchel · CS50凯撒:分段故障问题 2 年前 |
Drin Kurtishi · cs50在线课程中凯撒问题集的问题 2 年前 |
DynamicApproach · 提取exec函数的参数 2 年前 |
Horcrux7 · 如何使用jffi/jnr处理SIGSEGV? 2 年前 |
J.Doe · 向函数传递双指针以获取C中的字符串 6 年前 |