13 Şubat 2017 Pazartesi

mprotect

Giriş
Şu satırı dahil ederiz.
#include <sys/mman.h>
mmap ile bellek alanı ayrılır. Şöyle yaparız.
size_t size = ...;

void *ptr = mmap(0, size, PROT_READ | PROT_WRITE,
  MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);

if (ptr == MAP_FAILED) {
  fprintf(stderr, "%s\n", "mmap failed");
  return NULL;
}

unsigned char code[] = {...}

memcpy(memory, code, sizeof(code));

if (mprotect(ptr, size, PROT_READ | PROT_EXEC) == -1) {
  fprintf(stderr, "%s\n", "mprotect failed");
  return -1;
}

Hiç yorum yok:

Yorum Gönder