nixp.ru v3.0

21 января 2017,
суббота,
22:43:00 MSK

DevOps с компанией «Флант»
anonymous написал 27 июля 2005 года в 05:39 (249 просмотров) Ведет себя неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.

Необхадимо написать драйвер для ДОС, который перехватывает команду «out dx,al» и если надо меняет «al» и посылает уже исправленное значение.

rgo

Я знаю два способа:

1) установить флаг трассировки, ловить прерывание 1 и искать нужные команды.

2) vm86, если перевести процессор в защищённый режим, а дос выполнять в режиме эмуляции 8086, то можно отлавливать исключение при попытке что-то вывести в порты ввода-вывода.

На эту тему можно писать очень много… И много написано. Очень рекомендую поискать в статьях (да и на форуме тоже) на wasm.ru

Genie

довольно просто.. в теории. ;)

перевести процессор в защищённый режим, настроить для vm необходимое io_map (или как оно правильно, в общем, битовый массив разрешённых к использованию портов ввода/вывода)

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

ну, это в теории

а на практике… може проще дебаггером найти это место, заменить код команды на int3 и обработать внутри этого исключения?

rgo

на практике, можно ещё и так:

порытся на wasm.ru, и просто в google, найти пример, и его использовать. Дебуггером проще, но не по пионерски. Да и не факт, что проще: если программа тщательно скрывает момент обращения к портам или, на самом деле, обращается BIOS, то разобраться и написать с нуля эмулятор, может быть и проще и быстрее.

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.