linux下如何隐藏进程(ps/top)

本文介绍在Linux系统中如何使用2.6内核隐藏进程的方法,包括修改任务结构的PID使其变为0,以及在int main()函数中将参数设为0。同时指出这种方法在使用某些操作如Ctrl+C或exit()时可能导致系统崩溃,并提供了避免此类问题的建议。
摘要由CSDN通过智能技术生成

http://blog.csdn.net/sanbailiushiliuye/article/details/7561869

今天看了一篇外国的blog,讲的是如何在2.4内核中隐藏进程。

其核心思想就是把task->pid变成0,就成了0号进程。而在ps,top命令中,是不显示0号进程的相关信息。这么一来,在/proc/文件夹下就不会有该进程的相关信息了。

于是把代码稍微做了一点改动,在2.6.18-308.4.1.el5 内核中还是好使的。

上代码:

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/list.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("JASON.LIN.YU");

static pid_t pid = 0;
static pid_t old_pid = 0;
static struct task_struct *task = NULL;
//static struct task_struct *old_task = NULL;
static char * mystring = NULL;
module_param(pid, int, 0);
module_param(mystring, charp, 0);
MODULE_PARM_DESC(pid, "The pid to hide");
MODULE_PARM_DESC(mystring, "The process's name");

int start_module(void)
{
        task = find_task_by_pid(pid);
        if(NULL == task){
                return 1;
        }
        old_pid = task->pid;
        task->pid = 0;//关键在于改变pid=0
        return 0;
}

void clean_module(void)
{
        struct list_head* list;
        list_for_each(list, &current->tasks){
                task = list_entry(list, struct task_struct, tasks);
                if( 0 == memcmp(mystring, task->comm, strlen(mystring)+1)){
                        task->pid = old_pid;//替换pid
                        break;
                }
        }
        return;
}
rmmod后,proc文件夹下该进程有重新出现。

注意:使用这个方法不能ctrl+C,或者exit()调用,否则系统oops。

====================================================================================================================================

另外,还有一种比较简便的方法,就是把int main(int argc, char*argv[])中的参数变成0,那么就在单纯的ps命令中就不会显示进程相关信息,但是/proc/文件夹下,还会存在该进程的相关信息。

代码如下:

/*test.c*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
  int i = 0;

  memset(argv[i], 0, strlen(argv[i]));
  for(;;);
  return 0;
}

gcc -o hide test.c

./hide

ps aux| grep hide

>>>root      2437  0.0  0.0   4016   700 pts/1    R+   13:26   0:00 grep hide

但是top命令会显示出hide进程

以及使用ps -u username -U username会把进程信息出卖。


============================================================================================


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值