Содержание материала

 

NtVdmControl

 

По неизвестной причине эмуляция DOS - NTVDM может получить список

файлов еще и с помощью функции NtVdmControl.

 

NTSTATUS NtVdmControl(

IN ULONG ControlCode,

IN PVOID ControlData

);

 

ControlCode указывает подфункцию, которая будет применена к данным

в буфере ControlData. Если ControlCode равняется VdmDirectoryFile, эта

функция делает то же, что и NtQueryDirectoryFile с FileInformationClass

равным FileBothDirectoryInformation.

 

#define VdmDirectoryFile 6

 

Тогда буфер ControlData используется как FileInformation. Единственная

разница в том, что мы не знаем длину этого буфера. Поэтому мы должны вычислить

ее вручную. Мы можем сложить NextEntryOffset всех записей, FileNameLength

последней записи и 0x5E (длина последней записи исключая длину имени файла).

Методы скрытия такие же как и в случае с NtQueryDirectoryFile.

 

Процессы

 

Различная системная информация доступна через NtQuerySystemInformation.

 

NTSTATUS NtQuerySystemInformation(

IN SYSTEM_INFORMATION_CLASS SystemInformationClass,

IN OUT PVOID SystemInformation,

IN ULONG SystemInformationLength,

OUT PULONG ReturnLength OPTIONAL

);

 

SystemInformationClass указывает тип информации, которую мы хотим

получить, SystemInformation - это указатель на результирующий буфер,

SystemInformationLength - размер этого буфера и ReturnLength - количество

записанных байт.

Для перечисления запущенных процессов мы устанавливаем в параметр

SystemInformationClass значение SystemProcessesAndThreadsInformation.

 

#define SystemInformationClass 5

  

Возвращаемая структура в буфере SystemInformation:

 

typedef struct _SYSTEM_PROCESSES {

ULONG NextEntryDelta;

ULONG ThreadCount;

ULONG Reserved1[6];

LARGE_INTEGER CreateTime;

LARGE_INTEGER UserTime;

LARGE_INTEGER KernelTime;

UNICODE_STRING ProcessName;

KPRIORITY BasePriority;

ULONG ProcessId;

ULONG InheritedFromProcessId;

ULONG HandleCount;

ULONG Reserved2[2];

VM_COUNTERS VmCounters;

IO_COUNTERS IoCounters; // только Windows 2000

SYSTEM_THREADS Threads[1];

} SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;

 

 Скрытие процессов похоже на скрытие файлов. Мы должны изменить

NextEntryDelta записи предшествующей записи скрываемого процесса. Обычно

не требуется скрывать первую запись, т.к. это процесс Idle.

 

Реестр

 

Реестр Windows - это достаточно большая древовидная структура,

содержащая два важных типа записей, которые мы можем захотеть скрыть. Первый

тип - ключи реестра, второй - значения реестра. Благодаря структуре реестра

скрытие его ключей не так тривиально, как скрытие файлов или процессов.

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить