Advertisement
Guest User

Untitled

a guest
Aug 15th, 2023
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .global _main
  2. .align 2
  3.  
  4. _main:
  5.     bl _new_sock
  6.     tbnz x0, #31, _err_exit
  7.     sub sp, sp, #16
  8.     str w0, [sp]
  9.  
  10.     ldr w0, [sp]
  11.     bl _connect
  12.     tbnz x0, #31, _err_exit
  13.  
  14.     ldr w0, [sp]
  15.     bl _send
  16.  
  17.     ldr w0, [sp]
  18.     bl _close
  19.     tbnz x0, #31, _err_exit
  20.  
  21.     add sp, sp, #16
  22.     b _exit
  23.  
  24. _new_sock:
  25.     mov x0, #2 ; AF_INET
  26.     mov x1, #1 ; SOCK_STREAM
  27.     mov x2, #0
  28.     mov x16, #97 ; int socket(int domain, int type, int protocol)
  29.     svc #0
  30.     ret
  31.  
  32. _connect:
  33.     sub sp, sp, #16
  34.     ; sin_len
  35.     mov w8, #0
  36.     strb w8, [sp]
  37.     ; sin_family
  38.     mov w8, #2 ; AF_INET
  39.     strb w8, [sp, #1]
  40.     ; sin_port
  41.     mov w8, #36895 ; htons(8080)
  42.     strh w8, [sp, #2]
  43.     ; sin_addr: 127.0.0.1
  44.     mov w8, #0x007F ; 0.127
  45.     movk w8, #0x0100, lsl #16 ; 1.0
  46.     str w8, [sp, #4]
  47.     ; sin_zero
  48.     mov x8, #0
  49.     str x8, [sp, #8]
  50.  
  51.     mov x1, sp
  52.     mov x2, #16
  53.     mov x16, #98 ; int connect(int s, caddr_t name, socklen_t namelen)
  54.     svc #0
  55.  
  56.     add sp, sp, #16
  57.     ret
  58.  
  59. _send:
  60.     sub sp, sp, #16
  61.     str w0, [sp] ; store fd
  62.  
  63.     adr x0, _msg
  64.     bl _strlen
  65.     str x0, [sp, #4] ; store length of string
  66.  
  67.     ldr w0, [sp]
  68.     add x1, sp, #4
  69.     mov x2, #8 ; size_t
  70.     mov x16, #4 ; user_ssize_t write(int fd, user_addr_t cbuf, user_size_t nbyte);
  71.     svc #0
  72.     tbnz x0, #31, _err_exit
  73.  
  74.     ldr w0, [sp]
  75.     adr x1, _msg
  76.     ldr x2, [sp, #4]
  77.     mov x16, #4 ; user_ssize_t write(int fd, user_addr_t cbuf, user_size_t nbyte);
  78.     svc #0
  79.     tbnz x0, #31, _err_exit
  80.  
  81.     add sp, sp, #16
  82.     ret
  83.  
  84. _close:
  85.     mov x16, #6 ; int close(int fd);
  86.     svc #0
  87.     ret
  88.  
  89. _err_exit:
  90.     mov x0, #1 ; stdout
  91.     adr x1, _err_msg
  92.     mov x2, #20
  93.     mov x16, #4 ; user_ssize_t write(int fd, user_addr_t cbuf, user_size_t nbyte)
  94.     svc #0
  95.  
  96.     mov x0, #1
  97.     mov x16, #1 ; void exit(int rval)
  98.     svc #0
  99.  
  100. _exit:
  101.     mov x0, #0
  102.     mov x16, #1 ; void exit(int rval)
  103.     svc #0
  104.  
  105. _addr:
  106.     .ascii "127.0.0.1"
  107.     .align 2
  108. _msg:
  109.     .asciz "hello"
  110.     .align 2
  111. _err_msg:
  112.     .ascii "Some error occured\n"
  113.     .align 2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement