· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› ZwShutdownSystem

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Июн 5, 2003 07:40:37

Кто-нить когда-нить использовал эту функцию ZwShutdownSystem из драйвера?
Весь инет облазил,но полезного примера не нашел


Дата: Июн 5, 2003 13:49:15

Эта функция не экпортируется ядром, поэтому просто так ее вызвать нельзя.
Можно в юзерном клиенте драйвера по сигнатуре ntdll!ZwShutdownSystem определить индекс функции ntoskrnl!ZwShutdownSystem в KeServiceDeskriptoTable, и т.о. узнать ее адрес.
Вобщем см. Invisibility by Y0da. Там именно таким образом ищется индекс NtQuerySystemInformation.
Та сигнатура только для NT/2000, для XP не покатит.

ЗЫ: Можно сразу ZwSetSystemPowerState искать вместо ZwShutdownSystem.


Дата: Июн 5, 2003 20:13:50

слышь, Анонимка
а ты попробуй в лоб
драйвер ведь привелегии имеешь
прототип вроде
BOOL ZwShutdownSystem(DWORD Action);
ссылка
http://www.bugtraq.ru/library/internals/shut.html
если Action = 2 имеем
i=2; //Power off
bo=ZwShutdownSystem(i);
ссылка
http://www.bugtraq.ru/library/internals/.keep/shut.cpp.txt
теперь мои изыскания
на тачке
с P4 и XP prof
имеем
;ZwShutdownSystem, Ord 336, Addr = 77F765C6 (Function Entry Point), ntdll.dll
; Ord 1133, Addr = 77F765C6 (Function Entry Point)
77F765C6 B8 F9 00 00 00 MOV EAX,000000F9
77F765CB BA 00 03 FE 7F MOV EDX,7FFE0300
77F765D0 FF D2 CALL EDX
77F765D2 C2 04 00 RET 0004

код по адресу 7FFE0300 следующий
7FFE0300 8B D4 MOV EDX,ESP
7FFE0302 0F 34 SYSENTER
7FFE0304 C3 RET

отсюда собственнaя функция MyZwShutdownSystem будет на P4
впендюриваешь код в драйвер
; MyZwShutdownSystem
MyZwShutdownSystem: mov eax,f9h
mov edx,esp
sysenter
ret 4

вызов для случая выключения будет что-то такое

push 2
call MyZwShutdownSystem

короче good luck, если чего сожьешь, я не виноват
с другой стороны туда и дорога твоей тачке
какой-никакой протекшн быть должен от дурацких системных вызовов

бай
SmikeX
http://members.rogers.com/socket


Дата: Июн 6, 2003 13:27:17

А ларчик просто открывался

mov dx,100
mov al,254
out dx,ax

Комп в результате перезагружается....


Дата: Июн 6, 2003 14:13:34

Да. Только вопрос в том, как вызвать ZwShutdownSystem из драйвера, а не просто перезагрузиться.


Дата: Июн 9, 2003 02:24:31

А почему нельзя из драйвера вызвать?
Данная функция упомянута в ntdll.lib в стек надо положить четыре байта, правда какие непонятно.


Дата: Июн 9, 2003 12:51:11

[ film: А почему нельзя из драйвера вызвать? ]

Ну вызвать, теоретически, можно что угодно, если знать как.
ntdll.dll это юзерная библиотека и грузится в
пользовательское адресное пространство (ниже 80000000h). Драйвер, как компонент режима ядра не может импортировать ничего из компонентов
режима пользователя. Это не значит, что нельзя вызывать из драйвера юзерные функции (если есть уверенность, что это необходимо и знание как это сделать, то пожалуйста), но импортировать их система конечно не разрешит.

К тому же в процессы System и Idle ntdll.dll не отображается, поэтому из DriverEntry даже теоретически ничего не получится.


Дата: Июн 10, 2003 02:26:33

А если int 2Eh? dispath ID = 0x00D9


Дата: Июн 10, 2003 10:49:47

Это называется захардкодить - конечно можно, но будет работать только в той оси, в которой ZwShutdownSystem на 0x00D9 идентификаторе сидит, а поиск универсален. ID для ZwShutdownSystem отличается в NT, 2000 и XP. Ну и в 2003 Server тоже наверняка другое, если там вообще ченить глобально не поменяли.


Дата: Июн 10, 2003 14:24:17

Все понял. Вопросов больше нет :)


Дата: Июн 22, 2003 03:18:34

Ларчик ваще без крышки :-)
Это апишные функции, записаные в С.
Осталось лишь перелабать их под ASM (invoke и т. д.)


// выключить компьютер
ExitWindowsEx(EWX_SHUTDOWN, 0);

// перезагрузить компьютер
ExitWindowsEx(EWX_REBOOT, 0);

// завершить сеанс пользователя
ExitWindowsEx(EWX_LOGOFF, 0);


Дата: Июн 22, 2003 09:48:30

Не все так просто. Под NT нужно еще привилегии соответствующие оторвать (чтобы перезагрузиться или выключить комп).


Дата: Июн 24, 2003 11:01:13

Помнится в x25zine(по-моему во втором...) была отличная статья tanak'и на эту тему.
Если интересует зайди на x25zine.org.


Дата: Июн 24, 2003 13:28:06

может это и не в тему но всеже вот примерчик под все винды
[code]

reboot proc
LOCAL Priv1 : TOKEN_PRIVILEGES
invoke GetCurrentProcess
invoke OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,addr hToken
invoke LookupPrivilegeValue, 0, addr SeShutdownPrivilege, addr Priv1.Privileges.Luid
mov Priv1.PrivilegeCount, 1
mov Priv1.Privileges.Attributes, 2
invoke AdjustTokenPrivileges, hToken, 0, addr Priv1, 0, 0, 0
invoke CloseHandle,hToken
w98reboot:
invoke ExitWindowsEx,EWX_REBOOT,0
ret
reboot endp
[/code]


Дата: Июн 24, 2003 15:30:28

Кстати, под 98-й этот код:
-------------
mov dx,100
mov al,254
out dx,ax
-------------
не отключает комп, а вешает видеодрайвер, так что появляется
зелёная полоса на чёрном экране. Если это всё-таки работает,
то приведи полный код программы.

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074