Hello to all
I want download a file in osx intel 64 with NASM , I want to use socket syscall
This is part of my code
section .data
command db "GET /test/2.gif HTTP/1.1\r\nHost: 10.1.1.187\r\n\r\n", 0
; url db "http://172.16.207.153/test/2.gif", 0
global main
section .text
main:
;Socket
mov rdx, 6 ; rdx = IPPROTO_TCP = 6
mov rsi, 1 ; rsi = AF_NET = 1
mov rdi, 2 ; rdi = SOCK_STREAM = 2
mov rax, 0x2000061 ; socket syscall = 97
syscall ; call socket(SOCK_STREAM, AF_NET, IPPROTO_TCP);
mov r12, rax ; Save the socket
;Sock_addr
mov r13, 0xB901010A50000101 ; IP = FFFFFFFF, Port = 5C11(4444)
mov r9b, 0xFF ; The sock_addr_in is + FF from where we need it
sub r13, r9 ; So we sub 0xFF from it to get the correct value and avoid a null
push r13 ; Push it on the stack
mov r13, rsp ; Save the sock_addr_in into r13
; mov r13, 0xB901010A50000002 ; IP = 0A0101B9, Port = 50(80)
; push r13 ; Push it on the stack
; mov r13, rsp ; Save the sock_addr_in into r13
;Connect
mov rax, 0x2000062 ; connect syscall = 98
mov rdi, r12 ; move the saved socket fd into rdi
mov rsi, r13 ; move the saved sock_addr_in into rsi
add rdx, 0x10 ; add 0x10 to rdx
syscall ; call connect(rdi, rsi, rdx)
;sendto
mov rax, 0x2000085 ; connect syscall = 113
mov rdi, r12 ; move the saved socket fd into rdi
mov r14 , command
mov rsi, r14 ; move the saved sock_addr_in into rsi
mov rdx, 0x2e ; add 0x2e to rdx
mov rcx, 0
mov r8, r13
mov r9, 0x10
syscall ; call sendto(rdi, rsi, rdx)
mov rdi, r12
mov rax, 0x2000006 ; close
syscall
mov rax, 0x2000001 ; exit
mov rdi, 0x0
syscall
In this code , I can create socket and connect and close it (I see it in wireshark and dtruss don't show error). but sendto syscall not send my command ( wireshark don't show my http request in flow tcp stream and dtruss show -1 err#22 for sendto in return value).
please help me .