Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2008, 16:01   #41
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

Скорее уж, написать программу которая отрубает все(видеокарту, жесткие диски, процессор..) почти тоже самое))
Хм.. ну или выключаем монитор перед выключением.. - это для эффекта
Прогрессирующий чайник..

Последний раз редактировалось The_Darkness; 16.07.2008 в 16:04.
The_Darkness вне форума Ответить с цитированием
Старый 16.07.2008, 16:06   #42
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Да ладно, "не мгновенно" занимает 1-2 секунды, пока винда выгрузит память ядра, а на все пользовательские приложения она внимания не обращает.
пыщь
JTG вне форума Ответить с цитированием
Старый 16.07.2008, 16:10   #43
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

Цитата:
Да ладно, "не мгновенно" занимает 1-2 секунды
Вот я и говорю, вырубаем монитор, будет эффект "мгновенности" выключения
В общем, всем спасибо))
Прогрессирующий чайник..
The_Darkness вне форума Ответить с цитированием
Старый 16.07.2008, 16:13   #44
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от The_Darkness Посмотреть сообщение
В общем если я получаю привелегии,
этим:
Код:
NtShutdownSystem(ShutdownPowerOff);
Я вырублю комп, так?
The_Darkness, дело в том, что Вы задачу поставили не совсем определённую. Неясно, это должно работать на отдельно взятом компьютере в определённой конфигурации, или это "подарочек" энд-юзерам. Остановка системы в NT - жутко привилегированная операция. Выглядит это в кратце так:
1. ExitWindowsEx запрашивает у работающих процессов согласие на остановку системы.
2. ExitWindowsEx вызывает NtShutdownSystem из ntdll.
3. NtShutdownSystem из ntdll вызывает NtShutdownSystem из ntoskrnl.
4. NtShutdownSystem из ntoskrnl вызывает NtSetSystemPowerState.
5. NtSetSystemPowerState уведомляет драйверы об остановке системы и ждёт когда они закончат операции и остановку устройств.
6. NtSetSystemPowerState останавивает систему, грубо говоря, тем кодом, который приводил пару страниц назад JTG.

На шагах 1 - 3 необходимы привилегии на остановку, на остальных шагах необходима работа в режиме ядра. На подъём привилегий нужны права, ставятся, кстати, в глобальной политике безопасности - Вы их можете и не получить в общем случае. Хотя есть вариант работать от имени SYSTEM. А есть вариант соорудить простенький, буквально на 20 строчек "драйвер", который будет "валить" систему по первому требованию. Правда, тут начнутся неприятности с вистой, которой подавай драйвера с цифровой подписью.
B_N вне форума Ответить с цитированием
Старый 16.07.2008, 16:23   #45
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

Цитата:
Неясно, это должно работать на отдельно взятом компьютере...
Именно тут. Спасибо за разъяснение
Прогрессирующий чайник..
The_Darkness вне форума Ответить с цитированием
Старый 16.07.2008, 16:39   #46
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
Конечно есть такой вариант: подсоединить к компьютеру (через USB или LPT) такое устройство, которое по сигналу нажимало на кнопку на сетевом фильтре, либо какую-нибудь механическую руку, которая бы вытащина вилку из розетки!
Можно ещё заблюскринить машину с клавиатуры с весёлым багчеком 0xDeadDead.

Цитата:
Forcing a System Crash from the Keyboard
A system crash can be directly caused from most non-USB keyboards.

Two preparations must be made before this can be done:

If you wish a crash dump file to be written, you must enable such dump files, choose the path and file name, and select the size of the dump file. For details, see Enabling a Kernel-Mode Dump File.
You must enable the keyboard-initiated crash in the registry. In the registry key HKEY_LOCAL_MACHINE\System\CurrentCo ntrolSet\Services\i8042prt\Paramete rs, create a value named CrashOnCtrlScroll, and set it equal to REG_DWORD 0x1 (or any nonzero value).

The system must be rebooted before these changes will take effect.

