gpt4 book ai didi

C++ 应用程序 : clear commandline arguments?

转载 作者:行者123 更新时间:2023-11-30 01:03:01 25 4
gpt4 key购买 nike

我有一个 C++ 应用程序,它使用 CCommandLineInfo 来解析命令行参数。

其中一个参数是我们在应用程序启动后使用 CryptProtectMemory 在内存中加密的密码。

那时我想摆脱内存中仍然以纯文本形式提供的密码(当我创建内存转储时可以检索它)。

有没有办法清除命令行参数?我尝试清除(用空字符串覆盖)__argv 但参数在内存转储中仍然可见。

[编辑]我尝试像这样清除命令行参数,但这没有用。参数仍在内存中。

for (int i=0; i<__argc; i++)
__argv[i] = "----------------------";

TCHAR* cmdLine = GetCommandLine();
SecureZeroMemory(cmdLine, strlen(cmdLine));

最佳答案

有一个众所周知的技巧/黑客可以从进程内存中清除命令行(请参阅 this answer ),但即使您应用了它,您仍然可以轻松地从例如Process Explorer因为它会在进程启动时生成它的拷贝。因此,无法阻止此类工具显示命令行。

将密码作为命令行参数是绝对不行的。我能想到的唯一解决方案是将密码加密/散列(或最坏情况;未加密)存储在一个文件中,然后将该文件作为参数加载。

关于C++ 应用程序 : clear commandline arguments?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54886557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com