· Начало · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Убить Казу!

Посл.отвђт Сообщенiе


Дата: Июн 2, 2004 03:07:24

Hi!
Есть у меня функция - пробегается по списку процессов и всех кого может убивает. Раньше все было хорошо. Вышла Каза новой версии - не могу его срубить :( Я администратор на машинке, получаю права "SeDebugPrivilege", ищу kazaa.exe и пытаюсь убить, но все равно на OpenProcess для казы возврашает 5 ( access denied).
Может какая еще привилегия нужна?

Схема работы такая:
AdjustTokenPrivileges - получаю привилегии ( возвращает ERROR_SUCCESS)

Ищу процесс с помощью CreateToolhelp32Snapshot

Убиваю процесс
invoke OpenProcess, PROCESS_TERMINATE , 1, [uProcess.th32ProcessID]
ВОт тут-то мне и говорит ACCESS_DENIED

Если кто меня научит вставлять сюда код в нормальном виде - пришлю всю функцию, вещь-то полезная :). Кстати, систему валит в синий экран "на ура" если убивать все подряд


Дата: Июн 2, 2004 03:49:35 · Поправил: Toxic

Дык кто ж в здравом рассудке казой будет пользоваться? Ставь Kazaa Lite K++. Она бесплатная, без шпионской начинки и имеет много дополнительных фич.


Дата: Июн 2, 2004 10:34:49

Попробуй с флажками поиграть.
Пишут, что можно любой флаг комбинировать с флагом STANDARD_RIGHTS_REQUIRED, только зачем он - узнать не удалось. Но попробуй с ним, есть мнение, что может помочь.
А ты уверен, что правильно нашел ID процесса? Ошибка такая возможна при обращении к несуществующему процессу.


Дата: Июн 2, 2004 12:29:30

surfcontrol
Если ты ничего не пропустил, то посмотри вот эту тему:
Как противостоять TerminateProcess, узнаешь для себя много нового.

Если же пропустил, потому что считал, что это и дуракам понятно, то попробуй для начала проверить, работают ли стандартные утилиты - taskkill из ResourceKit для Win2K, kill для WinXP, плагин ProcessList из FAR Manageer'а...

n0p
Проверять лень, но мне кажется, что при обращении к несуществующему процессу должна получаться ошибка 2 (file not found).


Дата: Июн 2, 2004 21:59:02

Спасибо за ответы. Вчера покопался еще пару часовю Вотчто выяснил:
1. Таск манагер убивает казу легко.
2. Про "неуничтожаемые процессы" - читал, сам хочу такой сделать, похоже каза не из них
3. Написал програмку - убивает казу, если ее запускаешь из эксплорера.
4. Если Я запускаю эту же программу из своей программы, то каза остается жить :(
5. Если я в код своей программы вставляю функцию убийства, то она тоже не убивает казу :(

Сделал вывод, что Эксплорер как-то "не так запускает" программу. Вернее я ее запускаю не так. Я использую
такой код запуска ( как параметр - имя запускаемой проги)


RunExe proc lpname:DWORD, mode:BOOL

LOCAL startInfo:STARTUPINFO
LOCAL processI: PROCESS_INFORMATION
LOCAL hProc : DWORD


invoke GetStartupInfo,ADDR startInfo
invoke CreateProcess,lpname, NULL,NULL,NULL,FALSE,\
NORMAL_PRIORITY_CLASS,\
NULL,NULL,ADDR startInfo,ADDR processI
.if eax== 0
mov eax, -1
ret
.endif
mov hProc, eax
.if mode== TRUE
invoke WaitForSingleObject, hProc, INFINITE
.endif
invoke CloseHandle, hProc

xor eax, eax
ret

RunExe endp

Сейчас буду смотреть в сторону CreateProcess, хотя знаний мало :)

P.S.
Другие программы ( фар, ИЕ, ....) срубаются в легкую....


Дата: Июн 3, 2004 02:08:28

Всё. Извините за беспокойство (сами мы не местные и т.д.)
Дело в том, что для получения привилегий использовал глобальную переменные, которые также использовались в другой функции для получения привилегии на перезагрузку.
Как только сделал все их локальными - заработало.