Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Serial port monitoring


Автор: BadHabit 25.12.2005, 13:42
Здравствуйте товарищи! Понадобилось мне мониторить одну программку, а конкретно то, что она читает/получает из ком порта. Написал прогу которая пурехватывает ReadFile для этой проги, думал все будет - бенч, а вот и нет, после перехвата ReadFile, вижу всё, что читает прога из файлов - настройки, хелп свой и т.д., а данных из ком порта - нет!
Так вот мне не совсем понятно как и чем эта прога может читать из ком порта? В таблице импорта тоже вроде никаких подозрительных функций нет.

ЗЫ. И ещё вопрос, может кто писал когда драйвер-фильтр для перехвата обращений к ком порту, по типу PortMon от www.sysinternals.com? Откликнитесь плз., ибо я никогда с написанием дров не встречался и было бы очень интересно пообщаться.

ЗЫЫ. Прилагаю таблицу импортов этой проги, могу так же её саму выслать, чтобы
"ковырнуть" если кто умеет...

Автор: Romikgy 26.12.2005, 09:38
А что мешает пользоваться
Цитата(BadHabit @ 25.12.2005, 12:42)
PortMon

smile

Автор: azesmcar 26.12.2005, 10:33
Можешь внедрить DLL в ту самую программу и перехватить для нее API функции для работы с COM портом. т.е. CreateFile, WriteFile, ReadFile ...итд итп...

http://www.cyberinfo.ru/cgi-bin/view.cgi?id=2989&cat_id=5&print=1
Это про внедрении DLL. Про перехват у Рихтера почитай...

Автор: BadHabit 26.12.2005, 10:56
Romikgy, мнешает то, что мне нужно чтобы _моя_ прога мониторила ком порт, а не ПортМон. Снятые данные с ком порта мне нужны в моей прогамме!
azesmcar, Вы мой пост видимо не внимательно прочитали, я же написал, что все внедрил и все перехватил, только не вижу данных из ком порта... Вот я и спрашиваю почему? Чем ещё прога _кроме_ ReadFile() может из ком порта читать?

Автор: Romikgy 26.12.2005, 16:45
Мож это еще перехватить DeviceIoControl ????
Добавлено @ 16:46
Цитата(BadHabit @ 26.12.2005, 09:56)
Чем ещё прога _кроме_ ReadFile() может из ком порта читать?
мож у нее свой драйвер?

Автор: azesmcar 26.12.2005, 17:28
Цитата
azesmcar, Вы мой пост видимо не внимательно прочитали, я же написал, что все внедрил и все перехватил, только не вижу данных из ком порта... Вот я и спрашиваю почему? Чем ещё прога _кроме_ ReadFile() может из ком порта читать?


Ах да, извиняюсь, не заметил..почему то обратил внимание только на
Цитата
может кто писал когда драйвер-фильтр для перехвата обращений к ком порту, по типу PortMon от www.sysinternals.com? Откликнитесь плз., ибо я никогда с написанием дров не встречался и было бы очень интересно пообщаться.


Думал ты как сделать не знаешь...Ну не работает с ReadFile тогда это может быть ReadFileEx. Ты его пробовал перехватить? Ну и в конце концов как сказал Romikgy
Цитата
DeviceIoControl

Автор: BadHabit 26.12.2005, 18:02
Цитата(Romikgy @ 26.12.2005, 16:45)
Мож это еще перехватить DeviceIoControl ????

Не импортирует она её, я думаю что и через LoadLibrary/GetProcAddress тоже не грузит, ибо прога обычная без всяких извратов, писана на делфе. Могу выслать...
Цитата(azesmcar @ 26.12.2005, 17:28)
Думал ты как сделать не знаешь...Ну не работает с ReadFile тогда это может быть ReadFileEx. Ты его пробовал перехватить? Ну и в конце концов как сказал Romikgy

Я ж таблицу импорта приаттачил, нет её тама...
Есть идеи?

Автор: Romikgy 26.12.2005, 18:12
Цитата(BadHabit @ 26.12.2005, 17:02)
Могу выслать...
Дык приатач и посмотрим smile
ЗЫ только драйвером

Добавлено @ 18:21
Цитата
SetupComm (IAT: 0016003A)
    0  SetThreadPriority (IAT: 00160046)
    0  SetThreadLocale (IAT: 0016005A)
    0  SetLastError (IAT: 0016006C)
    0  SetFileTime (IAT: 0016007C)
    0  SetFilePointer (IAT: 0016008A)
    0  SetFileAttributesA (IAT: 0016009C)
    0  SetEvent (IAT: 001600B2)
    0  SetErrorMode (IAT: 001600BE)
    0  SetEndOfFile (IAT: 001600CE)
    0  SetCommTimeouts (IAT: 001600DE)
    0  SetCommState (IAT: 001600F0)
    0  SetCommMask (IAT: 00160100)
    0  SetCommBreak (IAT: 0016010E)
    0  ResetEvent (IAT: 0016011E)
    0  ReadFile (IAT: 0016012C)

Все таки подозрения , что работает с ReadFile , судя по таблице, значит не то ловил smile

Автор: BadHabit 27.12.2005, 11:09
Цитата(Romikgy @ 26.12.2005, 18:12)
Дык приатач и посмотрим smile

Блин, она ужатая под мерт весит, кто-нить знает адресок какого-нить халявного ФТПшника?
Цитата(Romikgy @ 26.12.2005, 18:12)
Все таки подозрения , что работает с ReadFile , судя по таблице, значит не то ловил

Есть подозрения что из-за борландовского линкера эта проблемма, если посмотреть на IAT, то видно что импорты из kernel32.dll там в двух "thunk"х, щаз смотрю, может я только первый хукаю. И ваще как такое может быть чтобы импортировалась одна и та же функция 2 раза, а главное зачем?

Автор: Romikgy 27.12.2005, 11:57
Многие файлы имеют двойной вызов ф-ций, зачем не знаю smile

Автор: BadHabit 27.12.2005, 16:56
Цитата(Romikgy @ 27.12.2005, 11:57)
Многие файлы имеют двойной вызов ф-ций, зачем не знаю smile

Тыды очень интересно, как узнать, какой именно ссылкой в IAT пользуется прога?

Автор: Romikgy 27.12.2005, 17:24
Обеими, имхо когда человек писал код, пользовал несколько модулей, один для файлов, другой для ком-порта, третий для сети и т.д. , и в каждом объявлял, использование ф-ции ридфайл( или компилятор объявлял), а потом линкер , просто собрал все в кучу, зачем человеку следить , сколько раз была ф-ция записана в таблицу импорта, ведь работает smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)