MPROTECT
Section: ¸®´ª½º ÇÁ·Î±×·¡¸Ó ¸Å´º¾ó (2)
Updated: 1997³â 05¿ù 31ÀÏ
Index
Return to Main Contents
À̸§
mprotect - ¸Þ¸ð¸® ¿µ¿ª¿¡ ´ëÇÑ Á¢±Ù¸¦ Á¦¾îÇÑ´Ù.
»ç¿ë¹ý
#include <sys/mman.h>
int mprotect(const void *addr, size_t len, int prot);
¼³¸í
mprotect´Â
¸Þ¸ð¸® ¿µ¿ª¿¡ ´ëÇÑ Á¢±ÙÀ» Á¦¾îÇÑ´Ù.
¸¸ÀÏ ±× ¿µ¿ªÀ» º¸È£Çϱâ À§ÇØ Á¢±ÙÀÌ Çã¿ëµÇÁö ¾Ê´Â´Ù¸é, ÇÁ·Î±×·¥Àº
SIGSEGV¸¦
¹Þ´Â´Ù.
prot´Â
´ÙÀ½ °ªµéÀÇ ºñÆ® ORÀÌ´Ù:
- PROT_NONE
-
¸Þ¸ð¸®¸¦ Á¢±ÙÇÒ ¼ö ¾ø´Ù.
- PROT_READ
-
¸Þ¸ð¸®¸¦ ÀÐÀ» ¼ö ÀÖ´Ù.
- PROT_WRITE
-
¸Þ¸ð¸®¸¦ ¾µ ¼ö ÀÖ´Ù.
- PROT_EXEC
-
¸Þ¸ð¸®¿¡ ½ÇÇà Äڵ带 µÑ ¼ö ÀÖ´Ù.
»õ·Î ¼³Á¤ÇÑ º¸È£ ¸ðµå´Â ±âÁ¸ÀÇ º¸È£ ¸ðµå¸¦ ´ëüÇÑ´Ù.
¿¹¸¦ µé¾î, ÀÌÀü¿¡ ¸Þ¸ð¸®°¡ PROT_READ·Î Ç¥½ÃµÇ¾î Àִµ¥,
mprotect°¡ prot¸¦ PROT_WRITE·Î È£ÃâµÈ´Ù¸é,
±× ¿µ¿ªÀº ´õ ÀÌ»ó Àбâ Àü¿ëÀÌ ¾Æ´Ï´Ù.
¹Ýȯ°ª
¼º°ø½Ã,
mprotect´Â
0À» ¸®ÅÏÇÑ´Ù. ¿¡·¯½Ã, -1ÀÌ ¸®ÅϵǸç,
errno´Â
Àû´çÇÑ °ªÀ¸·Î ¼³Á¤µÈ´Ù.
¿¡·¯
- EINVAL
-
addr°¡ À¯È¿ÇÑ Æ÷ÀÎÅÍ°¡ ¾Æ´Ï°Å³ª, ¶Ç´Â PAGESIZEÀÇ ¹è¼ö°¡ ¾Æ´Ï´Ù.
- EFAULT
-
¸Þ¸ð¸®¸¦ Á¢±ÙÇÒ ¼ö ¾ø´Ù.
- EACCES
-
¸Þ¸ð¸®°¡ ÁöÁ¤µÈ ¸ðµå·Î ¼³Á¤µÉ ¼ö ¾ø´Ù.
¿¹¸¦ µé¾î, Àбâ Àü¿ë Á¢±ÙÀ» Çϵµ·Ï ÆÄÀÏÀ»
mmap(2)
Çߴµ¥
mprotect°¡
PROT_WRITE¸¦
¿äûÇÒ ¶§ ¹ß»ýÇÑ´Ù.
- ENOMEM
-
³»ºÎ Ä¿³Î ±¸Á¶Ã¼¸¦ ÇÒ´çÇÒ ¼ö ¾ø´Ù.
¿¹Á¦
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/mman.h>
#include <limits.h> /* PAGESIZE ¶§¹®¿¡ */
#ifndef PAGESIZE
#define PAGESIZE 4096
#endif
int
main(void)
{
char *p;
char c;
/* ¹öÆÛ¸¦ ÇÒ´çÇÑ´Ù; ±âº»ÀûÀ¸·Î PROT_READ|PROT_WRITE
º¸È£ ¸ðµå·Î ¼³Á¤µÈ´Ù. */
p = malloc(1024+PAGESIZE-1);
if (!p) {
perror("Couldn't malloc(1024)");
exit(errno);
}
/* PAGESIZEÀÇ ¹è¼ö°¡ µÇµµ·Ï Á¤·Ä; 2ÀÇ Á¦°öÀ¸·Î °¡Á¤ÇÑ´Ù. */
p = (char *)(((int) p + PAGESIZE-1) & ~(PAGESIZE-1));
c = p[666]; /* Àбâ; ok */
p[666] = 42; /* ¾²±â; ok */
/* ¹öÆÛ¸¦ Àбâ Àü¿ëÀ¸·Î ÇÑ´Ù. */
if (mprotect(p, 1024, PROT_READ)) {
perror("Couldn't mprotect");
exit(errno);
}
c = p[666]; /* Àбâ; ok */
p[666] = 42; /* ¾²±â; ÇÁ·Î±×·¥Àº SIGSEGV·Î Á״´Ù. */
exit(0);
}
ȣȯ
SVr4, POSIX.1b (°ø½ÄÀûÀ¸·Î POSIX.4). SVr4´Â EAGAIN ¿¡·¯ ÄÚµåÀ» Ãß°¡ÀûÀ¸·Î
Á¤ÀÇÇÑ´Ù. SVr4 ¿¡·¯ Á¶°ÇÀº ¸®´ª½º¿Í Á¤È®È÷ ´ëÀÀµÇÁö´Â ¾Ê´Â´Ù.
POSIX.1b¿¡¼´Â
mprotect´Â
mmap(2)À¸·Î
È®º¸ÇÑ ¸Þ¸ð¸® ¿µ¿ª¿¡¼¸¸ »ç¿ëµÉ ¼ö ÀÖ´Ù°í ¸»ÇÑ´Ù.
°ü·Ã Ç׸ñ
mmap(2)
¿ªÀÚ
Á¤°ÈÆ <skyeyes@soback.kornet.net>, 2000³â 5¿ù 15ÀÏ
Index
- À̸§
-
- »ç¿ë¹ý
-
- ¼³¸í
-
- ¹Ýȯ°ª
-
- ¿¡·¯
-
- ¿¹Á¦
-
- ȣȯ
-
- °ü·Ã Ç׸ñ
-
- ¿ªÀÚ
-
This document was created by
man2html,
using the manual pages.
Time: 08:07:00 GMT, March 25, 2004