Приложение MF C C ++: как очистить аргументы командной строки в диспетчере задач? - PullRequest
0 голосов
/ 03 августа 2020

У меня есть приложение MF C C ++, которое использует аргументы командной строки. Но когда программа запущена, конфиденциальная информация, введенная в командной строке, будет отображаться в столбце «Командная строка» диспетчера задач. 1. Так как их удалить? 2.Как изменить аргументы командной строки в MF C C ++?

Большое спасибо.

1 Ответ

0 голосов
/ 03 августа 2020

Я использую следующую функцию в моем x32 InitInstance, но она не работает. Param.CommandLine.Buffer был изменен на пустой, поскольку в диспетчере задач по-прежнему отображается командная строка. Есть ошибка?

#include <Windows.h>
#include <Winternl.h>
#include <stdio.h>
#include <tchar.h>

typedef NTSTATUS (NTAPI *PFN_NT_QUERY_INFORMATION_PROCESS) (
    IN HANDLE ProcessHandle,
    IN PROCESSINFOCLASS ProcessInformationClass,
    OUT PVOID ProcessInformation,
    IN ULONG ProcessInformationLength,
    OUT PULONG ReturnLength OPTIONAL);

void ClearCommandLine()
{
    HANDLE hProcess = OpenProcess (PROCESS_ALL_ACCESS,
                            FALSE, GetCurrentProcessId());
    PROCESS_BASIC_INFORMATION pbi = {0};
    RTL_USER_PROCESS_PARAMETERS Param = {0};
    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), NULL);
    
    wchar_t* lpwszCmd=L"";
    USHORT usCmdLen = 2 + 2 * (wcslen(lpwszCmd));
    ReadProcessMemory(hProcess, pbi.PebBaseAddress, &peb, sizeof(peb), NULL);
    ReadProcessMemory(hProcess, peb.ProcessParameters, &Param, sizeof(Param), NULL);
    WriteProcessMemory(hProcess, Param.CommandLine.Buffer, lpwszCmd, usCmdLen,NULL);
    WriteProcessMemory(hProcess,&Param.CommandLine.Length, &usCmdLen, sizeof(usCmdLen), NULL);

    CloseHandle(hProcess);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...