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 можно здесь.
По всем вопросам пишите сюда |
Материнский сайт
|