Хочу убить winlogon.exe Вот, обясните пожайлуста, - получаю привилегии, что дальше делать? Пытаюсь грохать, но некаких реакций... Код (Text): .data szNamee db "SE_DEBUG_NAME" pr PROCESSENTRY32 <?> hs dword ? .code Privilegii proc local hToken:HANDLE local tkp:TOKEN_PRIVILEGES invoke GetCurrentProcess mov ecx,eax invoke OpenProcessToken,ecx,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,addr hToken .if eax != 0 invoke LookupPrivilegeValue,0,addr szNamee,addr tkp.Privileges.Luid .if eax != 0 mov tkp.PrivilegeCount,1 mov tkp.Privileges.Attributes,SE_PRIVILEGE_ENABLED invoke AdjustTokenPrivileges,hToken,0,addr tkp,0,0,0 .if eax != 0 invoke GetLastError .if eax == ERROR_SUCCESS mov eax,1 .else xor eax,eax .endif .endif .endif push eax invoke CloseHandle,hToken pop eax .endif ret Privilegii endp start: invoke Privilegii @Q:mov pr.dwSize,sizeof PROCESSENTRY32 invoke CreateToolhelp32Snapshot,2,0 mov dword ptr [hs],eax invoke Process32First,dword ptr [hs],offset pr @@:test eax,eax jz @E invoke MessageBoxA,0,offset pr.szExeFile,$CTA0('process'),0 invoke lstrcmp,offset pr.szExeFile,$CTA0('WINLOGON.EXE') test eax,eax jz @K @N:invoke Process32Next,dword ptr [hs],offset pr jmp @B @K:invoke OpenProcess,0001h,0,pr.th32ProcessID test eax,eax jz short @N invoke TerminateProcess,eax,0 invoke CloseHandle,eax jmp short @N @E:invoke CloseHandle,dword ptr [hs] invoke ExitProcess,0 end start
В коде вроде бы все правильно. Так ты получаешь hProcess, или TerminateProcess не работает? Я попробовал на Си - winlogon убивается исправно. Но когда я набрал WINLOGON.EXE большими буквами, как у тебя, то не получил hProcess. Попробуй маленькими.
Sorry, прогнал, наверное у тебя XP. Кажется, ошибка в Privilegii: у тебя szNamee db "SE_DEBUG_NAME" а в WINNT.H: #define SE_DEBUG_NAME TEXT("SeDebugPrivilege")
PRIVILEGII: push eax push ADJUST_CURRENT_PROCESS push 1 push SE_DEBUG_PRIVILEGE Call eax pop eax eax== address RtlAdjustPrivilege(ntdll) successful eax == 0 SE_DEBUG_PRIVILEGE equ 20 ADJUST_CURRENT_PROCESS equ 0