【发布时间】:2017-06-11 12:01:43
【问题描述】:
bits 32
section .text
global _start
_start:
;socket
mov eax, 0x66
mov ebx, 0x1
push 0x0
push 0x1
push 0x2
mov ecx, esp
int 0x80
;bind
mov edx, eax
xor eax, eax
mov eax, 0x66
mov ebx, 0x2
push word 0x0
push word 0x5c11
push word 0x2
mov ecx, esp
push 0x16
push ecx
push edx
int 0x80
;listen
push eax
mov eax, 0x66
mov ebx, 0x4
push edx
mov ecx, esp
int 0x80
;accept
push eax
push eax
push edx
mov ecx, esp
int 0x80
$ nasm -f elf32 socket.asm ; ld -m elf_i386 -o socket socket.o
$ ./socket
Segmentation fault (core dumped)
我已经在 Ubuntu 16.04 Desktop x86_64 上编译了二进制文件。
有什么想法吗?
【问题讨论】:
-
我有一个想法:使用调试器找出问题所在。
-
我和格雷先生在一起,您可以使用多种语言的调试器来躲避,但不能使用汇编。
-
通过使用调试器,我注意到 rip 被不存在的地址覆盖。所以我在最后添加了一个出口,现在我没有收到任何分段错误。对吗?
标签: sockets assembly segmentation-fault x86-64