![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как запустить в отладочном режиме? [D6, Win2k]
ers © (2003-01-17 09:28:00)Народ!
Как можно запустить какуюнибудь прогу с отладочными привелегиями, а ещё лучше если саму себя запустить с этими привелегиями.....
И вопрос ещё один! Если мы запустили прогу с отладочными привелегиями, то родитель должен постоянно висеть или нет?
Nick_N_A (2003-01-18 05:26:00) [1]Допустим нашли мы прогу, стартовали, подготовили,
но у меня получается ее только запускать и останавливать,
Suspend/Resume, а как просмотреть переменные/память, и т д ?
GetAce вроде тепло, но неработает . . .
SeF (2003-01-18 00:38:00) [2]опс.. :)
var
hToken:THandle;
SeDebugNameValue:Int64;
tkp:TOKEN_PRIVILEGES;
ReturnLength:Cardinal;
hProcess:THandle;
pfnExitProcess: Pointer;
hInstance: Integer;
hThread: DWORD;
begin
if not OpenProcessToken( GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken )
then exit;
...
SeF (2003-01-18 00:36:00) [3]Установка/снятие debug привилегии:
if not OpenProcessToken( GetCurrentProcess(),
var
hToken:THandle;
SeDebugNameValue:Int64;
tkp:TOKEN_PRIVILEGES;
ReturnLength:Cardinal;
hProcess:THandle;
pfnExitProcess: Pointer;
hInstance: Integer;
hThread: DWORD;
begin
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken )
then exit;
// Получаем LUID привилегии
if not LookupPrivilegeValue( nil, "SeDebugPrivilege", SeDebugNameValue )
then begin
CloseHandle(hToken);
exit;
end;
tkp.PrivilegeCount:= 1;
tkp.Privileges[0].Luid := SeDebugNameValue;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
// Добавляем привилегию к нашему процессу
AdjustTokenPrivileges(hToken,false,tkp,SizeOf(tkp),tkp,ReturnLength);
if GetLastError()<>ERROR_SUCCESS then exit;
// делаем что хотим
// Удаляем привилегию
tkp.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(tkp), tkp, ReturnLength);
if GetLastError() <> ERROR_SUCCESS
then exit;
end;
ers (2003-01-17 16:26:00) [4]А как конкретно это осуществить?
SeF (2003-01-17 11:17:00) [5]если себя то "включи" себе debug привилегию (если запускается под админом)
Digitman (2003-01-17 09:30:00) [6]см. CreateProcess[Ex] c флагом DEBUG_PROCESS