Форум: "Система";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизСлежка за запускаемыми на ПК процессами Найти похожие ветки
← →
Angel_Forever (2004-01-24 16:15) [0]Привет программерам!!!
Слушайте есть такое дельце...нужно написать прогу, чтобы висела в ОЗУ (была резидентной - аля вирус :)) и следила за запускаемыми процессами и при обнаружени заданного (заданных)процесса(ов) их убивал...Есть процедуры типа
TerminateProcess(hProcess:Cardinal,uExitCode:Cardinal):LongBool;
и
ExitProcess(uExitCode:Cardinal); , но я незнаю как с ними работать...просто понятия не имею...:(...можт есть какой нить другой способ\метод\процедура\функция? Подскажите плиз...
← →
Digitman © (2004-01-24 16:17) [1]интересуют только GUI-процессы ?
← →
Angel_Forever (2004-01-24 16:28) [2]Digitman
Процессы типа... можт слыхал про вирусняк ishtar? Вот он меня ужо достал...поперёк горла стоит...каждый раз когда я пытаюсь установить какую либо прогу (правда не навсе слава богу действует, но на многие ) он создаёт себя в папке C:\WINDOWS и запускает себя в процессы, висит там понимаешь...и заражает собой приложения которые я запускаю...по этому мне приходится после запуска инсталяхи сразу же давить три волшебные клавиши и заходить в папку C:\WINDOWS и сносить его оттуда, благо при повторном запуске той же самой инсталяхи он себя больше не создаёт, но представь себе...отслеживать создание и запуск оного в ручную это геморой притом конкретный геморой...вот я и прибумал такую затею написать прогу, чтобы висела себе в ОЗУ и следиля за тем какие процессы на писюке запускаются...и при обнаружении процесса ishtar.ехе убивал этот процесс и удалял саму эту прогу с виндовой папки....вот...
← →
SammIk © (2004-01-24 16:37) [3]А ты не думал от куда он берется?
Ведь просто так он не появится, ведь правда?(надеюсь)
Проверь антивирусом папку програм филес, и писать ничего не надо
← →
Angel_Forever (2004-01-24 16:58) [4]SammIk гы-гы...не всё так просто....антивирусы его НЕВИДЯТ...в том-то вся и беда...
← →
Agent13 © (2004-01-24 18:16) [5]
> Angel_Forever (24.01.04 16:58) [4]
Ну и что, что не видят? А ты по Program Files ручками пройдись, глядишь найдёшь чего интересного, а заодно и по Temp"ам всяким...
← →
Angel_Forever (2004-01-24 18:29) [6]А может всёже поможете иль сами ни знаете как ент сделать...кстати ни в обиду будет сказано...но есть такая поговорка...знаете почему на площадях сексом не занимаются?....советчиков много...так и здесь вместо помощи тока советы поройся там, поройся сям...
← →
RealRascal © (2004-01-25 01:54) [7]базы обнови
← →
Angel_Forever (2004-01-25 03:55) [8]RealRascal Я базы у своей антивируски обнавляю каждый раз когда вылазаю в инет...ну в смысе не в течение дня - вылез обновил,вылез обновил,вылез....короче говоря почти каждый день провожу обновления...никакого понту с этого ни результата нету
:( . Я у пацана интересовался (у него тоже этот вирусяка завёлся...возможно, что у меня подцепил) он говорит, что его невидят даже Каспер и ДрВеб, у меня стояло сразу две антивируски McAfee Professional Edition 7 и Antivir Personal 6 (на мой взгляд одни из самых лучших антивирусок)
← →
Serge66 (2004-01-25 11:25) [9]Вместо того, что бы сносить ishtar.ехе, напиши письмо в DrWEB мол вирус не определяется, прикрепи к нему ishtar.ехе , отправь.
Ребята разберуться, выпустят обновление.
Проверял, работает.
← →
Angel_Forever (2004-01-26 04:51) [10]Serge66
В принципе...можно и так...тока я ДрВебом не пользуюсь...не нравится он мне чёто...вот...я хотел сам типа антивируса написать...ну я описывал выше, да и ктому же, эту тему можно было-бы применить не обязательно для иштара...а например опять же для контроля за запускаемыми на писюке процессами...например у нас на работе есть Квака 3 и контра...и чтобы прога следила запущены ли хотя бы одна из этих игрух и проверяла условие если она запущенна во время обеденного перерыва то игнорировала...но по истечении этого самого прерыва вырубала процесс и если игруха запущена до или послеобеденного перерыва, чтобы просто тупо убивала поцесс и всё...так же можно и просто использовать её как утилиту контроля доступа юзера к определённым программам, если в настройках стоит запрет какому нибудь конкретному юзеру, то соответственно не давала ему запускаться...так, что тут спектор применения её широк...был бы еслибы мне помогли бы это сделать...вот так вота...
← →
_VaaL_ © (2004-01-26 11:02) [11]КГ/АП - застрелись... тибя ужо ничьо не спасьот
← →
_VaaL_ © (2004-01-26 11:02) [12]Найди его сам и не парся
← →
Angel_Forever (2004-01-27 07:02) [13]_VaaL_ Ещё один советчик нашёлся...на этот счёт я уже писал см. Angel_Forever (24.01.04 18:29) [6]
← →
Digitman © (2004-01-27 08:43) [14]
> Angel_Forever (24.01.04 16:15)
тебя спасет только написание спец.драйвера режима ядра
← →
AlisaKK (2004-01-27 10:42) [15]
program pKillProc;
uses
Windows,
Forms,
SysUtils;
var
Wnd : hWnd;
buff : ARRAY[0.. 127] OF Char;
ProcessID: hWnd;
s: String;
f: TextFile;
begin
while True do
begin
Sleep(10000);
Wnd := GetWindow(Application.Handle, 0);
try
AssignFile(f, "c:\Programm.txt");
while Wnd <> 0 do
begin {Hе показываем:}
if (Wnd <> Application.Handle) and {-Собственное окно}
(GetWindow(Wnd, gw_Owner) = 0) AND {-Дочернии окна}
(GetWindowText(Wnd, buff, sizeof(buff)) <> 0) then
begin
GetWindowText(Wnd, buff, sizeof(buff));
Reset(F);
while Not EOF(f) do
begin
Readln(F, s);
if Pos(s, AnsiUpperCase(String(buff)))<>0 Then Begin
GetWindowThreadProcessID(Wnd, @ProcessID);
ProcessID := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
TerminateProcess(ProcessID,4);
end;
end;
end;
Wnd := GetWindow(Wnd, gw_hWndNext);
end;
CloseFile(F);
except
end;
end;
end.
Если не вдаваться в подробности - в файле "C:\Programm.txt" храниться список файлов(точнее их Caption), которые надо убивать.
← →
Некто (2004-01-27 11:03) [16]
> он создаёт себя в папке C:\WINDOWS
Дешево и сердито: создаешь в этой папке файл с именем файла вируса, но пустой; устанавливаешь для него свойства "системный", "спрятанный", "только для чтения"; когда в очередной раз вирус попытается создать себя, ему будет отказано в доступе к файлу; получается эдакая "вакцинация".
Есть одно "но": хотя большинство вирусов тупо пытаются создать себя, не проверяя существование такого же файла, однако, некоторые вирусы все же достаточно "умны", и при записи снимают все атрибуты с существующего файла, если таковой имеется, чтобы не возникло проблем при записи; но это - скорее исключение, чем правило.
P.S. В Win2k и ХР (NTFS) лучше запретить доступ к этому файлу для всех пользователей. Тогда даже попытка снятия аттрибутов не поможет.
Rem (C) 2003
← →
Angel_Forever (2004-02-04 14:09) [17]AlisaKK
Не помогло...тестил на обычном калькуляторе...ниубивает его никак...ни calc ни calc.exe ни Калькулятор...как ещё подругому написать в файле "c:\Programm.txt" Caption...я не знаю...calculator что-ли? :(
← →
RealRascal © (2004-02-04 23:14) [18]Удалено модератором
← →
Alexander666 © (2004-02-05 10:01) [19]А че бы хуки не попробовать? Вроде библиотека с хуком в каждый файл запускаемый грузится (естественно надо соответствующий хук поставить). А оттуда с бедным процессом можно делать что угодно, вплоть до полно изничтожения, извращения и надругательства :-)
← →
Alexander666 © (2004-02-05 10:16) [20]Упс, хуки насколько я понимаю действуют только для GUI-приложений.
← →
Angel_Forever (2004-02-15 15:27) [21]Некто хочешь прикол ;)? Попробовал я создать файл с таким именем (правда через консоль) ishtar.exe атрибуты правда поставил только RO...но вирусу этот атрибут оказался непомехой...я ради интереса открыл таск менеджер, Виндовую папку с псевдовирусом, и запустил заражённый иштаром файл...гы-гы....этот ё_ый вирусяка....без лишних вопросов взял записал себя....может он определил, что файл котоый уже существует не есть он...типа файлсайзы не совпадают...что-ли короче говоря х.з. что с ним делать.....
← →
Defunct (2004-02-15 16:49) [22]> Некто хочешь прикол ;)? Попробовал я создать файл с таким именем (правда через консоль) ishtar.exe атрибуты правда поставил только RO...но вирусу этот атрибут оказался непомехой...я ради интереса открыл таск менеджер, Виндовую папку с псевдовирусом, и запустил заражённый иштаром файл...гы-гы....этот ё_ый вирусяка....без лишних вопросов взял записал себя....может он определил, что файл котоый уже существует не есть он...типа файлсайзы не совпадают...что-ли короче говоря х.з. что с ним делать.....
Тут вот есть идея, что если переименовать какой-то полезный процесс в ishtar.exe (например taskmgr.exe или explorer.exe) поменять имена в реестре и тогда вирус вообще никогда не сможет в него дописаться, т.к. процесс запущен постоянно.
← →
Burmistroff (2004-02-15 18:02) [23]касаемо первого поста в ветке можешь взглянуть на
http://maxcomputing.narod.ru/ssm.html
← →
Angel_Forever (2004-02-21 09:58) [24]Defunct проблема в том, что он и в реестре-то не прописывается... :|
← →
KSergey © (2004-02-22 10:50) [25]Навеяно > Defunct (15.02.04 16:49) [22]
Раз уж "вирус" чихал на атрибуты - просто состряпать простейшую прогу, которая ничего не делает (например, постоянно в Sleep висит, или еще что-то такое Да даже просто из единственного окна невидимого состоит - вот и все) - и запускать ее из автозапуска. Имя и расположение должна иметь, разумеется, "вирусное". ТОгда уже никто этот файл не перетрет.
PS
Ну разве что вдруг обнаружится, что "вирус" умеет произвольное имя файла вибирать ;)
Хотя детство это все. Что-то подозрение, что либо не вирус это, либо не это вирус...
← →
Ihor Osov'yak © (2004-02-22 11:19) [26]хм.. Для начала пройдись в реестре на тему поиска ishtar.ехе...
> каждый раз когда я пытаюсь установить какую либо прогу (
Есть подозрение, что нечто интересное можешь увидить в ветке
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
Ищи там раздел с именем setup.exe или install.exe, а в разделе -параметр Debugger.. Если будет там сия вещь - значит оно..
Что сей параметр значит - догадайся сам, или какой-то букварик почитай, где подробно процесс запуска приложений описан.. Соломона с Руссиновичем, например..
Зы2. Есть ли аналогичная фича в W9X - не знаю, я с этой системой мало работаю, а специально смотреть сейчас - влом..
← →
KSergey © (2004-02-22 12:59) [27]Хорошие нынче букварики пошли...
А "Дельфи за х часов" - это тогда памперсы получается? ;)
← →
Ihor Osov'yak © (2004-02-22 15:08) [28]ну, о том что Соломон с Руссиновичом букварик - я немного загнул.. Сорри ...
← →
12345678 (2004-02-23 10:06) [29]http://maxcomputing.narod.ru
Там есть пример перехвата CreateInternalProcess для NT
hehe
← →
not_antisemit (2004-01-23 14:00) [30]Соломон с Руссиновичем букварей не пишут, они пишут буквагики,таки.
← →
Angel_Forever (2004-02-27 14:28) [31]Ihor Osov"yak тама где ты сказал посмотреть...чисто...ни каких упоминаний о вирусе...
ДЛЯ ВСЕХ УЧАСТНИКОВ ЭТОЙ ТЕМЫ СВЕЖЕИСПЕЧЁННАЯ ИНФА ПО ВИРУСУ ishtar.exe.... Тута один мой знакомый у меня что-то резал на болванку и к нему попал этот вирус...он проверил, что чудит этот вирусяка...он находит шаровые папки и расшаривает их на пример Общие документы в ИксПине...папку Виндовс и т.д....
← →
Angel_Forever (2004-03-07 04:24) [32]KSergey Ну....написал...я прогу из одной формы....а поту?...эта с-ка вирусяка и с ней х. з. каким образом расправился :)))(((
← →
alkarin (2004-03-20 05:55) [33]хрен его знает... я касперским запросто справлялся с этой гадостью, которая плодится с каждой секундой
← →
BlackBaracuda © (2004-03-26 05:57) [34]А почему бы не попробовать...
СЛУШАЙ а ведь в делфях есть команды, которые определяют имя файла, от которого произошел этот процесс...
Или легче запустить утилиту WinSight32 , она находится автоматом в делфи, два раза щелкнуть на процесс ishtar, и тебе откроется заветное имя файла вируса...
Если не помогло тогда вот -
var ishtar:TFilestream;
ishtar:=TFileStream.Create("C:\windows\ishtar.exe",fmOpenRead,fmShareDenyNone);
Создай файл ishtar.exe в виндах, и запусти прогу...
Можно по нажатию на кнопку...
← →
BlackBaracuda © (2004-03-26 05:57) [35]А почему бы не попробовать...
СЛУШАЙ а ведь в делфях есть команды, которые определяют имя файла, от которого произошел этот процесс...
Или легче запустить утилиту WinSight32 , она находится автоматом в делфи, два раза щелкнуть на процесс ishtar, и тебе откроется заветное имя файла вируса...
Если не помогло тогда вот -
var ishtar:TFilestream;
ishtar:=TFileStream.Create("C:\windows\ishtar.exe",fmOpenRead,fmShareDenyNone);
Создай файл ishtar.exe в виндах, и запусти прогу...
Можно по нажатию на кнопку...
← →
Александр1 © (2004-03-27 19:28) [36]Angel_Forever Скажи этот вирус заражает exe? Ну в смысле дописывается к ним и как он переносится?
Вообще когда у меня заводится гадость типа этой, я переписываю windows (стираю нафик старый win и ставлю новый). А если не поможет, Format C: уж точно поможет! Если конечно он в Bios не засел?
А на счёт убивания процессов это ты хороший вопрос задал! Я тоже пытаюсь найти на него ответ?
И к стати нашёл кое что! Могу поделиться.
nit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
Button2: TButton;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
private
{ Private declarations }
public
procedure KillProgram(ClassName: PChar; WindowTitle: PChar);
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.KillProgram(ClassName: PChar; WindowTitle: PChar);
const
PROCESS_TERMINATE = $0001;
var
ProcessHandle : THandle;
ProcessID: Integer;
TheWindow : HWND;
begin
TheWindow := FindWindow(Classname, WindowTitle);
GetWindowThreadProcessID(TheWindow, @ProcessID);
ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
TerminateProcess(ProcessHandle,4);
end;
procedure TForm1.Button1Click(Sender: TObject);
VAR
Wnd : hWnd;
buff: ARRAY [0..127] OF Char;
begin
ListBox1.Clear;
Wnd := GetWindow(Handle, gw_HWndFirst);
WHILE Wnd <> 0 DO
BEGIN {Не показываем:}
IF (Wnd <> Application.Handle) AND {-Собственное окно}
(IsWindowVisible(Wnd)or checkbox1.checked) AND {-Невидимые окна}
((GetWindow(Wnd, gw_Owner) = 0)or checkbox2.checked) AND {-Дочернии окна}
(GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без заголовков}
THEN
BEGIN
GetWindowText(Wnd, buff, sizeof(buff));
ListBox1.Items.Add(StrPas(buff));
END;
Wnd := GetWindow(Wnd, gw_hWndNext);
END;
ListBox1.ItemIndex := 0;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
killprogram(nil,pchar(listbox1.Items.Strings[listbox1.ItemIndex]));
sleep(100);
button1click(form1);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
button1click(form1);
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
button1click(form1);
end;
procedure TForm1.CheckBox2Click(Sender: TObject);
begin
button1click(form1);
end;
end.
← →
TButton © (2004-03-27 22:56) [37]Win+F ishtar.ехе
← →
JSilver (2004-03-28 16:58) [38]Я про этот визус ничего не слышал, слава богу, но была другая напасть, переводчик СакратПерсональный4,1 при завершении винды все дело портил, пришлось помочь ему умирать самому, и удачно(была написана прога по убитию роцесса, вот ее фрагмент).
Procedure ...
Var hKillProcess, hProcess, hProc: HWND;
PID : DWORD;
szProcessName: ARRAY[0..80] Of char;
ahMod: ARRAY[0..10] Of PDWORD;
dwNeeded: DWORD;
NameProc: String;
Begin
For PID:=1 to 65000 do Begin
hProcess := OpenProcess (PROCESS_ALL_ACCESS, FALSE, PID);
if hProcess <> NULL Then Begin
if EnumProcessModules (hProcess, @ahMod, sizeof(@ahMod), dwNeeded) Then Begin
hProc := OpenProcess (PROCESS_ALL_ACCESS, FALSE, PID);
If GetModuleBaseName(hProc, Cardinal(ahMod[0]), szProcessName, sizeof(szProcessName))<>0 Then Begin
NameProc:=szProcessName[0]+szProcessName[1]+szProcessName[2]+szProcessName[3]+
szProcessName[4]+szProcessName[5]+szProcessName[6];
If (NameProc="SPV.EXE") or (NameProc="spv.exe") Then Begin
hKillProcess := OpenProcess( PROCESS_TERMINATE, FALSE, PID ); // Óáèâàåì ýòîò ïðîöåññ
if hKillProcess <> NULL Then TerminateProcess( hKillProcess, DWORD(-1) ); CloseHandle (hKillProcess);
End;
End
else ;//ShowMessage("<failure>");
CloseHandle (hProc);
End;
End;
CloseHandle (hProcess);
End;
End;
Это однократный поиск и убитие. Загони, к примеру, в цикл и прогоняй раз в минуту. А прогу в автозагрузку.
← →
L (2004-03-28 23:38) [39]win98
unit KernlUtl;
interface
uses TlHelp32, Windows, Classes, Sysutils;
procedure GetProcessList(List: TStrings);
procedure GetModuleList(List: TStrings);
function GetProcessHandle(ProcessID: DWORD): THandle;
procedure GetParentProcessInfo(var ID: DWORD; var Path: String);
const
PROCESS_TERMINATE = $0001;
PROCESS_CREATE_THREAD = $0002;
PROCESS_VM_OPERATION = $0008;
PROCESS_VM_READ = $0010;
PROCESS_VM_WRITE = $0020;
PROCESS_DUP_HANDLE = $0040;
PROCESS_CREATE_PROCESS = $0080;
PROCESS_SET_QUOTA = $0100;
PROCESS_SET_INFORMATION = $0200;
PROCESS_QUERY_INFORMATION = $0400;
PROCESS_ALL_ACCESS =
STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $0FFF;
implementation
procedure GetProcessList(List: TStrings);
var
I: Integer;
hSnapshoot: THandle;
pe32: TProcessEntry32;
begin
List.Clear;
hSnapshoot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshoot = -1) then
Exit;
pe32.dwSize := SizeOf(TProcessEntry32);
if (Process32First(hSnapshoot, pe32)) then
repeat
I := List.Add(Format("%x, %x: %s",
[pe32.th32ProcessID, pe32.th32ParentProcessID, pe32.szExeFile]));
List.Objects[I] := Pointer(pe32.th32ProcessID);
until not Process32Next(hSnapshoot, pe32);
CloseHandle (hSnapshoot);
end;
procedure GetModuleList(List: TStrings);
var
I: Integer;
hSnapshoot: THandle;
me32: TModuleEntry32;
begin
List.Clear;
hSnapshoot := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, 0);
if (hSnapshoot = -1) then
Exit;
me32.dwSize := SizeOf(TModuleEntry32);
if (Module32First(hSnapshoot, me32)) then
repeat
I := List.Add(me32.szModule);
List.Objects[I] := Pointer(me32.th32ModuleID);
until not Module32Next(hSnapshoot, me32);
CloseHandle (hSnapshoot);
end;
procedure GetParentProcessInfo(var ID: DWORD; var Path: String);
var
ProcessID: DWORD;
hSnapshoot: THandle;
pe32: TProcessEntry32;
begin
ProcessID := GetCurrentProcessID;
ID := -1;
Path := "";
hSnapshoot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshoot = -1) then
Exit;
pe32.dwSize := SizeOf(TProcessEntry32);
if (Process32First(hSnapshoot, pe32)) then
repeat
if pe32.th32ProcessID = ProcessID then
begin
ID := pe32.th32ParentProcessID;
Break;
end;
until not Process32Next(hSnapshoot, pe32);
if ID <> -1 then
begin
if (Process32First(hSnapshoot, pe32)) then
repeat
if pe32.th32ProcessID = ID then
begin
Path := pe32.szExeFile;
Break;
end;
until not Process32Next(hSnapshoot, pe32);
end;
CloseHandle (hSnapshoot);
end;
function GetProcessHandle(ProcessID: DWORD): THandle;
begin
Result := OpenProcess(PROCESS_ALL_ACCESS, True, ProcessID);
end;
end.
winNT
есть библиотека "NTDLL.DLL" в ней функция "NtQuerySystemInformation"
возвращает в буфере инфу о всех процессах в системе
← →
Angel_Forever (2004-04-01 02:57) [40]Александр1, он какраз таки прописывает себя ехе файлах, при запуске заражённого файла запускает себя в процессы и создаёт свой исполняемый файл размером в 40 кб с именем ishtar.exe, сканит все диски и прописывает себя во все ехешники (можешь открыть заражённый файл например в фаре или в нортоне F3 и поглядеть на него, только ты о нём мало там инфы найдёшь...только надпись в заголовочной части файла), определить заражён ли файл этим долбаным вирусякой можно только по иконке программы. у заражённого файла обычно меняется иконка...
Страницы: 1 2 вся ветка
Форум: "Система";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.58 MB
Время: 0.031 c