Консультация № 197337
07.12.2019, 20:35
0.00 руб.
1 7 1
Здравствуйте!
Уважаемые эксперты, можете ли объяснить, почему отладчики AFD, CodeView, Turbo Debugger показывают разную информацию при сохранении адреса обработчика 21h прерывания (да очевидно и любого другого прерывания)? Я об использовании функции 35h прерывания 21h.
Более подробно "проблема" выведена в прилагаемом файле "Письмо экспертам от 07.12.2019г..doc"
Прикрепленные файлы:
f48c4ccdb1e66fdc0893009309f9a3fc9cbfa88e.doc

Обсуждение

давно
Старший Модератор
31795
6196
07.12.2019, 22:23
общий
Адресаты:
Сперва, ответьте на вопрос, как отладчик, получает управление над программой?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
07.12.2019, 22:54
общий
Адресаты:
Только ответив на вопрос выше - Вы поймете, что делает 21h:35h. И как можно перехватить, само прерывание не используя само прерывания.

  • прямая запись: 0х0000:
  • [0 . . 255]:dd;
  • использование альтернативного 21h. прописаного в PSP программы.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
07.12.2019, 23:40
общий
07.12.2019, 23:41
Адресаты:
уточнение сообщения выше

У каждого отладчика, есть свои приоритеты перехвата номеров прерываний, по этому huck №1, одного отладчика - может быть соответсвовать huck №2, любого другого отладчика.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
12.12.2019, 12:44
общий
12.12.2019, 12:44
Адресаты:
Отладчик, для работы с программой ставит свои обработчики. Каждый отладчик использует свои методы получения управления над программой. В коде отладчика - код обработчика находится в разных местах, по этому говорить о адресах не имеет смысла.
Цитата: kerenskyaf
Один только отладчик Debug не врет!

Хто Вам такое сказал? Реальный адрес диспепечера функций DOS, подставляет загрузчик в префикс программы.

Выделен код команды CALL FAR и адрес диспечера.
И он не совпадает с тем адресом, который Вы считаете якобы правильным.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
14.12.2019, 00:35
общий
это ответ
Здравствуйте, kerenskyaf!

Ну раз Вы занялись анализом и хотите понять что к чему. Скачайте IDA Pro, сейчас 7.х. Но показывать я буду на 4.х

Цитата: kerenskyaf
Теперь исследуем этот файл prog10o.com в отладчиках (AFD, Code View, Turbo Debugger, Debug).

Перед тем, как, что-то иследовать, будем иследовать то, что в скобках, а именно:
Цитата: kerenskyaf
AFD, Code View, Turbo Debugger, Debug

Возмем к примеру 3-и из 4-х(названия видны в заголовках):


Как видно стартовый код почти аналогичен(за исключения нескольких байтов), четвертый проверять будем?
Везде есть команда rep movsb. Что она делает, она копирует таблицу векторов, чтобы потом показать Вам то, что Вы хотите видеть.
Поверите или проверите.

Ещё обратите внимание, что в аналогичных командах название переменных(по сути это размер перменной и её адрес в сегменте, ну так IDA это интерпретирует) отличаются - это говорит, что в коде они находятся в разных местах.
Точно так-же если в разных кодах, две подпрограммы поменять местами перед компиляцией, то адреса вызова их изменятся.
Поверите или порверите.

Теперь самое интересное: старые вектора можно получить с помощью int 21 | 35h, вот его и будем искать.
Установив маркер поиска в начало листинга, Вы найдете много адресов типа хх35 или х35х, много байт данных ввиде строк, но интерес представляют последовательности

B8 xx 35 CD 21
Записываем, чем интересуется отладчик.

После этого такой поиск проводим с 25, обращая внимание на последовательность байт, аналогичным командам:
[code lang=asm]mov ax,25xxh
xxx xxx
int 21h[/code]
Записав эти номера Вы будете знать, что перхватывает и обрабатывает отладчик, а также адреса тех самых обработчиков, их код
Цитата: kerenskyaf
90 90 E8 E0 00 2E FF 2E 48 10 90 90 E8 D0 00 2E

или
Цитата: kerenskyaf
9C 2E FF 1E 3E 00 50 55 9C FA 2E 80 3E 42 00 00

Думаю, что совпадения Вы найдете.


Отладчики не смотря на свою одинаковую цель, написаны по разному, используют разные методы отладки, прячут себя от программ разному, при этом позволяя иследовать себя или нет.

Если Вы пошагам зайдете в прерывание, Вы попадете в сегмент Fxxx. В префиксе программы указан альтернативный вызов функций ДОС(он предназначен для совместимости с СР/М) который также как и 00A7:107C, является надстройкой над самими функциями ДОС, пройдя обоими путями Вы попадете в нужную функцию.

Удачи!
5
СПАСИБО ЗА ПОТРАЧЕННОЕ НА МЕНЯ ВРЕМЯ!<br>Честно говоря, не "взять" мне пока этот материал, оставлю его на будущее!<br>Если можно, дайте пожалуйста ссылку, на "Руководство" - как работать в IDA.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
15.12.2019, 12:56
общий
Адресаты:
Ищите книиги:
  • Пирогов В. Ассемблер и дизассемблирование;
  • Хогланд Г. МакГроу Г. Взлом программного обеспечения анализ и использование кода;
  • Касперски К., Рокко Е. Искусство дизассемблирования;
  • Крис Касперски Образ мышления IDA Pro;
  • Касперски K. Техника и философия хакерских атак.

Крис Касперски - ищите все его книги, практически в каждой есть полезная информация.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
15.12.2019, 17:44
общий
Адресаты:
Начните, наверное с Касперски K. Техника и философия хакерских атак - в книге расматриваются защиты программ от простого к сложному, от простых crackme до реальных защит. Использование инструментов анализа: отладчики, дизассемблеры, НЕХ-редакторы, как отдельно, так и в комплексе.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа