anonymous
написал 27 июля 2005 года в 05:39 (581 просмотр)
Ведет себя
неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.
Необхадимо написать драйвер для ДОС, который перехватывает команду «out dx,al» и если надо меняет «al» и посылает уже исправленное значение.
Последние комментарии
-
fhunter, 29 ноября в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
-
DimitriuS, 6 сентября в 10:37 → Перекличка 14
-
Иванн, 9 апреля в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
-
Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
-
fhunter, 26 февраля 2021 года в 20:45 → A, MX, PTR — Настройка и проверка извне. Как ? 2

Экология и вегетарианство на благо всем живым существам Планеты.
Я знаю два способа:
1) установить флаг трассировки, ловить прерывание 1 и искать нужные команды.
2) vm86, если перевести процессор в защищённый режим, а дос выполнять в режиме эмуляции 8086, то можно отлавливать исключение при попытке что-то вывести в порты ввода-вывода.
На эту тему можно писать очень много… И много написано. Очень рекомендую поискать в статьях (да и на форуме тоже) на wasm.ru
довольно просто.. в теории. ;)
перевести процессор в защищённый режим, настроить для vm необходимое io_map (или как оно правильно, в общем, битовый массив разрешённых к использованию портов ввода/вывода)
после чего настраиваешь обработку соответствующего исключения (надо сказать, что тут ещё гнеобходимо делать проверку на то, а не прерывание ли это от какого устройства).
ну, это в теории
а на практике… може проще дебаггером найти это место, заменить код команды на int3 и обработать внутри этого исключения?
на практике, можно ещё и так:
порытся на wasm.ru, и просто в google, найти пример, и его использовать. Дебуггером проще, но не по пионерски. Да и не факт, что проще: если программа тщательно скрывает момент обращения к портам или, на самом деле, обращается BIOS, то разобраться и написать с нуля эмулятор, может быть и проще и быстрее.