Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Как перезагрузить НТ (win 2000) ???

Ответить
Настройки темы
Как перезагрузить НТ (win 2000) ???

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


воть:

практически всё переписывал из мсдн на сайте мелко-мягких

token_handle dd 0
mashine_process_handle dd 0
token_privileges dd 1 ;privilege count
luid dd 0 ;luid lo
dd 0 ;luid hi
attributez dd SE_PRIVILEGE_ENABLED
token db 'SeShutdownPrivilege',0
TOKEN_QUERY equ 8
TOKEN_ADJUST_PRIVILEGES equ 20h
SE_PRIVILEGE_ENABLED equ 2
EWX_REBOOT equ 2
EWX_SHUTDOWN equ 1
EWX_FORCE equ 4


start:

call GetCurrentProcess ; установка привилегий на ребут
mov mashine_process_handle,eax

push offset token_handle
push TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY
push mashine_process_handle
call OpenProcessToken

or eax,eax
mov token_flag,eax
jz short mashine_nt ; если не НТ то привилегии пофиг

push offset luid
push offset token ; собсно установка привилегий
push offset system
call LookupPrivilegeValueA

push 0
push 0
push 0
push offset token_privileges
push 0
push token_handle
call AdjustTokenPrivileges <--- вот тут ошибка ERROR_NOACCESS и следовательно ExitWindowsEx посылает к билу гейтсу

push 0FFFFh
push EWX_FORCE or EWX_REBOOT or EWX_SHUTDOWN
call ExitWindowsEx
or eax,eax
jz short mashine_no_reboot
push 0
call ExitProcess

пробовал на win 2000 на разных машинах
срабатывает только если запускать этот код через телнет

-------
типо человек


Отправлено: 15:20, 20-09-2002

 

Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


ukms
погляди у меня на сайте исходник для платформы Win32 (то есть, не Native). Заменить ZwShutdownSystem опционально на ExitWindowEx.

а че же не в машинных кодах?

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 16:01, 20-09-2002 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


погляди у меня на сайте исходник для платформы Win32 (то есть, не Native). Заменить ZwShutdownSystem опционально на ExitWindowEx.

ээээ ...   чего-то я не понял твой исходник
дурак наверное....

а че же не в машинных кодах?

типа 3A E6 A1 00 ???

-------
типо человек


Отправлено: 16:29, 20-09-2002 | #3


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


ukms
Rtl* - получает привилегии.
Zw* - грохает.
че-там не ясно-то?

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 16:33, 20-09-2002 | #4


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ц на таком уровне я не знаю

да и функций таких у мелко-мягких я не видел ни на сайте ни в мсдн

как стандартным способом перезагрузить ? ведь моя последовательность должна работать (и работает из под телнета) !

Добавлено:

extern говоришь ?

а дизасм или исходник этого extern-a где мона найти ?
Rtl, Zw.... хм....

Добавлено:

мдя.... нашел...
конечно заманчиво эту dll использовать

но интересно все-же, ПАЧУМУ НЕ РАБОТАЕТ !

-------
типо человек


Отправлено: 17:08, 20-09-2002 | #5


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


ukms
почему у тебя твой код не работает - не знаю, как-то лень все эти пуши считать
напиши на сях, глядишь, и разберемся.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 10:39, 24-09-2002 | #6


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


вот ! за 5 мин написал и собака - работает ! как часы !
все дело в том что надо на асме ;(
так что вопрос остается открытым

#include <windows.h>
#include <stdio>
#include <stdlib>
#include <iostream>
#pragma  argsused

int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine,
int nCmdShow)
{

HANDLE hToken;
TOKEN_PRIVILEGES tkp;
DWORD ReturnLength;

OpenProcessToken ( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
&hToken);

 LookupPrivilegeValue(NULL, "SeShutdownPrivilege", &tkp.Privileges[0].Luid);

 tkp.PrivilegeCount=1;
 tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, &ReturnLength);
ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0);
}

-------
типо человек


Отправлено: 10:34, 25-09-2002 | #7


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
все дело в том что надо на асме ;(
так что вопрос остается открытым
дизассемблируй и найди 10 отличий

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 11:12, 25-09-2002 | #8


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Понимаю, что это изврат, но что делать ?
Придется заняться

ida ком цу мир !

-------
типо человек


Отправлено: 15:10, 25-09-2002 | #9


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


короче плюнул и сделал как у тебя
ничо шо я дизасемблер твоей проги поковырял ?
класно ребутит и главное - быстро ! вот только приходится отдельно dll грузить - хочу чобы и на 98 работала

вот

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

Добавлено:

пример мелкомягких


Короче как я не бился, работать он отказывается
я переписал дизасемблированный код из ida в свою программку
и о боже - она заработала

Ничо не понимаю !

Скомпилированный бц код делает все то же что и я, получает все тоже что и я (те же значения). Отличие лишь в том что его код (ВС) создает временные структуры на стеке. Это TOKEN_PRIVILEGES , LUID_AND_ATTRIBUTES и иже с ними. я же делаю и заполняю эту структуры в отдельной области памяти.

-------
типо человек


Отправлено: 17:54, 25-09-2002 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Как перезагрузить НТ (win 2000) ???

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как решить проблему в win 2000? Rusman Microsoft Windows NT/2000/2003 4 31-08-2006 10:20
Перезагрузить Windows 2000 AlexK47 Microsoft Windows NT/2000/2003 2 19-03-2006 00:18
Как реализовать вход в win 2000 server ? Rommsht Microsoft Windows NT/2000/2003 7 23-07-2005 12:37
DOS Клиент Для WIN 2000 Prof, Win 9x,Win NT4 Leonardo Сетевые технологии 10 28-04-2004 09:44




 
Переход