SeDebugPrivilege в Vista x64
От: Bukmop_POCTOB  
Дата: 11.03.09 17:03
Оценка:
Кто нибуть может объяснить почему это:
int _tmain()
{ 
    HANDLE hThread ;
    ULONG uTID, uID = name2pid(TEXT("KeyTrans.exe"));
    _tprintf(TEXT("%d\n"), uID );
    EnableDebugPrivilege(TRUE);
    HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, uID);
    if (hProc)
    {
        hThread = CreateRemoteThread(hProc, NULL, 0, (LPTHREAD_START_ROUTINE)GetProcAddress( GetModuleHandle(TEXT("kernel32.dll")), "ExitProcess"), 0, 0, &uTID);
        if (hThread == NULL)
            _tprintf(TEXT("CreateRemoteThread Error %d\n"), GetLastError() );
    }
    else
        _tprintf(TEXT("OpenProcess Error %d\n"), GetLastError() );

    return 0;
}

запускается из под пользователя. KeyTrans.exe просто для эксперимента.
ОСь Vista SP1 x64 с последними обновлениями, компилилось для Win32 и Win32Debug, оба варианта работают. UAC бровью не повел
Re: SeDebugPrivilege в Vista x64
От: Аноним  
Дата: 11.03.09 17:08
Оценка: +1
Потому что debug privileges нужны чтобы открывать процесс в DACL которого нету явного разрешения на ваш токен.
Для того чтоб открывать процессы своего юзера (и своего IL спод вистой) debug priviledges никогда не были нужны.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.