我正在尝试分配内存,sys_brk
这是程序:
BYTES_TO_ALLOCATE equ 0x08
section .text
global _start
_start:
mov rax, 12 ;sys_brk number
mov rdi, BYTES_TO_ALLOCATE
syscall
mov cl, 0x00 ;setting the value I need
mov [rax], byte 0x01 ;SegFault
mov rax, 60
syscall
sbrk()
以递增字节递增程序的数据空间。以 0 为增量调用sbrk()
可用于查找程序中断的当前位置。
运行程序时出现段错误。segfaulted之前的寄存器内容mov
是:
rax 0x401000 4198400
rbx 0x0 0
rcx 0x40008c 4194444
我还尝试rax
按如下方式递减该值:
BYTES_TO_ALLOCATE equ 0x08
_start:
mov rax, 12 ;sys_brk number
mov rdi, BYTES_TO_ALLOCATE
syscall
mov rbx, rax
dec rbx
mov [rbx], byte 0x01 ;Again SegFault
mov rax, 60
syscall
现在,我有点困惑如何使用sys_brk
返回值。我从这里拿走了它。我也尝试使用 value inrcx
但无论如何都会出现段错误。