PDA

Просмотр полной версии : Неполучается получить отладочные привелегии


_nic
14.10.2009, 23:25
Собственно вот код по кусочкам нарыт из гугла и форумов

HANDLE hToken;
TOKEN_PRIVILEGES Priv,PrivOld;
DWORD cbPriv = sizeof(PrivOld);
ZeroMemory(&Priv,sizeof(Priv));
if (!OpenThreadToken(GetCurrentThread(),TOKEN_QUERY|T OKEN_ADJUST_PRIVILEGES,FALSE, &hToken))
{
OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY|T OKEN_ADJUST_PRIVILEGES,&hToken );
SetLastError(0);
}
_ASSERTE(ANYSIZE_ARRAY > 0);
Priv.PrivilegeCount = 1;
Priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&Priv.Privileges[0].Luid))
{
WaitForSingleObject(&Priv.Privileges[0].Luid,INFINITE);
}
LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&Priv.Privileges[0].Luid);
AdjustTokenPrivileges(hToken,FALSE,&Priv,sizeof(Priv),&PrivOld,&cbPriv);
AdjustTokenPrivileges(hToken,FALSE,&PrivOld,sizeof(PrivOld),NULL,NULL);
CloseHandle(hToken);

На строчке LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&Priv.Privileges[0].Luid); получаю ошибку ERROR_IO_PENDING, у пользователя под которым собирается код есть админские права.В чем может быть дело?

slesh
15.10.2009, 00:06
вот попробуй мой код. Для проверки корректности работы использую ProcessExplorerNT - он показывает наличие отдочных привилегий
DebugPrivilege(true) - поставить
DebugPrivilege(false) - убрать


BOOL DebugPrivilege(BOOL Enable)
{
HANDLE hToken;
TOKEN_PRIVILEGES tp;
ULONG d;
ULONG ret = false;

if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
{
tp.PrivilegeCount = 1;
LookupPrivilegeValueA(0, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
if (Enable)
{
tp.Privileges[0].Attributes = 0x00000002;
}
else
{
tp.Privileges[0].Attributes = 0x80000000;
}

ret = AdjustTokenPrivileges(hToken, false, &tp, sizeof(TOKEN_PRIVILEGES), 0, &d);

CloseHandle(hToken);
}

return ret;
}


Если не помогает, значит стоит какаято защита которая это не дает тебе сделать. Кстати каспер при некоторых настройках орет на программы которые пытаются получить эти привилегии )
Еще может быть из-за политики безопасности, так что на вся случай проверь работу еще и на учетке главного админа

_nic
15.10.2009, 03:07
Та же самая ошибка :( ВОт ведь хрень непонятная.И защите такой не откудого взятся.Мне как то по пиду процесса надо узнать путь к его исполняему файлу.А как я его узнаю если указатель на процесс хрен получишь =/

BrainDeaD
15.10.2009, 03:37
сам компайлер должен быть запущен с пвышенными привилегиями (run as). во всяком случае у меня так на висте + visual studio

Ra$cal
15.10.2009, 08:19
Мне как то по пиду процесса надо узнать путь к его исполняему файлу
http://msdn.microsoft.com/en-us/library/ms686701%28VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms684839%28VS.85%29.aspx

Gar|k
15.10.2009, 08:49
http://www.wasm.ru/article.php?article=hiddndt