如何隐藏htop中system()函数传递的系统调用

时间:2017-11-01 07:04:58

标签: c unix system-calls

考虑这个C片段:

htop

现在在编译和执行它时,"敏感"可以在system()等程序上看到该过程的参数 我不想要那个。

我想知道是否有方法隐藏htop中传递的所有内容,以便a.out只显示已编译可执行文件的名称(即htop只显示view1.frame = CGRect(x:0, y:0, width:100, height:100) view2.frame = CGRect(x:100, y:0, width:100, height:100) UIView.animate(withDuration: 0.3, delay: 0, options: [.beginFromCurrentState], animations: { self.view1.frame = CGRect(x:0, y:100, width:100, height:100) self.view2.frame = CGRect(x:100, y:100, width:100, height:100) }, completion: nil) }所有的时间)

1 个答案:

答案 0 :(得分:0)

在我使用的所有类Unix系统中,包括许多Linux变体,程序可以覆盖它的命令行参数"来自内部&#34 ;。因此,在C中,我们可能会使用strcnpy()来清空argv[1]argv[2]等的值。当然,您需要先处理或复制这些参数,然后您需要注意不要覆盖每个argv的特定限制之外的内存。

我不认为有关Unix的任何信息保证了这种方法的可移植性或持续适用性,但我已经使用它至少二十年了。它隐藏了ps等偶然使用的命令,以及来自/proc/NN/cmdline的命令,但是它不会停止shell在某处存储命令行(例如,在shell历史文件中) 。因此,它只能防止随意窥探。

更好的方法是不要首先进入这种情况 - 让程序从文件(可以加密),环境变量或使用证书中获取输入。或者几乎任何事情,实际上,除了命令行。