2004-gre-cs-practice-book.pdf/Q56

Материал из DISCOPAL
Перейти к: навигация, поиск

Вопрос: Q56-4c9f66

  • Предположим, что отладчик устанавливает точку останова на инструкции загрузки по виртуальному адресу 0x77E81234 в отлаживаемом процессе P.
  • Если текстовый сегмент P начинается по адресу с 0x77E80000 в виртуальном адресном пространстве P и если отладчик сопоставил этот же текстовый сегмент на 0x010000000 в своем виртуальном адресном пространстве

Какой из следующих виртуальных адресов используется отладчиком в операции ЗАПИСИ, а также описание того, как отладчик сопоставил страницу виртуальной памяти, содержащую этот адрес?

Ответы

  • Правильный ответ: 0x01001234; страница памяти мапится с доступом READ/WRITE
  • 0x01001234; страница памяти мапится с доступом COPY-ON-WRITE
  • 0x76E81234; страница памяти мапится с доступом READ/WRITE
  • 0x76E81234; страница памяти мапится с доступом COPY-ON-WRITE
  • 0x77E81234; страница памяти мапится с доступом READ/WRITE

Объяснение

Исходники — вопрос 56 на 38 странице книги «2004-gre-cs-practice-book.pdf»


Step 1: Calculate the Offset of the Breakpoint Address

  • Так, оффсет бряки 0x77E81234−0x77E80000=0x1234
    • в пространстве отладчика оно в 0x01000000+0x1234=0x01001234
  • Вот дальше, по моему опыту отладчиков (gdb, ddd, SoftICE, Ghidra…) нормальный READ/WRITE доступ есть (хоть код на ходу правь).

Но! Очевидно в каких-то случаях дебаггер маппит COPY-ON-WRITE, и если вы разбираетесь в теме и напишите обьяснение, когда и как оно мапиится — велком!

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.