Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Хакерские Штучки    >>    simio20
   
 
 Резидентный перехватчик обращений к портам  Сергей Васильев 18.06.1994

SIMIO v.2.00. Резидентный перехватчик обращений к любым портам. Работает под управлением отладчика Soft-ICE. Основное достоинство - трассирует порт (на IN-ны и OUT-ты). Only ASSEMBLER!



16k 
 

+-------------------------------------+ | ђ¬ SIMIO v.2.00 ¬ђ | | -= Simulator for I/O operation =- | | (C) 1993 by WssSoft | | SIMIO - резидентный перехватчик | | на тему: обращений к любым портам. | | Работает под управлением отладчика | | Soft-ICE. Основное достоинство - | | трассирует порт (на IN-ны и OUT-ты) | +-------------------------------------+ | Coded by: Wasilyev S.S. | +-------------------------------------+ SIMIO - Simulator for I/O operation Russian operation manual. 1. С чего все началось. "Однажды вечером, когда делать было нечего" родилась идея - "Как бы, это самое, порт то протрассировать, на предмет получения протокола ?" ;)). Не смотря на то, что круг и возможности "современных" отладчиков велики, однако очень неудобно бывает порой трасссировать порт вручную, да еще если при этом программа занимает не один десяток Кбайт. В связи с этим я рад предоставить Вам возможность облегчить все тяготы данного занятия. Ознакомясь с возможностями 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 (см. исходник), то необходимо сделать следующее: 1. В отладчике Soft-ICE командой ACTION необходимо установить вектор 7Ah на наш обработчик командой - ACTION 7A; 2. Установить breakpoint на любые операции с любыми портами, например (BPIO 2f8 rw | BPIO 3f8 rw), подробнее см. в доке по SOFT-ICE. После этого при любых операциях ввода/вывода в трассируемый порт SOFT-ICE будет генерировать наше прерывание и мы получим протокол работы портов в/в. Если установлен режим эмуляции порта, то при операциях чтения из трассируемого порта, вместо данных реально прочитанных, будут браться данные подготовленные вами в буфере для ввода, с помощью программы IORead.exe. Т/о программа, которая читает порт будет обманута. Несколько слов о сервисной программе IOREAD.EXE. Для удобной работы с обработчиком, а именно получения протокола работы в виде файла, и загрузки данных в буфер ввода из текстового файла. Данная программа автоматически определяет размер буферов и конвертирует данные в читабельную форму. Аналогичные действия происходят, при загрузке данных в буфер. В заключение хотелось бы привести некоторые рекомендации по эксплуатации программ. Возможный алгоритм работы: 1. Снимаем протокол работы портов (опция /r); 2. Запуская программу IOREAD.EXE, получаем файл результат IOREAD.LST. 3. Корректируем необходимые команды в этом файле. 4. Загружаем данные из этого файла в буфер ввода, с помощью IOREAD.EXE. 5. После этого переинсталируем SIMIO на эмуляцию порта. Запускаем IOREAD.EXE с опцией /i. 6. И трассируемая программа получает то, что мы поместили в буфер. Вот пожалуй и все ! With best regards Sergey