rendered paste bodybits 64
section .text
mmap equ 9
munmap equ 11 ; asm/unistd_64.h
PROT_READ equ 0x1
PROT_WRITE equ 0x2
MAP_PRIVATE equ 0x02
MAP_ANONYMOUS equ 0x20 ; bits/mman.h
global mmap_alloc
; void *mmap_alloc(size_t size [rdi])
mmap_alloc:
push rbp
mov rbp, rsp
mov rax, mmap
mov rsi, rdi ; size_t length
xor rdi, rdi ; void *addr (NULLujemy zeby dac kernelowi dowolnosc)
mov rdx, PROT_READ | PROT_WRITE ; int prot
mov r10, MAP_PRIVATE | MAP_ANONYMOUS ; int flags
mov r8, -1 ; int fd (ignorowany)
xor r9, r9 ; off_t offset (ignorowany)
sysenter
mov rsp, rbp
pop rbp
ret
global mmap_free
; int mmap_free(void *addr [rdi],size_t size [rsi])
mmap_free:
push rbp
mov rbp, rsp
mov rax, munmap
; wszystko jest juz w odpowiednich rejestrach
syscall
mov rsp, rbp
pop rbp
ret