Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизКак програмно завершить процесс ? Найти похожие ветки
← →
Delphin © (2004-02-15 20:11) [0]Hi ALL! Как пронрамно завершить процесс?
Если убить чужое приложение можно так:
Var
h:HWND;
H:=FindWindow(nil,"Windows Media Player");
IF H<>0 Then
SendMessage(H, WM_Destroy, 0, 0);
То как можно убить сам процесс ?
← →
Defunct © (2004-02-15 20:37) [1]H := Application.Handle?
> То как можно убить сам процесс ?
О каком процессе идет речь?
← →
Delphin © (2004-02-15 23:10) [2]Defunct © (15.02.04 20:37) [1] Ну напрмер svchost, тоесть совершенно чужой
← →
Alexander666 © (2004-02-16 00:54) [3]Смотри статью в РСДН, правда там сях...
← →
Alexander666 © (2004-02-16 00:56) [4]
> Defunct © (15.02.04 20:37) [1]
> H := Application.Handle?
Как так... или у меня крыша уже едет?!
← →
BlackBaracuda © (2004-02-17 16:30) [5]Ты что, хочешь как Lovesan?
Я тоже так хочу, так скажите как убить процесс?
← →
KosilkA © (2004-02-17 18:20) [6]terminateprocess... блин :-))))
← →
Delphin © (2004-02-18 15:53) [7]BlackBaracuda © (17.02.04 16:30) [5]
Если быть точнее, то написать утилиту по удалению такой гадости (у меня на второй машине сидит такая бяка: имя Svchos1.exe, Размер: около 70 Кб, Сидит в C:\WINDOWS\system32, сама вырубает антивирусник, Firewall, при открытии реестра сама его закрывает, при завершении процесса снова его возобновляет:), в принципе можно удалить из под доса, но это не совсем интересно, для меня больший интерес составит написать утилиту для удаления таких тварей. У меня тут в локальной сети компьютеров штук 30, из них примерно 25 заразные, во казлов то развелось, это надо быть полностью слепым чтобы не заметить прибывание вражеского приложения. Однако самое весёлое, что у Касперского на сайте я не нашёл не одного подобного описания к вирусу. Хотя он проявляет себя также, как и msblast, и распостраняеться не по почте, скорее всего через Exploit в системе. ( я на ту машину только установил винду и антивирусник, тут решил сделать Update для всего этого дела, как тут-же заразился)
← →
Delphin © (2004-02-18 15:58) [8]Есть сабж на С++ (простой Процесс мэнеджер, он показывает все процесы в системе), вот только я не особо силён в С++, могу понять только половину из этого сабжа.
А идея у меня примерно такая: Получить список всех процессов, если есть нужный мне процесс, то уничтожить его (тут я думаю, что можно запустить бесконечный цикл на поиск данной процедуры, если она сушествует, то завершить процесс, по хору дела удалить сам *.exe вражеского приложения, а после очистить реестр)
Сабж:
#include <windows.h>
#include <tlhelp32.h>
#include "resource.h"
#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/SECTION:.text,EWRX")
#pragma comment(linker,"/ENTRY:WinMain")
HANDLE hThread,hProcess;
DWORD dwlist[64];
int ind;
bool endthread = true;
void EnableDebugPrivilege(bool fEnable){
HANDLE hToken;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)){
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
AdjustTokenPrivileges(hToken, false, &tp, sizeof(tp), NULL, NULL);
CloseHandle(hToken);
}
}
DWORD __stdcall ListPID(LPVOID _hwnd){
HWND hwnd = (HWND)_hwnd;
EnableDebugPrivilege(true);
int count = 0;
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
PROCESSENTRY32 pe32 = {0};
pe32.dwSize = sizeof(PROCESSENTRY32);
Process32First(hSnap,&pe32);
do {
dwlist[count++] = pe32.th32ProcessID;
SendMessage(hwnd, LB_ADDSTRING, 0, (LPARAM)pe32.szExeFile);
SendMessage(hwnd, LB_SETCURSEL, (WPARAM)SendMessage(hwnd, LB_GETCOUNT, 0, 0)-1, 0);
} while (Process32Next(hSnap, &pe32));
return TRUE;
}
int __stdcall Dlg_Proc(HWND hwnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
switch (wMsg){
case WM_INITDIALOG:
hThread = CreateThread(0, 0, ListPID, (LPVOID)GetDlgItem(hwnd,IDC_LIST1), 0, 0);
break;
case WM_CLOSE:
endthread = false;
EndDialog(hwnd,1);
break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_BUTTON1:
ind = SendDlgItemMessage(hwnd, IDC_LIST1, LB_GETCURSEL, 0, 0);
hProcess = OpenProcess (PROCESS_ALL_ACCESS, false, dwlist[ind]);
TerminateProcess(hProcess, -9);
CloseHandle(hProcess);
break;
}
break;
}
return false;
}
int __stdcall WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
DialogBox(NULL, MAKEINTRESOURCE(IDD_DIALOG1), 0, Dlg_Proc);
return 0;
}
← →
juicenman (2004-02-18 22:05) [9]The TerminateProcess function terminates the specified process and all of its threads. Все очень просто.
← →
Phantomaz (2004-02-25 19:08) [10]procedure KillProcess;
var
H : HWND:
PrID : Cardinal;
ProcessHandle : THandle;
begin
H:=FindWindow(nil,"Windows Media Player");
GetWindowThreadProcessID(H, @PrID);
// Открываем Handle
ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, PrId);
TerminateProcess(ProcessHandle,0);
// Закрываем Handle
CloseHandle(ProcessHandle);
end;
← →
Delphin © (2004-02-26 17:46) [11]Всё отлично, вот только если само приложение не имеет ни одной формы, то как тогда поступать ?
← →
Игорь Шевченко © (2004-02-26 18:09) [12]Delphin © (26.02.04 17:46)
Какими-то нехорошими вещами ты занимаешься. svchost убиваешь...
← →
Delphin © (2004-02-26 19:30) [13]Игорь Шевченко © (26.02.04 18:09) [12]
Не, это я к примеру, на самом деле планируется убивать что-то на подобии msblast или svchos1
← →
Игорь Шевченко © (2004-02-26 19:35) [14]Антивирус поставь
← →
Delphin © (2004-02-27 16:53) [15]Игорь Шевченко © (26.02.04 19:35) [14]
Стоит Noroton 2003 + Firewall- Agnitum Outpost Firewall
Мне просто интересно написать простейший антивирусник
← →
Игорь Шевченко © (2004-02-27 16:55) [16]Delphin © (27.02.04 16:53)
Ты не с того начинаешь, уж извини. Задача антивируса - не процессы убивать и не System Restore отключать. Задача его препятствовать проникновению вирусов на компьютер, а не бороться с последствиями этого проникновения.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.033 c