|
|
| Посл.отвђт | Сообщен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 ------------- не отключает комп, а вешает видеодрайвер, так что появляется зелёная полоса на чёрном экране. Если это всё-таки работает, то приведи полный код программы. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074 |