![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как запустить процесс с привилегиями System
SCL © (2008-12-14 10:16:00)Как запустить процесс от пользователя System и с привилегиями Системы (как некоторые антивирусы)
СовестьДМ (2009-09-13 02:19:00) [1]Удалено модератором
trix (2009-09-13 00:45:00) [2]Запустить как сервис. =)
Игорь (2009-04-29 17:13:00) [3]Вот доделанный вариант, PACL winlogon'у назад возвращаеться
function _RunAsSystem_1(ApplicationName: string; CommandLine: string): Boolean;
var
SI: STARTUPINFO;
PI: PROCESS_INFORMATION;
PSD: PPSecurity_Descriptor;
ppDacl: PACL;
hProcess, hToken: Cardinal;
begin
Result:= False;
hProcess:= OpenProcess(PROCESS_QUERY_INFORMATION, False, GetWinlogonPID);
if hProcess <> 0 then
begin
try
OpenProcessToken(hProcess, MAXIMUM_ALLOWED, hToken);
if hToken <> 0 then
begin
if GetSecurityInfo(hToken, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, @ppDacl, nil, PSD) = ERROR_SUCCESS then
begin
if SetSecurityInfo(hToken, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, nil, nil) = ERROR_SUCCESS then
begin
CloseHandle(hToken);
hToken:= 0;
OpenProcessToken(hProcess, MAXIMUM_ALLOWED, hToken);
if hToken <> 0 then
begin
try
if ImpersonateLoggedOnUser(hToken) then
begin
ZeroMemory(@SI, SizeOf(SI));
SI.cb:= SizeOf(SI);
if CreateProcessAsUser(hToken, PChar(ApplicationName), PChar(CommandLine), nil, nil, False, CREATE_DEFAULT_ERROR_MODE, nil, nil, SI, PI) then
Result:= True;
RevertToSelf;
end;
SetSecurityInfo(hToken, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, ppDacl, nil);
finally
CloseHandle(hToken);
end;
end;
end;
LocalFree(DWORD(ppDacl));
LocalFree(DWORD(PSD));
end;
end;
finally
CloseHandle(hProcess);
end;
end;
end;
Riply (2009-04-29 16:23:00) [4]> [10] Игорь © (12.04.09 10:33)
> Вот держи убогую хрень написанную мной
Ну не совсем уж и убогая :)
Смотрела бегло, но сразу обратила внимание, на то что ты меняешь секюрити у winlogon.
Конечно это никуда не годится, надо искать другой путь.
(Вариант временно изменить и потом вернуть обратно тож плох).
Так что, если конечно интерес не пропал, дерзайте дальше :)
P.S.
Есть там еще ошибки, но они меркнут в сравнении с описанной выше :)
Игорь (2009-04-12 10:33:00) [5]Вот держи убогую хрень написанную мной
RunAsSystem под 2000, 2003, XP, Vista
http://www.onlinedisk.ru/file/118954/
(2009-04-11 06:39:00) [6]Удалено модератором
user00 (2009-04-10 19:27:00) [7]Запустить файл как сервис
Eraser (2009-01-29 16:54:00) [8]> [6] apic (29.01.09 12:20)
можешь не ждать, а купить книгу Руссиновича, там все описано и даже готовое решение есть http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
apic (2009-01-29 12:20:00) [9]Fighter, ждем тебя! Мне тоже интересно...
Fighter (2009-01-03 04:48:00) [10]Гдето на работе валялся асемблерный исходник который такое делат. доберусь до работы и если вспомню напишу. Вспоминается что там используется функция GetKernelObjectSecurity которая получает SecurityDescriptor. потом следует танец с бубном и CreateProcess
Eraser (2008-12-15 18:02:00) [11]> Как запустить процесс с привилегиями System
вызвать CreateProcess из приложения с правами и привилегиями System.
МистерТ (2008-12-15 16:53:00) [12]Это называется системная служба или сервис.
Но права там далеко не системные.
Leonid Troyanovsky (2008-12-14 16:31:00) [13]
> SCL © (14.12.08 10:16)
> Как запустить процесс от пользователя System
Ну, например, через Schedule, если оно от лица System,
то и все им пущеннные будут таковыми.
--
Regards, LVT.
Игорь Шевченко (2008-12-14 13:05:00) [14]1. Процесс всегда можно увидеть
2. Процесс всегда можно убить
3. Систему безопасности в Windows разрабатывали умные люди.