Добрый день. Читаю Г.Хоглунг. Руткиты. Внедрение в ядро Windows. Там он предложил два способа загрузки драйвера. Первый из них с помощью функции Код (Text): if( !NT_SUCCESS( ZwSetSystemInformation( SystemLoadAndCallImage ,&GregsImage ,sizeof(SYSTEM_LOAD_AND_CALL_IMAGE)))) Переписал в масм Код (Text): .586 .model flat, stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\Macros\Strings.mac .data ntdlldll db "ntdll.dll",0 ZwSetSystemInformation db "ZwSetSystemInformation",0 RtlInitUnicodeString db "RtlInitUnicodeString",0 _ZwSetSystemInformation dd 0 _RtlInitUnicodeString dd 0 SYSTEM_LOAD_AND_CALL_IMAGE STRUCT ModuleName UNICODE_STRING <> ModuleBase dd 0 Unknown dd 0 EntryPoint dd 0 ExportDirectory dd 0 SYSTEM_LOAD_AND_CALL_IMAGE ENDS simage SYSTEM_LOAD_AND_CALL_IMAGE <> .code start proc invoke LoadLibrary,offset ntdlldll mov esi,eax invoke GetProcAddress,esi,offset RtlInitUnicodeString mov _RtlInitUnicodeString,eax invoke GetProcAddress,esi,offset ZwSetSystemInformation mov _ZwSetSystemInformation,eax mov eax,$CTA0("\??\c:\getstr.sys") push eax mov esi,offset simage assume esi:ptr SYSTEM_LOAD_AND_CALL_IMAGE lea eax,[esi].ModuleName push eax call _RtlInitUnicodeString push sizeof SYSTEM_LOAD_AND_CALL_IMAGE push esi push 38 ; =SystemLoadAndCallImage call _ZwSetSystemInformation invoke ExitProcess,0 start endp end start На С: лежит рабочий драйвер - getstr.sys. И вот не грузится ведьт Обращаюсь к нему из юзермода - драйвер не загружен. Где накосячил, подскажите ...
Ну так тогда, тоже не грузит Код (Text): .586 .model flat, stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc include \masm32\include\masm32.inc include \masm32\include\advapi32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\advapi32.lib includelib \masm32\lib\masm32.lib include \masm32\Macros\Strings.mac UNICODE_STRING STRUCT _Length WORD 0 MaximumLength WORD 0 Buffer PWSTR 0 UNICODE_STRING ENDS SYSTEM_LOAD_AND_CALL_IMAGE STRUCT ModuleName UNICODE_STRING <> ModuleBase dd 0 Unknown dd 0 EntryPoint dd 0 ExportDirectory dd 0 SYSTEM_LOAD_AND_CALL_IMAGE ENDS .data ntdlldll db "ntdll.dll",0 ZwSetSystemInformation db "ZwSetSystemInformation",0 RtlInitUnicodeString db "RtlInitUnicodeString",0 _ZwSetSystemInformation dd ? _RtlInitUnicodeString dd ? spath dw '\','?','?','\','c',':','\','g','e','t','s','t','r','.','s','y','s',0,0 simage SYSTEM_LOAD_AND_CALL_IMAGE <> .code start proc invoke LoadLibrary,offset ntdlldll mov esi,eax invoke GetProcAddress,esi,offset RtlInitUnicodeString mov _RtlInitUnicodeString,eax invoke GetProcAddress,esi,offset ZwSetSystemInformation mov _ZwSetSystemInformation,eax mov eax,offset spath push eax mov esi,offset simage assume esi:ptr SYSTEM_LOAD_AND_CALL_IMAGE lea eax,[esi].ModuleName push eax call _RtlInitUnicodeString push sizeof SYSTEM_LOAD_AND_CALL_IMAGE push esi push 38 call _ZwSetSystemInformation invoke ExitProcess,0 start endp end start
q_q Velheart это значит так ? Код (Text): . . . SYSTEM_LOAD_AND_CALL_IMAGE STRUCT ModuleName UNICODE_STRING <> SYSTEM_LOAD_AND_CALL_IMAGE ENDS . . . align 4 ; <-------- simage SYSTEM_LOAD_AND_CALL_IMAGE <> .code start proc . . .
_sheva740 Это уже проблема дрова Проверил на beeper.sys от Four-F - нормально грузится Кстати с учётом статичности строки с именем код можно упростить до Код (Text): .586 .model flat, stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc include \masm32\include\masm32.inc include \masm32\include\advapi32.inc include \masm32\Macros\Strings.mac includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\advapi32.lib includelib \masm32\lib\masm32.lib SYSTEM_LOAD_AND_CALL_IMAGE STRUCT ModuleName_Length dw 0 ModuleName_MaximumLength dw 0 ModuleName_lpBuffer dd 0 SYSTEM_LOAD_AND_CALL_IMAGE ENDS .data ntdlldll db "ntdll.dll",0 ZwSetSystemInformation db "ZwSetSystemInformation",0 spath dw '\','?','?','\','c',':','\','g','e','t','s','t','r','.','s','y','s',0,0 align 4 simage SYSTEM_LOAD_AND_CALL_IMAGE <sizeof spath - 4, sizeof spath - 2, offset spath> .data? _ZwSetSystemInformation dd ? .code start proc invoke LoadLibrary, offset ntdlldll mov esi, eax invoke GetProcAddress, esi, offset ZwSetSystemInformation mov _ZwSetSystemInformation, eax push sizeof SYSTEM_LOAD_AND_CALL_IMAGE push offset simage push 38 ; SystemLoadAndCallImage call _ZwSetSystemInformation invoke ExitProcess, 0 start endp end start