- システムコールテーブルのメモリアドレスsys_call_tableにカーネルメモリを見ると、関数のメモリアドレスをスワップ
- より/boot/System.map-4.15.0-66-generic(4.15.0-66-ジェネリックカーネルバージョンは、あなたがのuname -rで見ることができます):システムファイルの一部を通じて
asmlinkage long (*real_mkdir)(const char __user *pathname,umode_t mode);
asmlinkage long myself_mkdir(const char __user *pathname, umode_t mode)
{
....
}
write_cr0(read_cr0() & (~0x10000)); //关闭内存保护
real_mkdir = (void *)sys_call_table[__NR_mkdir]; //real_mkdir 原mkdir调用的系统调用函数,提前保存原函数。
sys_call_table[__NR_mkdir] = myself_mkdir; //将自定义的mkdir函数进行赋值给sys_call_table[__NR_mkdir] 。
write_cr0(read_cr0() | 0x10000); //开启内存保护