Сейчас на форуме: hgdagon, asfa (+3 невидимых)

 eXeL@B —› Программирование —› Получние хендла прцоесса
Посл.ответ Сообщение

Ранг: 46.9 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 22 июня 2007 01:55
· Личное сообщение · #1

Подскажите плиз как по имени прцоесса или его PID получить хендл

Пробывал вот так: handle:=OpenProcess(PROCESS_ALL_ACCESS, true, pid),что-то неработает



Ранг: 19.1 (новичок), 4thx
Активность: 0.010
Статус: Участник

Создано: 22 июня 2007 02:15 · Поправил: OSA
· Личное сообщение · #2

Некоторые процессы не позволяют получать Handle через OpenProcess (например процессы антивируса касперского).
Эти хэндлы можно достать из процесса csrss.exe (подробнее читай статью MS'Rem на wasm.ru)

ЗЫ. Для исп-ия PROCESS_ALL_ACCESS нужно для начала права выставить процессу, вроде бы.



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 22 июня 2007 02:55 · Поправил: Bitfry
· Личное сообщение · #3

Zloy пишет:
Пробывал вот так: handle:=OpenProcess(PROCESS_ALL_ACCESS, true, pid),что-то неработает

И что происходит (GetLastError) ?
Попробуй (PROCESS_VM_READ, FALSE, pid).
Только, сам понимаешь, pid нужен текущий

-----
Всем привет, я вернулся





Ранг: 66.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 22 июня 2007 08:21
· Личное сообщение · #4

Процесс любого (почти) антивируса обычным OpenProcess открыть не получится



Ранг: 39.6 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 22 июня 2007 09:58 · Поправил: NetSpider
· Личное сообщение · #5

Попробуй так. Для начала выполнить это
int WINAPI EnableDebugPrivilegeNT()
{
HANDLE hToken;
LUID DebugValue;
TOKEN_PRIVILEGES tkp,PreviousState;
DWORD ReturnLength = 0;
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_Q UERY,&hToken)) return -2;
if (!LookupPrivilegeValue(NULL,"SeDebugPrivilege",&DebugValue)) return -3;
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = DebugValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,sizeof(TOKEN_PRIVILEGES),&Pre viousState,&ReturnLength);
if (GetLastError()!=ERROR_SUCCESS) return -4;
return 0;
}

А процесс убивал кодом ниже . Хендл в строке
CurProcessHandle = OpenProcess(PROCESS_TERMINATE, FALSE, ProcStruct.th32ProcessID) я получил

void WINAPI KillTasks(LPSTR Application)
{
HANDLE CurProcessHandle;
HANDLE SnapshotHandle;
PROCESSENTRY32 ProcStruct;
if (!(SnapshotHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0))) return;
ProcStruct.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(SnapshotHandle,&ProcStruct))
do{
if (!strcmp(ProcStruct.szExeFile,Application)){
if (!(CurProcessHandle = OpenProcess(PROCESS_TERMINATE, FALSE, ProcStruct.th32ProcessID))) goto fastexit;
TerminateProcess(CurProcessHandle,0);
}
}while (Process32Next(SnapshotHandle,&ProcStruct));
fastexit:
CloseHandle(SnapshotHandle);
return;
}

Только права админа нужны край...




Ранг: 66.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 22 июня 2007 15:34
· Личное сообщение · #6

NetSpider
Попробуй таким же способом убить Norton Antivirus 2007




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 22 июня 2007 15:38
· Личное сообщение · #7

AdOLF_04
Что ты прицепился к антивирусам?
Где у топикстартера пишется про антивирусы?? Мы не пишем вири, нам не надо убивать нортон антивирус.



Ранг: 47.5 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 22 июня 2007 16:46
· Личное сообщение · #8

Статья ms-rem'а про получение хэндлов процессов в том чилсе:
www.wasm.ru/article.php?article=apihook_2




Ранг: 66.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 22 июня 2007 19:26
· Личное сообщение · #9

Ara
OSA пишет:
Некоторые процессы не позволяют получать Handle через OpenProcess (например процессы антивируса касперского).



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

Ara пишет:
Мы не пишем вири

Цитату в студию, где я говорю, что кто-то пишет вири.



Ранг: 228.7 (наставник), 2thx
Активность: 0.120
Статус: Участник
malware research

Создано: 22 июня 2007 19:36
· Личное сообщение · #10

Зря шумите, ИМХО топикстартер просто забыл SeDebugPrivilege включить

-----
Research is my purpose





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 22 июня 2007 19:56
· Личное сообщение · #11

AdOLF_04 пишет:
Цитату в студию, где я говорю, что кто-то пишет вири.

Ваш четвертый пост...
К чему он был сказан? Оповестить всех о своей осведомленности о сабже про аверы? Дык это не секрет ни для кого. Зря стараемся.


 eXeL@B —› Программирование —› Получние хендла прцоесса
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати