Тема: Хук Com winApi
Показать сообщение отдельно
  #2  
Старый 19.03.2013, 18:42
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
программа должна отлавливать сообщения, посылаемые ком портом
Печальная новость: порт сообщений не посылает. Он просто читает данные, приходящие по протоколу UART.
Цитата:
приложение стороннее работает напрямую с портом, без сторонних драйверов
Что, прям-таки напрямую, прям
Код:
mov dx, PORT
out dx, eax
? Молодцы ребята, взломали аппаратную защиту процессора.
Прежде, чем за такое браться, нужно представлять, как работает ввод-вывод. Что с 3 кольца НЕВОЗМОЖЕН ввод/вывод в порт напрямую (в нормальных системах), потому что это гарантирует моментальное убийство ОС любой программой, которая этого захотела. Работа все равно идет через драйвер, просто он системный. И написать драйвер для перехвата CreateFile/WriteFile/ReadFile можно. Только большой геморрой.
Цитата:
Я думаю, единственный выход, это ловить какие - то апишные функции в самой программе
В САМОЙ программе - можно. Для этого надо реверсить программу, найти, где она принимает, и сделать патч. Либо пропатчить программу руками (тяжело), либо сделать загрузчик, который запускает приложение, внедряет код каким-либо методом, в нужном месте ставит jmp/call на свой код и уже в самом приложении писать то, что нужно. Для этого надо владеть реверс-инженерингом и хорошо знать ассемблер, а также немного машинные коды.

Я бы делал методом стартера или внедрением DLL. Нашел бы в программе строку 'COM', 'COM4' или в этом роде, нашел ее использование и в дебаге отследил до чтения данных. Или же сразу в дебаге поставил бы бряк на CreateFileA и CreateFileW и жал F5, пока не увижу первым параметром в стеке нужную строку. Так же можно и с ReadFile поступить, если прога не насилует хард постоянными обращениями к файлам.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием