准备:再虚拟机上运行的 Linux桌面或者服务器;去Linux官方下载Linux内核源码。
1. 解压下载的内核源码;
2.
- vim arch/x86/entry/syscalls/syscall_64.tbl
-
更新系统调用表: 增加调用号335的系统调用函数
3: 添加系统调用函数声明
修改arch/x86/include/asm/syscalls.h
4: 在内核源代码添加函数定义
vim kernel/sys.c
5:编译内核
- sudo apt-get install gcc make libncurses5-dev openssl libssl-dev
- sudo apt-get install build-essential
- sudo apt-get install pkg-config
- sudo apt-get install libc6-dev
- sudo apt-get install bison
- sudo apt-get install flex
- sudo apt-get install libelf-dev
6: make menuconfig
之后选择save
并退出。
7 :编译: make -j8
8: 安装模块:
make modules_install
make install
9:切换内核
reboot
重启虚拟机,按住shift
选择进入高级选项。看到我们修改的内核版本去选择它
10:测试系统调用
- #include<stdio.h>
- #include<unistd.h>
- #include<sys/syscall.h>
- int main(){
- syscall(335);
- return 0;
- }
编译后执行,使用 dmesg查看日志: