sockets - 如何在程序集的套接字编程中找到参数的值?
问题描述
我正在尝试为 ARM 进行套接字编程,但是我无法理解参数的值是如何确定的。例如,这是Azeria Labs 的链接, 我知道 ARM 寄存器 R7 的 sys 调用得到了它,因此在这种情况下它的 281 和参数是使用 R0、R1、R2、R3 传递的。但是在这里,您如何在创建套接字(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 Thu Dec 1 14:44:23 IST 2016 armv6l GNU/Linux
解决方案
推荐阅读
- python - python - 如何使用pandas在python中的直方图上绘制特定范围的值?
- docker - 为什么 WLP installUtility 无法从功能存储库中获取资产?
- linux - sudo: 对不起,你不能设置以下环境变量
- c# - Windows 自定义缩放打破了 Winform 应用程序的外观
- javascript - 如何获取Angular(10+)中的所有复选框值?
- excel - 在excel中将时间戳列拆分为单独的日期和时间列
- boolean-algebra - 布尔代数 - 两个操作的定义/三个操作的定义
- regex - 如何编写一个 sed 函数来查找不在 OS X 上的引号之间的字符
- python - 为什么不能像定义中那样实现定点组合器?
- android - Recycler View 不会在 AVD 上生成