PDA

Просмотр полной версии : Антивирус на делфи



Tommelise
13.12.2013, 23:22
Доброго вечера.скажите,может ли кто то помочь с написанием анти-вируса на делфи?

somewhere
17.12.2013, 11:06
Это настолько серьезный труд, что исключительно одним Delphi здесь не обойтись. По-хорошему до самого слабого, хоть как-то работающего антивируса пройдет несколько месяцев упорного труда и несколько десятков тысяч рублей.

Duncon
17.12.2013, 11:28
Чего тебе в delphi не хватает, без чего не обойтись?
Труд несомненно серьёзный, потребует скорее много познаний по теме нежели денег и само собой вирусы пописать.. Может рассмотрите перспективу пересесть на линукс, там вирусов нет и антивирус ни к чему писать..
Ещё вопрос чем не устраивают десятки уже кем-то написанных, среди них и бесплатные под виндовоз есть..

somewhere
17.12.2013, 11:38
Чего тебе в delphi не хватает, без чего не обойтись?
Алгоритм предсказания выполнения кода работает в виртуальной среде. Туда без помощи ассемблера не войти. А если реализовать эмуляцию на дельфе - то все равно знания ассемблера потребуются. Да и маски поиска в коде тоже не очень эффективны, т.к. хорошие в плане скрытности, вирусы, опять таки на асме написаны - а там одно и то же действие можно 10 разными способами записать на участке памяти всего в 80-100 байт. И это только одна "мутация" одного вида вируса.

потребует скорее много познаний по теме нежели денег и само собой вирусы пописать..
Просто видно же, что человеку нужно курсач по этой теме, как минимум, писать. А сам он ясное дело не сможет - отсюда и деньги.

Ещё вопрос чем не устраивают десятки уже кем-то написанных, среди них и бесплатные под виндовоз есть..
Опять таки он же не для себя пишет.... задание у него такое, но это имхо

Duncon
17.12.2013, 11:57
Алгоритм предсказания выполнения кода работает в виртуальной среде. Туда без помощи ассемблера не войти. А если реализовать эмуляцию на дельфе - то все равно знания ассемблера потребуются.
Вставки ассэмблера никогда не являлись проблемой..

somewhere
17.12.2013, 12:20
Вставки ассэмблера никогда не являлись проблемой..
Не являлись, но за рамки темы "антивирус на дельфи" это выходит. Тогда уж "антивирус наполовину на дельфи" что-ли :)

indigo80
17.12.2013, 15:56
Копай в сторону Google Code
Там есть заголовочные файлы для ClamAV только для версий 0.95
на новой не покатит. Я переписал для 0.98 на днях выложу на Vadim.hol.es

Tommelise
23.12.2013, 18:01
дело в том что вот здесь есть вирус.. его код в делфи и зараженные файлы. все нужно к ним написать..[Ссылка удалена]

Daniary008
06.05.2014, 22:47
Во первых может не антивирус но сканер файлов по параметрам указанным в сигнатурах сделать можно и при том достаточно быстро! Вот код главного файла(*.exe)


unit Unit1;
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMan, StdCtrls, Buttons, ShellApi, ComCtrls, ExtCtrls, Grids;

type
TForm1 = class(TForm)
SButton2: TSpeedButton;
ODialog1: TOpenDialog;
XPManifest1: TXPManifest;
GroupBox1: TGroupBox;
ListBox2: TListBox;
SpeedButton1: TSpeedButton;
Label2: TLabel;
Label4: TLabel;
Label6: TLabel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
SBar1: TStatusBar;
SGrid1: TStringGrid;
procedure SpeedButton1Click(Sender: TObject);
procedure SButton2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
Function ScanFile : Word;
public
{ Public declarations }
end;

Type
arr = array[1..20] of Byte;
arrptr = ^arr;

var
Form1: TForm1;
PrPath : String;
KolVirInBaze : Integer;
TF : File;

implementation

{$R *.dfm}

