Помогите с описанием кода!

Тема в разделе "WASM.BEGINNERS", создана пользователем bagun08, 4 авг 2010.

  1. bagun08

    bagun08 New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2010
    Сообщения:
    8
    CSEG segment
    assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
    org 100h

    Start:

    jmp Init

    Int_21_proc proc
    cmp ah,9
    je ok_9
    jmp dword ptr cs:[Int_21_vect]
    ok_9:
    push ds
    push dx
    push cs
    pop ds
    mov dx,offset My_string
    pushf
    call dword ptr cs:[Int_21_vect]
    pop dx
    pop ds
    iret

    Int_21_vect dd 0
    My_string db 'Моя строка$'
    Int_21_proc endp

    Init:
    mov ah,35h
    mov al,21h
    int 21h
    mov word ptr Int_21_vect,bx
    mov word ptr Int_21_vect+2,es
    mov ax,2521h
    mov dx,offset Int_21_proc
    int 21h

    mov dx,offset Init
    int 27h

    CSEG ends
    end Start

    ;Это листинг простейшего ком вируса из рассылки Калашникова! Я все понял кроме: почему в процедуре резидента
    ;оригинальный обработчик прерывания 21h вызывается из адреса cs:[Int_21_vect]? Ведь его адрес то мы ложим в
    ;смещение Int_21_vect, и сегмент в Int_21_vect+2! Откуда там взялось CS?
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    bagun08
    это с какого перепуга тот огрызок называется вирусом?
    изучай лучше по статьям на этом сайте
     
  3. bagun08

    bagun08 New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2010
    Сообщения:
    8
    Большая просьба пожалуйста помогать, а не критиковать нулевого новичка у которого нет ничего кроме желания изучать!!!
     
  4. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    bagun08
    http://www.wasm.ru/publist.php?list=6
     
  5. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    по поводу CS... надо читать про способы адресации ;)
    Это ком-прога, как ты сказал. Значит, все в одном сегменте. На который указывают CS, DS, ES, SS.
    Сначала сегмент и смещение оригинального обработчика сохраняются. КУДА? в наш сегмент, в смещение Int_21_vect. То есть CS:Int_21_vect - два слова, смещение и сегмент старого обработчика. Чтобы сделать потом переход туда, используется call dword ptr cs:[Int_21_vect] - что означает, взять двойное слово по адресу cs:[Int_21_vect], и его содержимое использовать как пару сегмент-смещение.
     
  6. bagun08

    bagun08 New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2010
    Сообщения:
    8
    Прерывание 35h функции ax,3521 сохраняет в регистры es:bx адрес (вектор) оригинального обработчика прерывания 21h, которые мы потом пересохраняем в смещение [int_21_vect] и [int_21_vect+2]. Почему же мы вызываем оригинальный обработчик коммандой call dword ptr cs:[int_21_vect], когда он находится в [int_21_vect+2]:[int_21_vect]? Т.е. почему мы не пишем что-то типа call dword ptr [int_21_vect+2]:[int_21_vect]? Почему у нас вместо [int_21_vect+2] мы вставляем cs? То что в ком файлах все в одном сегменте я понимаю!
     
  7. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    Ст. 273 УК РФ: Создание, использование и распространение вредоносных программ для ЭВМ... наказываются лишением свободы на срок от трех до семи лет.

    Ст. 361 УК Украины: распространение компьютерного вируса... наказывается... лишением свободы на срок от трех до пяти лет.

    Ст. 353 УК песпублики Беларусь: Статья 354. Разработка, использование либо распространение вредоносных программ... наказываются лишением свободы на срок от трех до десяти лет.

    Вы не боитесь, что вас посадят? ;))))
     
  8. sl0n

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

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    701
    гы и где же интересно дос вирус сегодня может распространится ? учитывая что это просто хук вектора
     
  9. sl0n

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

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    701
    это и вирусом то назвать нельзя даже под дос =)
     
  10. sl0n

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

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    701
    дрмад у вас клиника не офтопте
     
  11. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    такое ощущенье что новичек сразу ринулся писать прогаммы, да не просто проргаммы, а вирусы -- видимо старшая сестра запаролила компьютер и удалила порнуху хехе, надо ей насолить да ыхых.

    или мы имеем дело со студентом халявщиком ыхых. которые прибегают и просят взрослых дяденек сдеалть им лабу забесплатно, правда не показывая виду что лаба -- это лаба. типо я сам изучаю хехе.
     
  12. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    и да, багун08.

    если и правда есть желание изучать асм, то выкиньте калашникова на помойку. сразу. и избегайте юрова, пирогова и зубкова.

    накуривайтесь абелем лучше и только им.
     
  13. sl0n

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

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    701
    ну тут я хз я начинал с юрова :P ну и канечно 29a
     
  14. bagun08

    bagun08 New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2010
    Сообщения:
    8
    Да новичок, но новичок, который, не имея никакого отношения к программированию, в свободное время как то по крупицам пытается изучить то, о чем давно мечтал! Я НЕ ПИШУ ВИРУСЫ, я просто изучаю ассемблер, у вАС попросил помощи в разборе такой простой для вАС задачи, так называемые воины дзена! Я думал, что форумы это то место где опытные что-то объясняют новичкам! Вместо помощи кучу помоев мне на голову, большое спасибо! Чем так помогать лучше молчать!
    А тебе Guru_of_Zen хочу сказать, что мне 35 лет, я уже большой дядя с 2-мя детьми, а сестры у меня никогда не было!
     
  15. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    bagun08
    ну что Вы тут демогогию развели?
    пока не прочтёте и говорить неочем
     
  16. bagun08

    bagun08 New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2010
    Сообщения:
    8
    Пойми, я сначала хочу освоить Дос, а уж потом Win! Я хочу постепенно планомерно все изучать! И зачем ты мне второй раз эту ссылку кидаешь! Не хочу я вирусы писать! Объясни хоть как, своими словами и все!
     
  17. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    bagun08
    а что сразу не с ZxSpectrum?
    http://www.wasm.ru/page.php?page=neophyte
    и не хочу обидеть, но у Вас какие то дефекты в понимании советов.
    зайдите на сайт и изучайте что душе угодно, материала на нём Вам на 20 лет хватит
     
  18. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.625
    Адрес:
    Russia
    call dword ptr cs:[Int_21_vect]
    загружает в cs значение по адресу Int_21_vect+2, так что после это "синонимы"
     
  19. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    sl0n
    читал я ево...
    имхо чтобы по юрову учиться, надо обкладываться еще хз скольким кол-вом литературы.

    ибо у юрова в каждой главе вводятся новые и новые термины, про половину из которых написано примерно следующее:

    "это мы рассмотрим в главе ххх, а пока вам надо просто сие запомнить".

    читая юрова, в какой-то момент просто перестаешь понимать, что ты тут вообще делаешь, ибо несистематизировано нихрена.

    Слон, неужели ничего параллельно с Йуровым не читале?
     
  20. Phuntik

    Phuntik New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2008
    Сообщения:
    318
    Ну, я думаю, выражение cs:[Int_21_vect] можно было бы записать просто [Int_21_vect]. Просто синтаксис ассемблера не позволяет (наверное). Если бы было записано jmp dword ptr [Int_21_vect], вопрос бы отпал? Происходит тут переход по адресу [Int_21_vect+2]:[Int_21_vect]. Так понятно? ;)