Что означают некоторые члены в структуре SYSTEM_PROCESS_INFORMATION?

#c #c #windows #winapi #msdn

#c #c #Windows #winapi #msdn

Вопрос:

Я просмотрел его в MSDN, но в нем перечислены только значения некоторых элементов . Вот ссылка в MSDN SYSTEM_PROCESS_INFORMATION structure в MSDN

Видите ли, нет указания на значение PVOID Reserved2[3] ,.И в моей книге, в примере подключения NtQuerySystemInformation функции для скрытия процесса, приведен некоторый код, подобный приведенному ниже

 if(!_tcsicmp((PWSTR)pCur->Reserved2[1],g_szProcName)) //pCur points to a SYSTEM_PROCESS_INFORMATION , g_szProcName variable is the name of the process to hide . According to the book , here is to search for the target process to hide.
{
   // something to do . According to the book , here is to delete the node of the process to hide  in the single linked list of  SYSTEM_PROCESS_INFORMATION structure 
}
  

Как вы видите, здесь используется элемент PVOID Reserved2[3] этой структуры . Я предполагаю, что это имя процесса . Но в коде, который он использует Reserved2[1] , поэтому я хочу знать точное значение этого и других элементов, не упомянутых в MSDN, кто-нибудь может мне помочь?

Комментарии:

1. Что это за книга?

2. Проблемы с вашим вредоносным проектом…….

Ответ №1:

Зарезервированные элементы структуры обычно не предназначены для использования несистемными программистами (т. Е. Не Предназначены для использования вами). Обычно они описываются (в MSDN) как

Отдельные элементы структуры зарезервированы для внутреннего использования операционной системой.

Причина в том, что содержимое / использование этих полей не гарантируется неизменным (т.Е. Microsoft оставляет за собой право изменять содержимое / значение этих полей, например, в следующей операционной системе).

В вашей книге кто-то, возможно, определил / отладил, что именно находится в этих полях, и действует на основе этих знаний. Но если вы пишете программу, которая использует эти знания, программа не гарантированно будет работать с более поздними (или даже другими) версиями операционной системы.

Комментарии:

1. Это даже не гарантирует работу с той же версией ОС. Конкретное поле может содержать одну переменную в один момент и другую переменную в другой. IOW, поле на самом деле может быть union .

2. Да или нет гарантии, что книга правильно интерпретировала это (или пропустила случаи, когда значение было другим).