Код (Text): typedef enum _SHUTDOWN_ACTION { ShutdownNoReboot, ShutdownReboot, ShutdownPowerOff } SHUTDOWN_ACTION; NTSTATUS NtShutdownSystem ( __in SHUTDOWN_ACTION Action ) /*++ Routine Description: This service is used to safely shutdown the system. N.B. The caller must have SeShutdownPrivilege to shut down the system. Arguments: Action - Supplies an action that is to be taken after having shutdown. Return Value: !NT_SUCCESS - The operation failed or the caller did not have appropriate privileges. Если вызывать как стуб, то экспортируется ntdll, иначе нужно знать номера сервиса например http://ntinside.narod.ru/sdt.html
Код (Text): typedef enum _FIRMWARE_REENTRY { HalHaltRoutine, HalPowerDownRoutine, HalRestartRoutine, HalRebootRoutine, HalInteractiveModeRoutine, HalMaximumRoutine } FIRMWARE_REENTRY, *PFIRMWARE_REENTRY; NTHALAPI VOID HalReturnToFirmware ( IN FIRMWARE_REENTRY Routine ); Будет "как из розетки".
создаешь бат файл и вставляешь туда shutdown.exe -s -f -t 00 Даже писатьи компилить не надо! Кстати хотелось бы на уровне ассемблера такую прогу увидеть!!
Спасибо! Мне уже указали на руткитс тоже! Хотя чёже он не гуглился не ясно, а сам я как то бывал, но не запомнил эту дорогу. Так чтоль Код (Text): lpFile db 'shutdown.exe',0 lpParameters db '-r -f -t 00',0 start: invoke ShellExecute,NULL,NULL,lpFile,lpParameters,NULL,SW_HIDE exit: invoke ExitProcess,0 ЗЫ ты мой EmuPMixDSP.exe не видел, его так просто не свалить на твикатой винде! Процесс не вырубается из диспетчера задач тоже. Хотя вот от каких служб это зависит, я уже долго бьюс над вопростом, ведь раньше работало! Раньше даже через shutdown.exe нормально перезагружалось EmuPMixDSP.exe тоже. Скорее это даже от совокупности сервисов зависит, где-то примерно на что я думю Application Layer Gateway Windows Firewall/Internet Connection Sharing (ICS) Secondary Logon или WMI драйверз экстеншнпс и апс лейер всякое... COM+ кстати, последние две для меня вообще загдка, удалял их сто раз, хуже не стало, вообще непонятно нафиг это нужно в системе, хотя какбудто бы что то серьёзное судя по витьеватому описанию нивразумительному Руткитс код скампилил, хотя масм гемор, вспоминал как там линковать )) это вообще криво include \masm32\include\w2k\ntdll.inc папки w2k небыло в дистре... Но других проблем нет
Сервисы.. одно и тоже всюду, в юзермоде ниже ничего нет. В ядре хал экспортирует необходимый функционал.
У меня просто при удалении каких-то сервисов стала невозможной перезагрузка через shutdown.exe, потому-что процесс от звуковой карты EmuPMixDSP.exe (EMU-0404) вешает систему. Через GUI меню всё перезагружается нормально. Сам EmuPMixDSP тоже только через его графический exit можно выгрузить, штука серьёзная весьма Наверное специально такую стабильность зделали. Но мне очень интересно какие это службы могут влиять на функционал shutdown.exe! Хотя может быть дело не в службах, но тогда вообще никаких догадок не могу себе представить.
Помогите конвертнуть? ) Сразу на Enabled BOOLEAN ? ругается, видимо это из windows.inc фитча Причём я понятия не имею откуда RtlAdjustPrivilege импортить =) Код (Text): include '%fasm%\win32ax.inc' entry start ; .386 ; .model flat, stdcall ; option casemap:none section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL',ntdll,'NTDLL.DLL',user32,'USER32.DLL' include '%fasm%\api\kernel32.inc' include '%fasm%\api\user32.inc' import ntdll,ZwShutdownSystem ;------------------------------------ ; include \masm32\include\kernel32.inc ; include \masm32\include\windows.inc ; include \masm32\include\user32.inc ; include \masm32\include\ntdll.inc ; includelib \masm32\lib\ntdll.lib ; includelib \masm32\lib\kernel32.lib ; includelib \masm32\lib\user32.lib ;------------------------------------ ; C:\masm32\bin\ml.exe /c /coff ZwShutdown.asm ; C:\masm32\bin\link.exe /subsystem:windows ZwShutdown.obj section '.data' data readable writeable executable ; .data szntdll db "ntdll.dll", 0 ; .data? hMod dd ? Enabled BOOLEAN ? ; .const ShutdownNoReboot dd 0 ShutdownReboot dd 1 ShutdownPowerOff dd 2 SE_SHUTDOWN_PRIVILEGE equ 19 ; 19L ; .code start: lea edi, Enabled invoke RtlAdjustPrivilege,SE_SHUTDOWN_PRIVILEGE,TRUE,FALSE,edi invoke ZwShutdownSystem,ShutdownPowerOff invoke ExitProcess,0 ; end start
Ух-ты, мой ламерский код кому-то, пригодился *ROFL* Все еще осталось к этому проекту файлы компиляции: батник, и т.д. т.п.
Semiono Есть машинный код, это массив опкодов. Работает в случае если это пикод, иначе нужен импорт. Всеголишь определить ServiceId(Version) и вызвать сервис, привилегии получаются посредством NtOpenProcessToken/NtAdjustPrivilegesToken. Уже стопятцот раз говорил что стуб не сервис, последний определяется идентификатором, более для вызова ничего не нужно. ps: Масм рулит.