当前位置: 技术问答>linux和unix
增加Linux系统调用
来源: 互联网 发布时间:2017-02-02
本文导语: 大家帮忙看下这个题: 修改已经编译成功的内核,为其增加新的系统调用 实现系统调用noexec,用它设置进程允许执行exec系统调用的次数。该系统调用能用来防止一些缓冲区溢出攻击,这些攻击最终通过exec产生一个shel...
大家帮忙看下这个题:
修改已经编译成功的内核,为其增加新的系统调用
实现系统调用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系统调用是否要修改?
我是个新手,请大家多多指教:)
修改已经编译成功的内核,为其增加新的系统调用
实现系统调用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系统调用是否要修改?
我是个新手,请大家多多指教:)
|
task_struct中加入新域如n 标记允许exec系统调用的次数
加上noexec 为某process设置这个n
sys_execve 中
通过 current 中的n进行判断
init 进程配置n为一个默认值
fork系统调实现估计要改
主要应该在do_fork这里 task_struct 是如何生成的 把n也拷贝到子进程
加上noexec 为某process设置这个n
sys_execve 中
通过 current 中的n进行判断
init 进程配置n为一个默认值
fork系统调实现估计要改
主要应该在do_fork这里 task_struct 是如何生成的 把n也拷贝到子进程
|
在调用sys_noexec前current->nexec 是多少
fork中赋值代码正确不
fork中赋值代码正确不
|
学习嵌入式linux的高手们,来加入我们共嵌入式学习交流群“一切都好”群号:36711379。。。。。来这里一起交流
|
up!~~
|
帮顶一下!