Distance.Gradschools.com

Описание программы "MemEdit"

    1. MemEdit - это гляделка оперативной памяти (точнее адресного пространства), позволяющая просматривать различные структуры данных либо участки кода в шестнадцатиричном виде и как текст, редактировать содержимое памяти (если она конечно не ROM), просматривать адресное пространство портов ввода-вывода. Поддерживается также простой поиск последовательности длиной до 16 байт или текстовой строки той же длины. Может полноценно работать под следующими операционными системами:

  • Отсутствие ОС вообще
  • MS-DOS
  • Windows 3.1
  • Windows 9x
  • Под Windows NT будут доступны не все функции. Системные требования: 80386 или выше, EGA, в памяти занимает примерно 6.5K, про требованию к дисковому пространству, я думаю, говорить не стоит.

        2. Интерфейс. Интерфейс программы напоминает DiskEdit из NU 8.0. В верхней строке отображается текущий статус, а также версия и дата программы. В центре 3 колонки: в первой отображается адрес крайнего левого байта в соответствующей строке, во второй - содержимое памяти в шестнадцатиричном виде (16 байт в строке , 18 строк всего 288 байт), в третьей тоже самое, но как текст. Причём показ содержимого памяти осуществляется в реальном времени, что позволяет увидеть таймеры, стеки и т.п. Как выглядит интерфейс программы посмотрите здесь. В нижней строке отображается текущий адрес на котором расположен курсор, регистр CS и указатель стека - в основном для красоты, второй байт регистра EFLAGS, содержание системных регистров CR0, CR3, LDTR, GDTR, IDTR.

  • MSW - младший байт регистра MSW в двоичном виде, при переключении в "32-разрядный" режим MSW меняется на CR0 уже в 16-ричном виде;
  • LDT - содержимое регистра LDTR - дескриптор LDT, доступен только в "32-разрядном" режиме;
  • GDT - старшие 32 бита регистра GDTR, содержащие адрес GDT
  • IDT - старшие 32 бита регистра IDTR, содержащие адрес IDT
  • CR3 - содержимое регистра CR3 - физический адрес каталога страниц
  •    3. Управление. Управление курсором:

  • LEFT,RIGHT - перемещение курсора вправо-влево на полубайт(тетраду), если MemEdit работает в "стандартном" режиме, то при пересечении границы сермента в 64K значению сегмента добавляется 1000h, а смещение становится равным 0
  • UP,DOWN - переместить курсор вверх(в младшие адреса) или вниз(в старшие адреса) на 16 байт
  • PAGE UP,PAGE DOWN - на 1 страницу(120h байт) вверх-вниз
  • НОME,END - на 10000h (65536) байт вверх-вниз, если режим "стандартный", то у значения сегмента отнимается(добавляется) 1000h, если "32-разрядный" - просто линейный адрес уменьшается или увеличивается на 64K
  • F5 - фунция GOTO. Выводится диалог, где нужно ввести адрес назначения. В зависимости от режима адрес вводится либо в виде сегмент:смещение, либо линейный. При вводе последней восьмой цифры адреса сразу выполняется переход. Выйти из диалога можно, нажав ESC. Чтобы заменить неправильно введённую цифру нужно нажать BACKSPASE, при этом курсор перемещается на 1 цифру влево, если 2 раза - на 2 цифры и т.д.
  • F4 - адрес назад - переход на адрес, который был на экране до перехода на текущий адрес с помощью выполнения функций: GOTO,поиск,адрес назад.
  • 0123456789abcdef - нажатие одной из этих клавиш приводит к записи в текущую позицию курсора соответсвующего полубайта и перемещению курсора на 1 полубайт вправо(в старшие адреса).
    ВНИМАНИЕ! Не редактируйте содержимое памяти или портов, если не знаете что делаете! Это может привести к зависанию или перезагрузке компьютера, некорректной работе программ и т.д. Запись в порты может привести к непредсказуемым действиям аппаратуры!
  •    Управление режимами. Повторное нажатие тех же клавиш возвращает программу в предыдущий режим.

  • F2 - переход в "32-разрядный" режим. Изначально MemEdit запускается в "стандартном" режиме, в строке статуса отображается 'S', при переходе в "32-разрядный" режим 'S' меняется на 'X'. Повторное нажатие F2 возвращает MemEdit в "стандартный" режим.
  • F3 - показ пространства портов ввода-вывода. Режим обозначается в строке статуса как 'I'.
  • F6 - режим показа физических адресов(разновидность "32-разрядного" режима), может быть включён только если текущий режим - 'X', обозначается: 'P'.
  • r - завершает MemEdit, но осталяет его резидентным. Разумеется, если эта DOS - сессия под многозадачкой будет закрыта, резидентный MemEdit пропадёт. Эта функция не работает, если в памяти уже есть резидентная копия программы.
  • F12 - вызвать резидетный MemEdit. Нажатие клавиши когда программа уже активна ни к чему не приводит.
  •    Прочие функции

  • ESC - выход из программы
  • s - "system" - сделать загрузочную дискету. Появится окно 'Insert A: and press a key.' после нажатия клавиши будет произведена попытка записать копию MemEdit-a на дискету A:. Если дискеты или вообще дисковода A:(disk #00h) нет, будет выведено сообщение об ошибке - 'Failed.' Если всё успешно, то 'Successfully.'. Теперь с этой дискеты можно загрузить MemEdit. Эта функция может быть использована для просмотра содержимого памяти до загрузки операционной системы, например, чтобы узнать оригинальные обработчики прерываний в BIOS. Выйти можно также по ESC, при этом бутет предпринята попытка считать MBR c диска С: (disk #80h) и передать ему управление, обычно это приводит к загрузке операционной системы. Если же диска 80h нет... придётся лишний раз нажать RESET.
    Следует помнить, что при записи на дискету игнорируется её логическая организация! При этом будут потеряна загрузочная запись и FAT, и, следовательно, ВСЕ ДАННЫЕ на дискете будут ПОТЕРЯНЫ! Вернуть дискету в "нормальное" состояние можно только форматированием.
  • p - сбросить индикатор 'PF'
  • F7 - Поиск. Функция доступна только в режимах 'S' и 'X' и не доступна в режимах 'P' и 'I'. После нажатия F7 появляется диалоговое окно, содержещее 2 поля ввода: нижнее - для ввода символьной строки длиной 16 символов и верхнее, куда можно ввести последовательность длиной до 16 байт в шестнадцатиричном виде. Переключаться между полями ввода можно с помощью клавиши TAB. Закрывается окно поиска клавишей ESC. Поиск начинается после нажатия ENTER. Ищется только строго то, что отображается в шестнадцатиричном виде и символы 'D' и 'd' всегда считаются как разные. Если строка не найдена, в этом же диалоге появится строка 'Target not found!', если же соответствие найдено, выполняется переход на адрес, содержащий найденную строку. В режиме 'S' поиск выполняется по стандартному 1-му мегабайту без HMA. В режиме же 'X' есть 2 варианта: если MemEdit запущен под DOS(или без ОС), то поиск ведётся по всему объёму оперативной памяти, на машине P233MMX просмотр 32Мбайт памяти занимает 2-6 секунд в зависимости от длины и содержания строки поиска; если же программа работает под ОС Windows 3.1 или Windows 9x, то поиск ведётся по всему линейному адресному пространству объёмом в 4Гбайта. Эта процедура на той же конфигурации занимает уже несколько десятков секунд и её длительность много от чего зависит. При этом процесс поиска прервать нельзя никак (ну можно конечно...) и создаётся впечатление, что машина зависла.
  •     4. Описание режимов работы.
    Программа может работать в следующих режимах:

  • "Стандартный" - 'S'
  • "32-разрядный" - 'X', его разновидности:
    - для реального режима
    - для реального режима с HIMEM
    - для DPMI (Windows)
    - режим показа физических адресов под DPMI - 'P'
  • Показ адресного просранства IO - 'I'
  •    4.1 Режим 'S'
    Этот режим работает везде, в нём программа работает при запуске. Адреса в левой колонке отображаются в виде сегмент:смещение и показывается адресное пространство реального режима (или V86) размером в 1Мбайт + HMA (если она доступна). Чтобы увидеть HMA надо c помощью GOTO перейти на адрес FFF0:0100.

       4.2 Режим 'Х'
    В этом режиме показывается линейное (или физическое) адресное пространство процессора 80386 размером в 4Гбайта. Все адреса - линейные 32-битные. Этот режим не может быть запущен под emm386/VCPI. Режим 'X' работает под Windows 3.1 и Windows 9x, но не работает под Windows NT (бавают в жизни огорчения).
    - под "голым" DOS-ом режим 'X' работает как есть и линейные адреса совпадают с физическими
    - режим 'X' для DOS с HIMEM отличется от предыдущего тем, что здесь управление линией A20 осуществляется с помощью HIMEM, а не напрямую. Поэтому если MemEdit не смог сам открыть A20 по причине того, что ваш компьютер - какой-нибудь PS/2, то можно попробовать это сделать с помощью HIMEM.
    - режим 'X' для DPMI. Этот режим включается, если программа запущена в защищённом режиме под каким-нибудь DPMI-хостом, например в DOS-сессии под Windows 95. Не может быть включён, если программа резидентна и вызвана по F12. В данном режиме показывается линейное адресное просранство 4Гбайта той "виртуальной машины", где запущена программа, однако это позволяет просмотреть ядро Windows 95 - VMM, VxD, основные структуры управления памятью и системой в защищённом режиме такие как GDT, IDT, LDT, TSS и т.п. Так как не все страницы линейного пространства отображены в физические, то могут возникать страничные сбои. В этом случае все байты сбойной страницы отображаются как 0FFh и их нельзя писать, в строке статуса при этом появляется индикатор 'PF'. Также если когда либо в процессе работы MemEdit-a возник сраничный сбой в строке статуса появляется индикатор 'PF', его можно убрать нажатием клавиши 'p'.
    - режим показа "физических адресов" - 'P'. Работает только под DPMI. Может быть включён только если уже запущен режим 'X'. Нужен потому, что при включённой подкачке страниц линейные адреса отличаются от физических. Трансляция адресов осуществляется с помощью DPMI-хоста и ответственность за её достоверность лежит на DPMI-хосте и под Windows 3.1 почему-то не работает, хотя и там и там вроде 0.9. В этом режиме можно посмотреть каталог и таблицы страниц. Адрес каталога можно посмотреть в CR3.

       4.3 Режим 'I'
    В режиме 'I' показывается 64Кбайта адресного пространства ввода-вывода. Отображение производится путём циклического чтения из портов. Многозадачные ОС, эмулирующие IO, это не очень любят. Режим 'I' позволяет посмотреть где какие устройства расположены, посмотреть счётчики таймера, COM-порты, сканкоды нажатия и отжатия клавиш (не все) и т.д. Запись в порты осуществляется полубайтами и существует, имхо, только для красоты.

       5. Командная строка
    Дла командной строки предусмотрен один единственный параметр 'R' - обязательно в верхнем регистре. Этот параметр заставляет MemEdit стать резидентным: программа запускается и не отображая ничего на экране сохраняет себя резидентной в памяти, выводит сообщение: "MemEdit is TSR, press F12 to activate..." и возвращает управление в DOS. Основное применение - возможность загружать программу из AUTOEXEC.BAT, добавив туда строку "MEMEDIT R". Загруженный таким образом MemEdit, можно будет вызвать из любой DOS-сессии в Windows 95, но нельзя вызвать более одного одновременно.

    Скачать версию 1.42 можно здесь.

    По всем вопросам пишите сюда | Материнский сайт



    © Created by JSN 2000.