![]() |
воть:
практически всё переписывал из мсдн на сайте мелко-мягких 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 на разных машинах срабатывает только если запускать этот код через телнет |
ukms
погляди у меня на сайте исходник для платформы Win32 (то есть, не Native). Заменить ZwShutdownSystem опционально на ExitWindowEx. а че же не в машинных кодах? |
погляди у меня на сайте исходник для платформы Win32 (то есть, не Native). Заменить ZwShutdownSystem опционально на ExitWindowEx.
ээээ ... чего-то я не понял твой исходник :gigi: дурак наверное.... а че же не в машинных кодах? типа 3A E6 A1 00 ??? |
ukms
Rtl* - получает привилегии. Zw* - грохает. че-там не ясно-то? |
Ц на таком уровне я не знаю :gigi:
да и функций таких у мелко-мягких я не видел ни на сайте ни в мсдн как стандартным способом перезагрузить ? ведь моя последовательность должна работать (и работает из под телнета) ! Добавлено: extern говоришь ? а дизасм или исходник этого extern-a где мона найти ? Rtl, Zw.... хм.... Добавлено: мдя.... нашел... конечно заманчиво эту dll использовать ;) но интересно все-же, ПАЧУМУ НЕ РАБОТАЕТ ! |
ukms
почему у тебя твой код не работает - не знаю, как-то лень все эти пуши считать :gigi: напиши на сях, глядишь, и разберемся. |
вот ! за 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); } |
Цитата:
:gigi: |
Понимаю, что это изврат, но что делать ?
Придется заняться :gigi: ida ком цу мир ! :biggrin: :biggrin: |
короче плюнул и сделал как у тебя :biggrin:
ничо шо я дизасемблер твоей проги поковырял ? :gigi: :gigi: класно ребутит и главное - быстро ! вот только приходится отдельно dll грузить - хочу чобы и на 98 работала :down: вот а с примером мелкомягких я разберусь, блин достало хоть из ида готовый копируй :down: :down: :down: Добавлено: пример мелкомягких :down: Короче как я не бился, работать он отказывается :( я переписал дизасемблированный код из ida в свою программку и о боже - она заработала :o :o :o Ничо не понимаю ! Скомпилированный бц код делает все то же что и я, получает все тоже что и я (те же значения). Отличие лишь в том что его код (ВС) создает временные структуры на стеке. Это TOKEN_PRIVILEGES , LUID_AND_ATTRIBUTES и иже с ними. я же делаю и заполняю эту структуры в отдельной области памяти. |
а в спящий режим слабо? :))))))
|
Dru
Если мне, то не слабо, только мне это не надо, я им не пользуюсь. |
Время: 17:37. |
Время: 17:37.
© OSzone.net 2001-