linux小妙招

您所在的位置:网站首页 linux查看隐藏文件的命令 linux小妙招

linux小妙招

2023-03-13 15:05| 来源: 网络整理| 查看: 265

众所周知,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 456

ps查看一下后台进程

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 办公设备维修网 版权所有 豫ICP备15022753号-3