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