Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Как перезагрузить НТ (win 2000) ??? (http://forum.oszone.net/showthread.php?t=30807)

ukms 20-09-2002 15:20 210250

воть:

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

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 на разных машинах
срабатывает только если запускать этот код через телнет


vasketsov 20-09-2002 16:01 210251

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

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

ukms 20-09-2002 16:29 210252

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

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

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

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

vasketsov 20-09-2002 16:33 210253

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

ukms 20-09-2002 17:08 210254

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

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

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

Добавлено:

extern говоришь ?

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

Добавлено:

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

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

vasketsov 24-09-2002 10:39 210255

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

ukms 25-09-2002 10:34 210256

вот ! за 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);
}

vasketsov 25-09-2002 11:12 210257

Цитата:

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

ukms 25-09-2002 15:10 210258

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

ida ком цу мир ! :biggrin: :biggrin:

ukms 25-09-2002 17:54 210259

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

вот

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

Добавлено:

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


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

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

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


Dru 09-10-2002 10:02 210260

а в спящий режим слабо? :))))))

vasketsov 09-10-2002 13:17 210261

Dru
Если мне, то не слабо, только мне это не надо, я им не пользуюсь.


Время: 17:37.

Время: 17:37.
© OSzone.net 2001-