c - 修改命令行参数,使它们在 ps 输出中不可见

标签 c windows unix argv

我有一个接受特定命令行参数的可执行文件。机器上的任何用户都可以通过执行 ps (Unix) 或 procexp (Windows) 找到参数。其中一些参数是密码之类的东西。我知道我们不应该那样传递密码。

我可以更改可执行文件的代码,以便其他执行 ps/procexp 的用户看不到用于启动可执行文件的命令行参数吗?

我确信没有独立于平台的方法来执行此操作,但即使每个平台都有特定的 API 来执行此操作,这也是一个很好的起点。我期待听到任何评论/建议或想法。

问候,

最佳答案

您正在尝试使不安全的解决方案稍微安全一些。为什么不让它更安全呢?

一个快速的破解方法是将密码写入一个设置为受限权限的文件,并在被调用的可执行文件读取后立即将其删除。如果文件被写入磁盘,您仍然面临这些位仍然存在于硬盘驱动器上的风险。但是您可以通过使用 ramdisk 来消除这个问题。

或者您可以给可执行文件一个私钥,并使用相应的公钥加密密码。这需要更多工作,但更安全。那么你当然会遇到 key 管理的问题。

关于c - 修改命令行参数,使它们在 ps 输出中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3816058/

相关文章:

c - 在自定义 linux shell 中进行管道传输

c - Pebble 在 `realloc` 上崩溃,但仅在特定函数中崩溃

java - 防止命令提示符窗口打开以启动应用程序

csv - Unix,对 file.csv 中的行进行分组并计算列的总和值

linux - 如何检查文件是否有特殊字符,例如 linux 中的 CR?

shell - 如何找到在 dash 中来源的脚本的路径?

c - 为什么 c 中的这个函数会给出意想不到的结果?

windows - 错误由于错误而停止(org.apache.kafka.connect.cli.ConnectStandalone)java.lang.NoClassDefFoundError : io/debezium/util/IoUtil

c# - 如何检测用户密码是否过期

C/确定接收数据包的端口