1.给新版内核代码添加系统调用
1.切换root用户
su
2.进入相关目录下载源码包并解压
cd /home/muten/kernel/
wget http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v5.x/linux-5.0.18.tar.xz
tar -xvf linux-5.0.18.tar.xz
3.备份系统调用表
cp -p /home/muten/kernel/linux-5.0.18/arch/x86/entry/syscalls/syscall_64.tbl /home/muten/backup/syscall_64.tbl.5.0.18.bak_20201209
4.修改系统调用表添加系统调用
vim /home/muten/kernel/linux-5.0.18/arch/x86/entry/syscalls/syscall_64.tbl
335 common myaudit __x64_sys_myaudit
5.添加文件/home/muten/kernel/linux-5.0.18/arch/x86/kernel/myaudit.c
使用SYSCALL_DEFINE4宏定义了系统调用在内核的入口
同时申请了两个钩子函数,在内核模块中等待实现.
6.修改/home/muten/kernel/linux-5.0.18/arch/x86/kernel/Makefile
在Makefie中
加入内容obj-y += myaudit.o
7.增加函数声明vim /home/muten/kernel/linux-5.0.18/include/linux/syscalls.h
注意一定要在endif之前添加.
asmlinkage long sys_myaudit(u8,u8 *,u16,u8);
make menuconfig
load
ok
save
ok
exit
exit
extern void (*my_audit)(int,int);
8.添加拦截相关系统调用逻辑
vim /home/muten/kernel/linux-5.0.18/arch/x86/entry/common.c
if(nr==2||nr==3||nr==39||nr==56||nr==57||nr==59){
if(my_audit)
(*my_audit)(nr,regs->ax);
else
printk("my_audit does not exist");
}
如果是我们需要拦截的系统调用号,我们就将其拦截下来,要记录的系统调用号有:
2----open
3----close
39---getpid
56---clone
57---fork
59---exit
如果是我们需要记录的系统调用函数,我们就调用我们之前的钩子函数my_audit;
如果我们还没有在内核模块中实现my_audit,就报"my_audit does not exist"
9.将当前系统的内核配置文件拷贝到新的内核的文件目录下:
[root@localhost boot]# uname -r
4.10.1
cp -p /boot/config-4.10.1 /home/muten/kernel/linux-5.0.18/.config
2.我哭了
现在系统有这几个核,但是新增系统调用进去输入密码后就变黑屏不知道为什么..
其他的还是好好的.
经历了从晚上5点半到凌晨3点的查阅各种资料和尝试解锁,都没有效果,
暂时留住这个问题,他日必定解决!好问题!!!
定位应该是显卡驱动的问题,也许重新下载一个就好了,但我怕原来那个都
搞不能用了,暂时先这样吧.
我一定会回来的!!20201210-16:20
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
我死了!!!!!
还是没有弄出来!!202012092200

881

被折叠的 条评论
为什么被折叠?



