考虑这个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)
}所有的时间)
答案 0 :(得分:0)
在我使用的所有类Unix系统中,包括许多Linux变体,程序可以覆盖它的命令行参数"来自内部&#34 ;。因此,在C中,我们可能会使用strcnpy()
来清空argv[1]
,argv[2]
等的值。当然,您需要先处理或复制这些参数,然后您需要注意不要覆盖每个argv
的特定限制之外的内存。
我不认为有关Unix的任何信息保证了这种方法的可移植性或持续适用性,但我已经使用它至少二十年了。它隐藏了ps
等偶然使用的命令,以及来自/proc/NN/cmdline
的命令,但是它不会停止shell在某处存储命令行(例如,在shell历史文件中) 。因此,它只能防止随意窥探。
更好的方法是不要首先进入这种情况 - 让程序从文件(可以加密),环境变量或使用证书中获取输入。或者几乎任何事情,实际上,除了命令行。