19.07.2019, 05:49 [+3 UTC]
в нашей команде: 3 748 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.77 (31.05.2019)
JS-v.1.34 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
18.07.2019, 12:26

Последний вопрос:
19.07.2019, 04:09
Всего: 149940

Последний ответ:
18.07.2019, 12:04
Всего: 258705

Последняя рассылка:
17.07.2019, 22:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
20.10.2009, 09:58 »
Хиноцкий Ярослав Владимирович
Спасибо за ответ, в моих вопросах, вопрос о драйвере самый актуальный, обязательно попробую Ваш вариант [вопрос № 173452, ответ № 255618]
11.11.2012, 05:33 »
Посетитель - 386361
Спасибо большое! [вопрос № 186794, ответ № 271685]
27.05.2010, 15:29 »
Konstantin Shvetski
Спасибо за скорый и квалифицированный ответ [вопрос № 178693, ответ № 261713]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 198
Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 143
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 48

Перейти к консультации №:
 

Консультация онлайн # 143350
Раздел: • Assembler
Автор вопроса: Draft3
Отправлена: 08.09.2008, 14:38
Поступило ответов: 2

Вопрос по рассылке Калашникова №10(резидент). Её код в приложении.
Мне непонятно место [pushf ;Так надо! Позже рассмотрим]. Мы же в самом начале процедуры сохраняли регистры флагов, зачем это делается еще раз перед переходом на оригинальный обработчик? и всеравно потом востанавливаем со стека регистры только один раз...

Приложение:

Последнее редактирование 08.09.2008, 14:41 [неизвестный]

Состояние: Консультация закрыта

Здравствуйте, Draft3!

© Цитата:
mov dx,offset My_string
pushf ;Так надо! Позже рассмотрим
call dword ptr cs:[ Int_21h_vect ]

Из программного прерывания возврат происходит с помощью команды IRET, котороая помимо сегмента и смещения в сегменте точки возврата извлекает ещё и регистр флага. Эти строки имитируют фунцию 09h/21h, но если подставить вместо них прерывание 21h, то мы снова попадем в свой обработчик - т.е. закнутый круг, а так вызываем старый обработчик прерывания, возвращаемся в свой обработчик, востанавливаем используемые регистры и возвращаемся в программу.
© Цитата:
pushf ;тут сохранили регистр
cmp ah,9 ;Проверим: это функция 09h?
je Ok_09 ;Если так, то на метку Ok_09
popf ;а тут востановили его, т.к. это может и не наша функция

Команда стоит для того, чтобы не влиять на значения регистра флага, т.к. в самом обрабочике происходит сравнение.
Удачи!


Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 08.09.2008, 14:59

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 228795 от Airyashov

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


Консультировал: Airyashov
Дата отправки: 08.09.2008, 15:59

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15456 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.77 от 31.05.2019
Версия JS: 1.34 | Версия CSS: 3.35