有没有办法可以在Linux上查看真正的进程cmdline?

这里是一个简单的代码来伪造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中find,但是很麻烦。

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

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


方法1:lsof -d txt

等待更多的答案…

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