anonymous
			
				написал 27 июля 2005 года в 05:39 (808 просмотров)
			
			
			Ведет себя
			неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.			
	
	Необхадимо написать драйвер для ДОС, который перехватывает команду «out dx,al» и если надо меняет «al» и посылает уже исправленное значение.
Последние комментарии
-   OlegL, 17 декабря 2023 года в 15:00            →
        
        
            Перекличка
            21 OlegL, 17 декабря 2023 года в 15:00            →
        
        
            Перекличка
            21
-   REDkiy, 8 июня 2023 года в 9:09            →
        
        
            Как «замокать» файл для юниттеста в Python?
            2 REDkiy, 8 июня 2023 года в 9:09            →
        
        
            Как «замокать» файл для юниттеста в Python?
            2
-   fhunter, 29 ноября 2022 года в 2:09            →
        
        
            Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
            6 fhunter, 29 ноября 2022 года в 2:09            →
        
        
            Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
            6
-   Иванн, 9 апреля 2022 года в 8:31            →
        
        
            Ассоциация РАСПО провела первое учредительное собрание
            1 Иванн, 9 апреля 2022 года в 8:31            →
        
        
            Ассоциация РАСПО провела первое учредительное собрание
            1
-   Kiri11.ADV1, 7 марта 2021 года в 12:01            →
        
        
            Логи catalina.out в TomCat 9 в формате JSON
            1 Kiri11.ADV1, 7 марта 2021 года в 12:01            →
        
        
            Логи catalina.out в TomCat 9 в формате JSON
            1
 DevOps as a Service from Palark
DevOps as a Service from Palark
	24/7 SRE & DevOps service to cover all your Kubernetes needs.


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