Socket 打开 macOS x86-64 组件

问题描述 投票:0回答:1

我尝试在 NASM 中创建套接字,但没有任何反应,而在 C 中一切正常。

我的C代码:

#include <sys/socket.h>
#include "personalUtils.h"

int main() {
    int fd = socket(AF_INET, SOCK_STREAM, 0);
    tryElse(fd, "Error creating a socket"); //macro

    pauseHere() //macro
}

运行此命令后,我打开终端并运行,

lsof -i -a -p <PID>
,套接字就在那里,但尝试运行下面的 NASM 代码并再次调用 lsof 时,没有列出任何内容。我做错了什么?

%include "utils.asm"

;#################################
;       Usefull constants
;#################################
AF_INET      equ 2   ; family internetwork to UDP, TCP, etc
SOCK_STREAM  equ 1   ; stream socket
NO_FLAGS     equ 0

;#################################
;       Main function call
;#################################
        global      _main
        SECTION     .text

_main:  mov rax, 0x2000097
        mov rdi, AF_INET
        mov rsi, SOCK_STREAM
        mov rdx, NO_FLAGS
        syscall

        pauseHere ; NASM macro
c macos assembly terminal nasm
1个回答
0
投票

加载到 rax 的正确套接字(2)值是 0x2000061。它记录在https://github.com/radareorg/radare2/blob/master/libr/syscall/d/darwin-x86-64.sdb.txt

请参阅 MacOS 程序集的 64 位系统调用文档,了解有效的 write(2)。

© www.soinside.com 2019 - 2024. All rights reserved.