2012-03-12 19 views
2

下面是一个简单的代码来伪造的进程名和CMDLINE在Linux上:有没有办法可以查看Linux上的真实进程cmdline?

#include <string.h> 
#include <sys/prctl.h> 
#include <stdio.h> 
#include <unistd.h> 
#define NewName "bash" 
#define ProcNameMaxLen 16 

int main(int argc, char **argv){ 
    int oldlen = strlen(*argv); 
    char procname[ProcNameMaxLen]; 
    memset(*argv, 0, oldlen); 
    memccpy(*argv, NewName, 0, oldlen); //modify cmdline 
    memccpy(procname, NewName, 0, ProcNameMaxLen); 
    prctl(PR_SET_NAME, procname); //modify procname 
    sleep(60); 
    return 0; 
} 

运行此代码后,我无法用PS查看真实姓名,

但有些事可以找到在/ proc/XXX/exe和/ proc/xxx/environ,但非常麻烦。

有没有一种好的方法可以查看所有进程的真实信息?

我认为这是一个很大的安全问题,因为我通常在我的服务器上通过ps检查进程。


方式1:lsof的-d TXT

等待更多的答案...

回答

1

lsof会告诉你原来的可执行文件的名称,因为它是恶意进程打开的文件之一。您可以使用-p选项检查多个进程,或使用-u选项查询单个用户。

+0

谢谢!但这不是一个好方法,通过每个流程的信息获取信息将花费很多时间。 – showns 2012-03-12 12:27:26

+0

@showns,你可以用'-p'选项指定一个pid。 – perreal 2012-03-12 12:28:20

+0

谢谢!我发现“lsof -d txt”有很好的工作。 – showns 2012-03-12 12:37:03

相关问题