增加Linux系统调用
大家帮忙看下这个题:
修改已经编译成功的内核,为其增加新的系统调用
实现系统调用noexec,用它设置进程允许执行exec系统调用的次数。该系统调用能用来防止一些缓冲区溢出攻击,这些攻击最终通过exec产生一个shell界面。原型如下:
int noexec(int nexec);
参数nexec含义如下:
nexec == 0, 执行exec将失败。
nexec == n, n>0, 可以执行n次exec。
nexec == -1, 执行exec的次数没有限制。
nexec == 其它值, 不改变允许执行exec系统调用的次数。
系统调用的返回值是本次noexec调用之前允许exec系统调用的次数。
新创建的子进程允许执行exec的次数继承自父进程,只有超级用户能够通过noexec增加可执行exec的次数。
问题:
(1) 为了跟踪允许执行次数,是否要修改进程描述符task_struct?
(2) 为了保证继承语义,最早的进程应该如何初始化?
(3) fork系统调用是否要做修改?
(4) execve系统调用是否要修改?
我是个新手,请大家多多指教:)