All pastes #1910505 Raw Edit

Miscellany

public text v1 · immutable
#1910505 ·published 2010-07-28 23:02 UTC
rendered paste body
bits 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