如何在Assembly中的套接字编程中找到参数的值?

时间:2019-08-31 13:01:59

标签: sockets assembly arm

我正在尝试为ARM进行套接字编程,但是我无法理解如何确定参数的值。 例如 这是Azeria Labs enter image description here的链接 我知道对ARM寄存器R7的系统调用得到了它,因此在这种情况下为281,并且使用R0,R1,R2,R3传递参数。但是在这里,如何在创建 socket(AF_INET,SOCK_STREAM,0)时将R0(AF_INET)的值确定为2,将R1(SOCK_STREAM)的值确定为1。 查找系统调用很容易

$ grep socket /usr/include/asm/unistd-common.h
#define __NR_socket                 (__NR_SYSCALL_BASE+281)
#define __NR_socketpair             (__NR_SYSCALL_BASE+288)

类似地,有一种方法可以找到参数的值? 我找到了另一个用于X86 Assembly的资源,它也具有类似的方法。

%assign SOCK_STREAM         1
%assign AF_INET             2
%assign SYS_socketcall      102
%assign SYS_SOCKET          1
%assign SYS_CONNECT         3
%assign SYS_SEND            9
%assign SYS_RECV            10

section .text
  global _start

;--------------------------------------------------
;Functions to make things easier. :]
;--------------------------------------------------
_socket:
  mov [cArray+0], dword AF_INET
  mov [cArray+4], dword SOCK_STREAM
  mov [cArray+8], dword 0
  mov eax, SYS_socketcall
  mov ebx, SYS_SOCKET
  mov ecx, cArray
  int 0x80
  ret

请告诉我。 谢谢。

  

Linux alarmpi 4.4.34+#3 12月1日星期四14:44:23 IST 2016 armv6l GNU / Linux

0 个答案:

没有答案