|
|||
Скачать Резидентный перехватчик обращений к портам
18.06.1994 SIMIO - Simulator for I/O operation1. С чего все началось. "Однажды вечером, когда делать было нечего" родилась идея - "Как бы, это самое, порт то протрассировать, на предмет получения протокола ?" ;)). Не смотря на то, что круг и возможности "современных" отладчиков велики, однако очень неудобно бывает порой трасссировать порт вручную, да еще если при этом программа занимает не один десяток Кбайт. В связи с этим я рад предоставить Вам возможность облегчить все тяготы данного занятия. Ознакомясь с возможностями SIMIO - Вы не сможете с этим не согласиться. 2. Комплект simio.asm - исходный текст программы; ioread.exe - программа для получения/засылки протокола работы портов; test3.pas - тест к программе. 3. Возможности программы. Главная возможность программы - заключается в получении протокола работы трассируемого порта, в виде текстового файла, даже очень приемлемого и понятного вида. Вторая возможность - это подмена программных обращений к трассируемым портам на свои, записанные опять-таки в текстовом файле, при этом программа даже не подозревает о замене и, к тому-же, "реальных" операций чтения из порта не происходит. Естественно, необходимо отметить, что основную работу выполняет отладчик Soft-ICE, но мы, т.е. программа, усердно помогаем ему в этом. Опции работы с программой: /S - эмулировать порт (подмена операций IN и OUT) /R - вести протокол работы порта (прозрачная мода) /I:XXXX - размер буфера в байтах для подмены операций IN. ( При чтении из трассируемого порта программе передается значение из этого буфера. Размер буфера по умолчанию 512 байт. ) /O:XXXX - размер буфера в байтах для получения протокола работы трассируемого порта. По умолчанию 2 Кб. P.S. При работе в режиме "/S" автоматически ведется протокол работы порта, если /O > 0000. Размеры I/O буферов необходимо задавать HEX виде. И еще, буфера не зациклены, т.е при достижении конца буфера обработчик работает вхолостую. Весь необходимый размер памяти, отводимый под буфера, должен определяться самим пользователем исходя из обстановки, с помощью опций. Вот пожалуй и все, скромно, но со вкусом. ;-)) 4. Как работать с SIMIO ? SIMIO перехватывает и обрабатывает следующие команды: 0E4h - in al,port 0E5h - in ax,port 0E6h - out port,al 0E7h - out port,ax 0ECh - in al,dx 0EDh - in ax,dx 0EEh - out al,dx 0EFh - out ax,dx +-------------------- ВНИМАНИЕ ! ---------------------+ | Она будет работать только под отладчиком SOFT-ICE. | +-----------------------------------------------------+ Не будем останавливаться на том, как работать с Soft-ICE, лишь акцентируем внимание на проблемах касающихся SIMIO. После загрузки Soft-ICE в память запускаем наш перехватчик т.е. SIMIO с необходимыми опциями (описано выше). Т.к. SIMIO жестко перехватывает вектор 7Ah (см. исходник), то необходимо сделать следующее:
После этого при любых операциях ввода/вывода в трассируемый порт SOFT-ICE будет генерировать наше прерывание и мы получим протокол работы портов в/в. Если установлен режим эмуляции порта, то при операциях чтения из трассируемого порта, вместо данных реально прочитанных, будут браться данные подготовленные вами в буфере для ввода, с помощью программы IORead.exe. Т/о программа, которая читает порт будет обманута. Несколько слов о сервисной программе IOREAD.EXE. Для удобной работы с обработчиком, а именно получения протокола работы в виде файла, и загрузки данных в буфер ввода из текстового файла. Данная программа автоматически определяет размер буферов и конвертирует данные в читабельную форму. Аналогичные действия происходят, при загрузке данных в буфер. В заключение хотелось бы привести некоторые рекомендации по эксплуатации программ. Возможный алгоритм работы:
| |||
© 2009–2024 Russian Pascal Developer Network.
Техническая площадка: ISBIZ Хостинг |