隐藏命令行参数

时间:2016-04-13 06:23:36

标签: windows command-line-arguments

我正在调用exe来对设备进行某些操作,Exe需要密码才能连接到设备来执行操作。

问题:在命令行列下的任务管理器中可以看到密码。

我尝试通过以下命令从PROCESS_BASIC_INFORMATION中删除命令行参数详细信息:

HANDLE hProcess = OpenProcess (PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
                               FALSE, GetCurrentProcessId());
PROCESS_BASIC_INFORMATION pbi;
ULONG ReturnLength;
PFN_NT_QUERY_INFORMATION_PROCESS pfnNtQueryInformationProcess =
    (PFN_NT_QUERY_INFORMATION_PROCESS) GetProcAddress (
        GetModuleHandle(TEXT("ntdll.dll")), "NtQueryInformationProcess");
NTSTATUS status = pfnNtQueryInformationProcess (
    hProcess, ProcessBasicInformation,
    (PVOID)&pbi, sizeof(pbi), &ReturnLength);
// remove full information about my command line
pbi.PebBaseAddress->ProcessParameters->CommandLine.Buffer = NULL;
pbi.PebBaseAddress->ProcessParameters->CommandLine.Length = 0;

但命令行信息仍会显示在任务管理器中。

你能帮助我理解任务管理器如何阅读命令行参数以及如何更改它?

谢谢, POOJA

1 个答案:

答案 0 :(得分:0)

不确定这是否有帮助,但我不得不编写一个通过命令行与SQL接口并且需要隐藏我们的数据库密码的应用程序,而它不是100%它确实适用于我需要的东西。在命令行参数中,我用465个空格开始参数;当我第一次想出这个想法时,这是一个随机数,命令行不关心空间并且字符限制很高;另一方面,任务管理器没有很高的字符限制,所以它只显示了exe和一堆空格,就是这样。

相关问题