繁体   English   中英

在 Linux 中隐藏 C 程序的命令行参数

[英]Hiding command line arguments for C program in Linux

如何隐藏在 Linux 中运行的 C 程序的命令行参数,以便其他用户无法通过“w”、“ps auxwww”或类似命令看到它们?

这样做实际上相当困难(我不会说不可能,因为可能有一种我不知道的方法),特别是如果用户可以访问您的进程的/proc文件系统。

也许防止人们看到您的命令行参数的最佳方法是不使用命令行参数:-)

您可以将您的参数存储在一个名为(例如) myargs.txt的适当保护文件中,然后使用以下命令运行您的程序:

myprog @myargs.txt

当然,您必须修改myprog以处理“文件中的参数”场景。

或者,您可以将参数设置为环境变量并让您的程序使用getenv

但是,我不知道有任何方法可以保护您免受适当授权的进程(例如由root运行的进程)的侵害。

在你的程序中修改argv的内容:

#include <stdio.h>
#include <time.h>

void delay (long int msecs)
{
        clock_t delay = msecs * CLOCKS_PER_SEC / 1000;
        clock_t start = clock();
        while (clock() - start < delay);
}

void main (int argc, char **argv)
{
    if (argc == 2) 
    {
        printf ("%s\n", argv[1]);
        delay (6000);

        argv[1][0] = 'x';
        argv[1][1] = '.';
        argv[1][2] = 'x';

        printf ("%s\n", argv[1]);
        delay (5000);
        printf ("done\n");
    }
    else printf ("argc != 1: %d\n", argc);
}

调用:

./argumentClear foo  
foo
x.x
done

结果,ps查看:

asux:~ > ps auxwww | grep argu
stefan   13439 75.5  0.0   1620   352 pts/5    R+   17:15   0:01 ./argumentClear foo
stefan   13443  0.0  0.0   3332   796 pts/3    S+   17:15   0:00 grep argu
asux:~ > ps auxwww | grep argu
stefan   13439 69.6  0.0   1620   352 pts/5    R+   17:15   0:02 ./argumentClear x.x
stefan   13446  0.0  0.0   3332   796 pts/3    S+   17:15   0:00 grep argu

备注:我的延迟功能没有按预期工作。 程序运行时间不是 11 秒,而是大约 2-3 秒。 我不是大 C 程序员。 :) 这里的延迟功能需要改进。

要隐藏 ps 命令中的参数,您可以使用我一直使用的 hack: sprintf(argv[0], "My super long argument list

");使用空格键一定要使用3行左右的空格,否则编译器会报错!切记解析命令行后更改argv[0]!

59982 pts/1    SLl+   0:00 My super long argument list

strings /proc/59982/cmdline
My super long argument list

这是一种黑客攻击,但入侵者会首先发出“ps axw”。

始终监控关键任务服务器并检查登录用户!!!

据我所知,该信息存储在内核空间中。 如果不编写内核模块,您将无法隐藏此信息,因为任何程序都可以查询 proc 文件系统以查看命令行参数(这就是 ps 所做的)。

作为替代方案,您可以在 stdin 上读取命令行参数,然后填充一个数组以传递给命令行参数处理程序。 或者,更好的是,添加对您的程序的支持,以读取包含相同命令行参数信息的配置文件并设置权限,以便只有所有者才能读取该文件。

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM