Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Неполучается получить отладочные привелегии |

14.10.2009, 23:25
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Неполучается получить отладочные привелегии
Собственно вот код по кусочкам нарыт из гугла и форумов
Код:
HANDLE hToken;
TOKEN_PRIVILEGES Priv,PrivOld;
DWORD cbPriv = sizeof(PrivOld);
ZeroMemory(&Priv,sizeof(Priv));
if (!OpenThreadToken(GetCurrentThread(),TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES,FALSE, &hToken))
{
OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY|TOKEN_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.Priv ileges[0].Luid); получаю ошибку ERROR_IO_PENDING, у пользователя под которым собирается код есть админские права.В чем может быть дело?
|
|
|

15.10.2009, 00:06
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
вот попробуй мой код. Для проверки корректности работы использую 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;
}
Если не помогает, значит стоит какаято защита которая это не дает тебе сделать. Кстати каспер при некоторых настройках орет на программы которые пытаются получить эти привилегии )
Еще может быть из-за политики безопасности, так что на вся случай проверь работу еще и на учетке главного админа
|
|
|

15.10.2009, 03:07
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Та же самая ошибка  ВОт ведь хрень непонятная.И защите такой не откудого взятся.Мне как то по пиду процесса надо узнать путь к его исполняему файлу.А как я его узнаю если указатель на процесс хрен получишь =/
|
|
|

15.10.2009, 03:37
|
|
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме: 3516666
Репутация:
439
|
|
сам компайлер должен быть запущен с пвышенными привилегиями (run as). во всяком случае у меня так на висте + visual studio
|
|
|

15.10.2009, 08:19
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
Мне как то по пиду процесса надо узнать путь к его исполняему файлу
http://msdn.microsoft.com/en-us/library/ms686701%28VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms684839%28VS.85%29.aspx
|
|
|

15.10.2009, 08:49
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
http://www.wasm.ru/article.php?article=hiddndt
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|