向高手请教一个内核编程的实例

best06zyc 2009-11-22 03:50:27
注:该问题是《LINUX操作系统实验教程》实验十----进程隐藏
实验目的:
实现一个系统调用hide来隐藏进程,使得用户无法使用ps或top命令观察到进程的状态。要求实现以下几个基本功能:
 (1)实现用户可以使用以下方式调用该系统调用:int hide(pid_t pid,int on),并且在进程pid有效地前提下,如果on置1,进程被隐藏,这时用户无法通过proc文件系统观察到进程状态;如果on置0且此前为隐藏状态,则恢复正常状态。系统调用的返回值请自行设计,但请注意其合理性。
 (2)考虑权限问题,只有超级用户才可以使用该系统调用。
 (3)在/proc 目录下创建一个文件/proc/hidden,该文件可读可写,它与一个全局量hidden_flag对应,当hidden_flag为0时,所有进程都无法隐藏,即便此前进程被hide系统调用要求隐藏。只有当hidden_flag为1时,此前通过hide调用要求隐藏的进程才可以隐藏起来。

我的想法:(1)修改进程描述符结构task_struct,在linux/sched.h为其添加一个成员cloak,用来记录进程隐藏与否。
(2)在进程创建时,把task_struck结构的成员cloak初始化为未隐藏。
(3)添加hide系统调用。
(4)修改proc_pid_readdir函数的代码,如果被读出的进程描述符的cloak成员值为1,则进程标识符不返回给用户缓冲区。

问题:(1)添加系统调用我会,但是hide函数具体怎么实现,请高手给予指导。
(2)在proc文件系统创建文件我也会,但是为什么它要与一个全局量hidden_flag对应?这个操作有什么意义?如何实现?

请高手们帮帮我这个菜鸟,讲讲大概的原理,步骤,和代码如何实现,十分感谢!
...全文
148 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
best06zyc 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 deep_pro 的回复:]
我在黑客防线0907期上发过一篇文章就是 《编写LKM方式RootKit的常见隐藏功能》
留个邮箱 发给你文章和代码


[/Quote]303846754@qq.com谢谢啊!
deep_pro 2009-11-24
  • 打赏
  • 举报
回复
不修改源代码隐藏只能靠劫持系统调用
能修改源代码,那就直接在原系统调用里改了

deep_pro 2009-11-24
  • 打赏
  • 举报
回复
看你的说法,是允许直接写该内核代码,那轻松多了
正常情况下,菜鸟级的黑客用LKM,牛x的黑客一个用户级程序就能搞定。
我的水平属于菜鸟

1)添加系统调用我会,但是hide函数具体怎么实现,请高手给予指导。
hide函数无非是自己设计一个数据结构,记录下那些进程要隐藏,还不需要真得实现隐藏功能,仿照别的系统调用很容易实现

(2)在proc文件系统创建文件我也会,但是为什么它要与一个全局量hidden_flag对应?这个操作有什么意义?如何实现
为了方便老师检查设置的开关嘛
/proc下文件的读写 就是字符驱动的基本读写操作,给你一个我的相关例子
http://hi.baidu.com/deep_pro/blog/item/94ee8d0f784d9a206159f306.html(可惜只有读操作)

有问题http://hi.baidu.com/deep_pro/留言
deep_pro 2009-11-24
  • 打赏
  • 举报
回复
我在黑客防线0907期上发过一篇文章就是 《编写LKM方式RootKit的常见隐藏功能》
留个邮箱 发给你文章和代码

Wenxy1 2009-11-24
  • 打赏
  • 举报
回复
看看ps 或者 top命令的实现原理,再修改kernel吧。

参考:http://blog.csdn.net/wenxy1/archive/2009/11/20/4841661.aspx
arczee 2009-11-24
  • 打赏
  • 举报
回复
帮顶,呵呵
sun007700 2009-11-24
  • 打赏
  • 举报
回复
up
unbutun 2009-11-22
  • 打赏
  • 举报
回复
帮顶

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