After this has been done, the keyboard crash can be initiated as follows. Hold down the rightmost CTRL key, and press the SCROLL LOCK key twice.

It is possible for a system to freeze in such a way that this CTRL+SCROLL LOCK+SCROLL LOCK sequence will not work. However, this should be a very rare occurrence. The CTRL+SCROLL LOCK+SCROLL LOCK crash initiation will work even in many instances where CTRL+ALT+DELETE does not work.

The system then calls KeBugCheck and issues bug check 0xE2 (MANUALLY_INITIATED_CRASH). Unless crash dumps have been disabled, a crash dump file is written at this point.

If a kernel debugger is attached to the frozen machine, the machine will break into the kernel debugger after the crash dump file has been written.



© 2007 Microsoft Corporation
Send feedback on this topic
Debugging Tools for Windows / DRAFT VERSION
October 16, 2007
B_N вне форума Ответить с цитированием
Старый 16.07.2008, 17:01   #47
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
Forcing a System Crash from the Keyboard
У мну кнопки reset на системнике нет, я это вместо него юзаю =)
Цитата:
If a kernel debugger is attached to the frozen machine, the machine will break into the kernel debugger after the crash dump file has been written.
угу, пока стоял syser гад - ловил ) А после того, как снёс - я уж не знаю чего оно или я там нахимичило, но бсод у меня теперь не простой, а с розовым квадратиком дето 40х40 пикселей, который появляется в 50% случаев и всегда в случайном месте синего экрана Oo
пыщь
JTG вне форума Ответить с цитированием
Старый 16.07.2008, 22:42   #48
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

The_Darkness
Это издержки прошлого, переделывать около 100-и проектов не охота.

Код:
Uses shellapi;
procedure OpenProga(Way:String; Param:string = ''; ShowType:integer = 1; Dir:string = '');
begin
shellexecute(application.Handle,pchar('Open'),pchar(way),pchar(param),pchar(Dir),ShowType);
end;

function SysWinDir(Wid:string):string;
var
wind:Array[0..MAX_PATH] of char;
begin
if Wid=win then
 begin
  GetWindowsDirectory(wind,sizeof(wind));
  result:=StrPas(wind);
  exit;
 end;
if Wid=sys then
 begin
  GetSystemDirectory(wind,sizeof(wind));
  result:=StrPas(wind);
  exit;
 end;
end;
shutdown.exe - стандартная Windows, В CMD набери shutdown /? и всё поймёшь

Цитата:
А насчет кода, я наверно дерево, ибо во втором коде Air'а практически ничего не понятно
Тут?
http://www.programmersforum.ru/showp...42&postcount=6
Или тут?
http://www.programmersforum.ru/showp...48&postcount=8
...
Всё гениальное - просто!

Последний раз редактировалось Air; 16.07.2008 в 22:46.
Air вне форума Ответить с цитированием
Старый 16.07.2008, 22:47   #49
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

тут. Худо бедно кусок осилил. GetProcessID и получение привелегии SeDebugPrivilege, остальное скрыто туманом непонимания
Прогрессирующий чайник..
The_Darkness вне форума Ответить с цитированием
Старый 16.07.2008, 23:11   #50
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

The_Darkness
Это вырезки из модулей, если надо могу и их выложить.
advApiHook
NativeAPI
А понимать там толком нечего, код исправный, копируй и радуйся жизни.
там всего несколько новых типов и куча процедур для работы с процессами.

Если интересно, то вот.
http://wasm.ru
http://wasm.ru/publist.php?list=21
полезный сайт.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как можно запустить компьютер без пароля. |{ () T Безопасность, Шифрование 21 01.06.2008 21:37
как выключить/перезагрузить компьютер motaro Паскаль, Turbo Pascal, PascalABC.NET 1 28.03.2008 02:01
Безопасная связка компьютер-компьютер, как организовать наилучшую защиту Alar Операционные системы общие вопросы 3 17.02.2008 21:15
Как выключить удалённый компьютер c помощью Server Socket. muravey Работа с сетью в Delphi 3 09.11.2007 08:09