Получение другой командной строки процесса в Windows

Я пытаюсь получить другую командную строку процесса (на WinXP 32bit). Я делаю следующее:

  hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE, FALSE, ProcList.proc_id_as_numbers[i]);

  BytesNeeded = sizeof(PROCESS_BASIC_INFORMATION);
  ZwQueryInformationProcess(hProcess, ProcessBasicInformation, UserPool, sizeof(PROCESS_BASIC_INFORMATION), &BytesNeeded);
  pbi = (PPROCESS_BASIC_INFORMATION)UserPool;

  BytesNeeded = sizeof(PEB);
  res = ZwReadVirtualMemory(hProcess, pbi->PebBaseAddress, UserPool, sizeof(PEB), &BytesNeeded);
  /* zero value returned */
  peb = (PPEB)UserPool;

  BytesNeeded = sizeof(RTL_USER_PROCESS_PARAMETERS);
  res = ZwReadVirtualMemory(hProcess, peb->ProcessParameters, UserPool, sizeof(RTL_USER_PROCESS_PARAMETERS), &BytesNeeded);
  ProcParam = (PRTL_USER_PROCESS_PARAMETERS)UserPool;

После первого вызова pbi.UniqueProcessID верен. Но после вызова ZwReadVirtualMemory я получаю командную строку для своего процесса, а не запрашиваю ее.

Я также использовал ReadProcessMemore & NtQueryInformationProcess, но получил тот же результат.

Кто-нибудь может помочь?

Здесь http: // forum.sysinternals.com/get-commandline-of-running-processes_topic6510_page1.html говорится, что этот код работает. К несчастью,У меня нет доступа, чтобы задавать себе вопросы на этом форуме.

9
задан Georg 30 June 2011 в 10:09
поделиться