linux小妙招 | 您所在的位置:网站首页 › linux查看隐藏文件的命令 › linux小妙招 |
众所周知,linux命令行参数可以通过ps查看,但有些应用场景下,我们不希望命令行参数被ps看到。比如命令行参数是账号和密码的时候。有什么妙招可以解决呢? 解决方案分两种情况: 一、程序是自己写的如果程序是自己写的,那么就可以不用命令行参数,而使用进程间通信的方式来传递私密参数。但这不是本文重点。 二、程序是别人写的程序是别人写的,意味着无法修改源码,也就不能修改参数的传递方式。 我们先写一个简单的测试程序,测试程序打印出命令行参数。 1.测试程序test.c#include int main(int argc,char **argv) { printf("argc=%d\n",argc); printf("argv[0]=%s\n",argv[0]); printf("argv[1]=%s\n",argv[1]); printf("argv[2]=%s\n",argv[2]); getchar(); return 0; }编译测试程序 gcc main.c运行测试程序 ./a.out 123 456ps查看一下后台进程 ps -ef从结果来看,直接运行命令行参数用ps命令直接打印了出来。现在我们想改变ps结果显示的命令行参数,达到保护我们私密参数的目的。 2.编写参数隐藏库编写代码inject.c #define _GNU_SOURCE #include #include #include #include int (*main_bak) (int, char **, char **); /* 所有的argv指向的内存先备份,然后全部改为x,再将argv指针指向备份内存 */ static int mymain(int argc, char **argv, char **env) { int ret=0,i=0,len=0; char **argvbak=NULL; if(argc>1){ argvbak=(char **)calloc(argc,sizeof(char *)); for(i=1;i1){ for(i=1;i3.参数隐藏结果结果可以看到参数传递正确。再看看后台进程 可以看到测试程序进程的命令行参数全部显示为x,私密参数被成功隐藏。 |
CopyRight 2018-2019 实验室设备网 版权所有 |