Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > перезагрузка компьютера


Автор: denks 19.6.2006, 00:17
Здравствуйте. Подскажите пожалуйста как реализовать выключение компьютера на ассемблере. Особенно интересует быстрое выключение. Заранее спасибо. 

Автор: Akina 19.6.2006, 09:55
Сабж: перезагрузка.
Пост: выключение.

Ты уж сперва реши чего тебе надо-то, а? 

Автор: Exekutor 19.6.2006, 09:58
denks, комманда консоли shutdown.

Добавлено @ 10:00 
А какая операционка хоть? Обычно отправляешь сообщение Explorer-у WM_CLOSE вроде бы, и система выключается. 

Автор: ds29 19.6.2006, 10:10
хм, тема создана не в  Asm для Windows/Dos и не в Asm для Linux/Unix, значит не эти, 


denks, какая же OS?

Exekutor, если для Win, то закрытие эксплорера ничего не даст, часто его намерено выключают для некоторых задач, что бы освободить память. для окон есть соотв. API функция, (ExitWindows) но здесь она видимо не подойдёт. 

Автор: denks 19.6.2006, 10:28
Нужно для win. 

Автор: ds29 19.6.2006, 11:02
Ура)
тогда тебе ExitWindows вполне подойдёт 

Автор: denks 19.6.2006, 11:40
Разобрался. Всем спасибо. Решение следующее.

Код

.486
.model flat, stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\advapi32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\advapi32.lib

.data
tp TOKEN_PRIVILEGES <>
privilegija db "SeShutdownPrivilege",0
.data?

hProc dd ?
hToken dd ?

.code
start:

invoke GetCurrentProcess
mov hProc, eax
invoke OpenProcessToken, hProc, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, addr hToken
invoke LookupPrivilegeValue, NULL, addr privilegija, addr tp.Privileges[0].Luid
mov tp.PrivilegeCount, 1
mov tp.Privileges[0].Attributes, SE_PRIVILEGE_ENABLED
invoke AdjustTokenPrivileges, hToken, FALSE, addr tp, NULL, NULL, NULL
invoke ExitWindowsEx, EWX_REBOOT or EWX_FORCE, NULL
end start
 

Автор: setty 20.6.2006, 19:19
проверенный способ, закрываеш процес с именем типа lsass.exe и винда сама перегрузится через секунд 50 помоему ))) 

Автор: ds29 7.7.2006, 21:15
setty
это не политкорректно) 

Автор: setty 7.7.2006, 22:17
зато просто и сердито )))) 

Автор: Kuber 12.7.2006, 01:38
Цитата(setty @ 20.6.2006,  19:19)
проверенный способ, закрываеш процес с именем типа lsass.exe и винда сама перегрузится через секунд 50 помоему )))

Помоему некий lsass.exe, просто так не завершить. В редаун уходит если закрыть svhost.exe(netserv), но этого можно избежать shutdown -a(abort).... 

Автор: setty 15.7.2006, 22:46
я завершал тысячу раз чере taskkill /f /pid ****
когда мне нужно было захаканнуню тачку перегрузить 

Автор: BUGOR 16.7.2006, 12:49
Проинжектируйте в системный процесс такой код:
xor eax,eax
mov eax,[eax]
И потом вызовете его, перезагрузка не заставит себя ждатьsmile 
Ну или можно драйвер написать с таким кодом. Вот это дейтсвтвительно строго и сердитоsmile 

Автор: denks 16.7.2006, 19:10
На форуме web-hack, один из участников (ник его nht)  как раз выкладывал такой драйвер. Вот он собственно
http://nht.hotmail.ru/crash.sys 

Автор: oleg1973 18.7.2006, 22:20
))) всебы вам решения с других форумов воровать ) 

Автор: setty 23.7.2006, 03:12
2 BUGOR - heh, тоже способ, однако тогда вылетиш в BSOD что немного не есть перезагрузка ) 

Автор: 10110111 28.8.2006, 15:31
Проще влезть в ядро и:

mov al,0feh
out 64h,al

или так:

mov al,1
out 92h,al

Перезагрузка произойдет незамедлительно  smile и без всяких BSOD smile

Автор: Merlin27 21.12.2006, 17:53
А можно поподробнее что при этих командах происходит и кому чего посылается smile?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)