小编use*_*661的帖子

Mac OSX 64 位程序集 - fork() test/jne 不起作用?

我正在尝试编写一个执行fork()系统调用的程序,并且子/父项分别写入不同的字符串和exit(0).

问题是 - 虽然fork()成功了(因为我看到了 2 行输出),但由于某种原因,父进程和子进程都输出了父字符串。

这是代码:

BITS 64

section .data
msg1:    db    "Hello from child", 0x0a
len1:    equ   $-msg1
msg2:    db    "Hello from parent", 0x0a
len2:    equ   $-msg2

section .text
global start

start:
        xor rax,rax
        mov rax,0x2000002    ; fork() syscall
        syscall

        test eax,eax
        jne flow_parent

        mov rax, 0x2000004   ; SYS_write
        mov rdi, 1           ; stdout
        mov rsi, msg1
        mov rdx, len1
        syscall

        xor rdi,rdi
        mov rax,0x2000001
        syscall

flow_parent:
        mov rax, 0x2000004   ; SYS_write …
Run Code Online (Sandbox Code Playgroud)

assembly fork x86-64 system-calls shellcode

3
推荐指数
1
解决办法
763
查看次数

标签 统计

assembly ×1

fork ×1

shellcode ×1

system-calls ×1

x86-64 ×1