bind to unix socket
This commit is contained in:
parent
e855248606
commit
e3ab67013e
2 changed files with 72 additions and 14 deletions
62
hello.s
62
hello.s
|
@ -1,27 +1,83 @@
|
|||
global _start
|
||||
|
||||
; constants
|
||||
SYS_READ equ 0
|
||||
SYS_WRITE equ 1
|
||||
SYS_SENDFILE equ 40
|
||||
SYS_SOCKET equ 41
|
||||
SYS_ACCEPT equ 43
|
||||
SYS_BIND equ 49
|
||||
SYS_LISTEN equ 50
|
||||
SYS_EXIT equ 60
|
||||
STDOUT equ 1
|
||||
AF_UNIX equ 1
|
||||
SOCK_STREAM equ 1
|
||||
|
||||
SECTION .data
|
||||
hello db "Hello world!", 0x0a
|
||||
hello_len equ $ - hello
|
||||
server_path db "server.sock", 0x00
|
||||
server_path_len equ $ - hello
|
||||
sockaddr_len equ 110 ; $ man 7 unix
|
||||
|
||||
SECTION .bss
|
||||
sockaddr resb sockaddr_len
|
||||
|
||||
SECTION .text
|
||||
|
||||
_start:
|
||||
; syscall(SYS_WRITE, STDOUT, hello, hello_len);
|
||||
mov rax, SYS_WRITE
|
||||
mov rdi, STDOUT
|
||||
mov rsi, hello
|
||||
mov rdx, hello_len
|
||||
syscall
|
||||
|
||||
make_server:
|
||||
mov rax, SYS_SOCKET
|
||||
mov rdi, AF_UNIX
|
||||
mov rsi, SOCK_STREAM
|
||||
mov rdx, 0
|
||||
syscall
|
||||
push rax
|
||||
|
||||
; syscall(SYS_EXIT, <sys_write return value> - hello_len);
|
||||
call make_sockaddr
|
||||
pop r10
|
||||
|
||||
mov rax, SYS_BIND
|
||||
mov rdi, r10
|
||||
mov rsi, sockaddr
|
||||
mov rdx, sockaddr_len
|
||||
syscall
|
||||
|
||||
mov rax, SYS_LISTEN
|
||||
mov rdi, r10
|
||||
mov rsi, 100
|
||||
syscall
|
||||
|
||||
mov rax, SYS_ACCEPT
|
||||
mov rdi, r10
|
||||
mov rsi, 0
|
||||
mov rdx, 0
|
||||
syscall
|
||||
push rax
|
||||
|
||||
exit:
|
||||
mov rax, SYS_EXIT
|
||||
pop rdi
|
||||
sub rdi, hello_len
|
||||
syscall
|
||||
|
||||
make_sockaddr:
|
||||
mov word [sockaddr], AF_UNIX
|
||||
mov rax, 0
|
||||
|
||||
make_sockaddr__copy_server_path:
|
||||
cmp rax, server_path_len
|
||||
jge return
|
||||
mov r10, [rax+server_path]
|
||||
add rax, 2
|
||||
mov [rax+sockaddr], r10
|
||||
sub rax, 1
|
||||
jmp make_sockaddr__copy_server_path
|
||||
|
||||
return:
|
||||
ret
|
||||
|
|
|
@ -6,3 +6,5 @@ https://x64.syscall.sh/
|
|||
https://web.stanford.edu/class/cs107/resources/x86-64-reference.pdf
|
||||
https://ggbaker.ca/295/x86.html
|
||||
https://josemariasola.github.io/reference/assembler/Stanford%20CS107%20Guide%20to%20x86-64.pdf
|
||||
|
||||
https://www.bencode.net/blob/nasmcheatsheet.pdf
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue