Ksenia
Фея
Изучаю ядерные структуры. Microsoft их очень плохо документирует. Например для PEB (одна из структур для описания процесса) (Process Environment Block)
typedef struct _PEB {
BYTE Reserved1[2];
BYTE BeingDebugged;
BYTE Reserved2[1];
PVOID Reserved3[2];
PPEB_LDR_DATA Ldr;
PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
PVOID Reserved4[3];
PVOID AtlThunkSListPtr;
PVOID Reserved5;
ULONG Reserved6;
PVOID Reserved7;
ULONG Reserved8;
ULONG AtlThunkSListPtr32;
PVOID Reserved9[45];
BYTE Reserved10[96];
PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine;
BYTE Reserved11[128];
PVOID Reserved12[1];
ULONG SessionId;} PEB, *PPEB;
Отмечается, что почти все reserved и не используется. Но я им не верю. Если мой вирус будет писать туда для своих нужд, то не факт, что какая-то незадокументированная функция в режиме ядра не попытается это поле считать, и система не уйдет в синий экран смерти из-за некорректного значения. Если вирус вызывает синий экран смерти, то это плохой вирус. Надо через debug операционный системы проверять ядерные структуры...
typedef struct _PEB {
BYTE Reserved1[2];
BYTE BeingDebugged;
BYTE Reserved2[1];
PVOID Reserved3[2];
PPEB_LDR_DATA Ldr;
PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
PVOID Reserved4[3];
PVOID AtlThunkSListPtr;
PVOID Reserved5;
ULONG Reserved6;
PVOID Reserved7;
ULONG Reserved8;
ULONG AtlThunkSListPtr32;
PVOID Reserved9[45];
BYTE Reserved10[96];
PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine;
BYTE Reserved11[128];
PVOID Reserved12[1];
ULONG SessionId;} PEB, *PPEB;
Отмечается, что почти все reserved и не используется. Но я им не верю. Если мой вирус будет писать туда для своих нужд, то не факт, что какая-то незадокументированная функция в режиме ядра не попытается это поле считать, и система не уйдет в синий экран смерти из-за некорректного значения. Если вирус вызывает синий экран смерти, то это плохой вирус. Надо через debug операционный системы проверять ядерные структуры...