У меня есть проблема с чтением командной строки указанного процесса непосредственно из PEB с помощью PowerShell. Я получаю данные PROCESS_BASIC_INFORMATION с помощью NtQueryInformationProcess.Командная строка процесса без WMI
# $proc - process handle
if ($NtQueryInformationProcess(
$proc, 0, $PROCESS_BASIC_INFORMATION, [Runtime.InteropServices.Marshal]::SizeOf(
$PROCESS_BASIC_INFORMATION
), [IntPtr]::Zero
))) -eq 0) {
# pointer to RTL_USER_PROCESS_PARAMETERS
$ptr = [Runtime.InteropServices.Marshal]::ReadIntPtr($PROCESS_BASIC_INFORMATION.PebBaseAddress, 0x10)
# pointer to CommandLine field of structure above
$ptr = [Runtime.InteropServices.Marshal]::ReadIntPtr($ptr, 0x40)
# how to get CommandLine field (UNICODE_STRING structure)?
}
Все указатели правильно, но я не имею ни малейшего представления, как читать CommandLine поле с типом маршалом. Есть идеи?
Этот образец не чувствует себя полным. А что такое '$ NtQuerInformationProcess'? '$' для переменных, а '()' для методов? –
Прочитайте http://stackoverflow.com/help/mcve –
Если у вас нет ответа на вопрос, не публикуйте его, пожалуйста. – kate