Function TForm1.ScanFile : Word;
Var ItF, Naid : Word;
F : TFileStream;
Buf, VirBuf : Arrptr;
I, T, J : Integer;
S : String;
PASS : Byte;
Error : Boolean;
begin
For ItF := 0 to ListBox2.Items.Count - 1 do
Begin
{$I-}
AssignFile(TF, PrPath+'base.vidb');
Reset(TF, 1);
{$I+}
If IOResult <> 0 then
Begin
SButton2.Enabled := True;
ShowMessage('Ôàéë '+PrPath+'base.vidb'+' íå íàéäåí.');
Exit
end;
New(VirBuf);
New(Buf);
T := 0;
Error := False;
Try
F := TFileStream.Create(ListBox2.Items[ItF], fmOpenRead);
except
Error := True;
end;
If Error = False then
begin
If F.Size > 90 then
Begin
For PASS := 1 to 4 do
Begin
Label2.Caption := ListBox2.Items[ItF];
Application.ProcessMessages;
If PASS = 1 then F.Seek(135, 0);
If PASS = 2 then F.Seek(2000, 0);
If PASS = 3 then F.Seek(7000, 0);
If PASS = 4 then F.Seek(10000, 0);
Try
F.ReadBuffer(Buf^, SizeOf(Buf^));
except
Error := True
end;
If Error = False then
Begin
For J := 1 to KolVirInBaze do
Begin
If J = 1 then Seek(TF, 0) else Seek(TF, J*2 * 10-20);
BlockRead(TF, VirBuf^, SizeOf(VirBuf^));
For I := 1 to 20 do If VirBuf^[I] = Buf^[I] then Inc(T) else T := 0;
If T = 20 then
Begin
S := '';
Case J of
1 : S := 'Worm.Win32.DipNet.f';
2 : S := 'Trojan.Win32.PdPinch.f';
3 : S := 'Trojan.DownLoader.1746';
4 : S := 'Trojan.Pinch';
5 : S := 'BackDoor.Haxdoor';
end;
Inc(Naid);
If Naid <= 4 then
Begin
SGrid1.Cells[0,Naid] := ExtractFileName(ListBox2.Items[ItF]);
SGrid1.Cells[1,Naid] := ExtractFilePath(ListBox2.Items[ItF]);
SGrid1.Cells[2,Naid] := S;
end
else
begin
SGrid1.RowCount := Naid+1;
SGrid1.Cells[0,Naid] := ExtractFileName(ListBox2.Items[ItF]);
SGrid1.Cells[1,Naid] := ExtractFilePath(ListBox2.Items[ItF]);
SGrid1.Cells[2,Naid] := S;
end;
end;
end;
end; //Error = True - Ìàëåíüêèé ðàçìåð
end;
end;
Dispose(VirBuf);
Dispose(Buf);
CloseFile(TF);
F.Free;
Label2.Caption := '';
end;
end;
SButton2.Enabled := True;
SBar1.Panels[1].Text := IntToStr(Naid);
SBar1.Panels[2].Text := IntToStr(ListBox2.Items.Count)
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
If ODialog1.Execute then ListBox2.Items := ODialog1.Files
end;

procedure TForm1.SButton2Click(Sender: TObject);
begin
If ListBox2.Items.Count <> 0 then
Begin
SButton2.Enabled := False;
ScanFile
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
PrPath := ExtractFilePath(Application.EXEName);
{$I-}
AssignFile(TF, PrPath+'base.vidb');
Reset(TF, 1);
{$I+}
If IOResult <> 0 then
Begin
SButton2.Enabled := True;
ShowMessage('Ôàéë '+PrPath+'base.vidb'+' íå íàéäåí.');
Exit
end
else
Begin
KolVirInBaze := Trunc(FileSize(TF)/20);
SBar1.Panels[0].Text := 'Â áàçå: '+IntToStr(KolVirInBaze)
end.

В сигнатуре этого сканера 5 вирусов и сканировать он может файлы 4 расширений остальные части придумывай, пиши сам!