Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.22.51.241] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Есть Прибор, подключённый через COM пор. На ПК стоит программа которая получает данные от этого прибора. Задача: Нужно перехватывать данные при этом сторонняя программа должна работать. Т.е. нужно написать снифер com-порта вроде этого : http://www.serial-port-monitor.com/ Как это сделать? Подскажите в какую сторону копать? |
Сообщ.
#2
,
|
|
|
Цитата tarakan1983 @ Как это сделать? Подскажите в какую сторону копать? Надо сделать dll, которая будет внедрена в подсудимый процесс. С её помощью необходимо перехватить WIN-API функции: "ExitProcess" "CloseHandle" "CreateFileA" "CreateFileW" "ReadFile" "WriteFile" (я делал именно так). Их использование внутри dll конечно может зависеть от особенностей функционирования конкретного приложения. Но общий алгоритм такой: 1. Обнаружили контролем за именем файла, что CreateFile пытается открыть COM-порт. 2. В случае успеха, запомнили хэндл. 3. Перехватчики ReadFile/WriteFile перешли в состояние слежения и выводом (куда-то) информации, пересылаемой с вышеуказанным полученным хэндлом. 4. Если вдруг произойдёт CloseHandle с этим хэндлом, перехватчики переходят в пассивное состояние и алгоритм возвращается к пункту 1. ----- Если речь идёт об асинхронном открытии COM-порта, всё будет похоже, но несколько сложнее. Однако, начать можно с этого. |
Сообщ.
#3
,
|
|
|
Я использую COM port monitorдля сиффинга, пока не подводил. Но интересно попробовать и вариант с использованием функции
|