Почему не устанавливается SeDebugPrivilege? .data szA db "SeDebugPrivilege",0 szFmt db "Error code: %lu [%lu] [%lu]",0 hToken dd 0 tkp TOKEN_PRIVILEGES <> .data? szBuf db 24 dup (?) .code start: invoke GetCurrentProcess invoke OpenProcessToken, eax, 32, ADDR hToken invoke LookupPrivilegeValue, 0, ADDR szA, ADDR tkp.Privileges[0].Luid mov tkp.PrivilegeCount,1 mov tkp.Privileges[0].Attributes, 2 invoke AdjustTokenPrivileges, hToken, 0, ADDR tkp, 16, 0, 0
RamMerLabs Успешно ли выполняются OpenProcessToken, LookupPrivilegeValue и AdjustTokenPrivileges? Зачем 16 после ADDR tkp ведь пятый параметр AdjustTokenPrivileges равен нулю?
может я тупой, но где-то в этих процедурах( по крайней мере в MSDN был параметр, причом 8-байтный)... не вижу, чтобы здесь он передавался как 8 байт - по умолчанию ведь пишецца 4 байта!
Код (Text): invoke OpenProcessToken,-1,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,ADDR hToken ; открываем токен текущего процесса для изменения привелегий invoke LookupPrivilegeValue,NULL,ADDR Debug_Privilege_Name,ADDR Debug_Privilege mov TKP.PrivilegeCount,1 lea esi,Debug_Privilege ; откуда... mov edi,OFFSET TKP.Privileges.Luid ; куда... movsd movsd ; записать(два раза ибо 8 байт) mov TKP.Privileges.Attributes,SE_PRIVILEGE_ENABLED invoke AdjustTokenPrivileges,hToken,FALSE,ADDR TKP,NULL,NULL,NULL ; включаем привилегии отладчика invoke CloseHandle,hToken ; закрываем хэндл токена У меня вышеприведенный кусок работает замечательно... Выдрал из ProcessKiller'а
RamMerLabs ошибку выдает только AdjustTokenPrivileges Какую ошибку? Из тебя клещами тянуть? размер структуры! Какой структуры? Ты документацию читаешь? Там, между прочим, написано, что четвертый параметр = это размер буфера (в твоей интерпретации "размер структуры!"), адрес которого передается в пятом параметре, ты же в пятом параметре передаешь НОЛЬ, т.е. предлагаешь ОС записать по адресу НОЛЬ шестнадцать байт.