#include
#includevoid hoge(){
printf("hoge\n");
}void main(){
void (*foo)();
int *p1;
int *p2;
unsigned int p_i;/* 試しに呼んでみる */
foo = hoge;
foo();p1 = hoge;
/* mprotectに渡すアドレスはページ境界に合わせないといけないため */
p_i = p1;
p2 = p_i & 0xFFFFF000;if(mprotect(p2,0x1000,PROT_WRITE) < 0){
perror("mprotect");
}*p1 = 10;
/* ここでSegmentation Faultで落ちる */
foo();
}