На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Сниффер COM , Сниффер COM
    Здравствуйте.
    Есть Прибор, подключённый через COM пор. На ПК стоит программа которая получает данные от этого прибора.
    Задача: Нужно перехватывать данные при этом сторонняя программа должна работать. Т.е. нужно написать снифер com-порта вроде этого : http://www.serial-port-monitor.com/
    Как это сделать? Подскажите в какую сторону копать?
      Цитата tarakan1983 @
      Как это сделать? Подскажите в какую сторону копать?

      Надо сделать dll, которая будет внедрена в подсудимый процесс.
      С её помощью необходимо перехватить WIN-API функции:
      ExpandedWrap disabled
         
         "ExitProcess"
         "CloseHandle"
         "CreateFileA"
         "CreateFileW"
         "ReadFile"
         "WriteFile"

      (я делал именно так).
      Их использование внутри dll конечно может зависеть от особенностей
      функционирования конкретного приложения.
      Но общий алгоритм такой:
      1. Обнаружили контролем за именем файла, что CreateFile пытается открыть COM-порт.
      2. В случае успеха, запомнили хэндл.
      3. Перехватчики ReadFile/WriteFile перешли в состояние слежения и выводом (куда-то)
      информации, пересылаемой с вышеуказанным полученным хэндлом.
      4. Если вдруг произойдёт CloseHandle с этим хэндлом, перехватчики переходят в пассивное состояние
      и алгоритм возвращается к пункту 1.
      -----
      Если речь идёт об асинхронном открытии COM-порта, всё будет похоже, но несколько сложнее.
      Однако, начать можно с этого.
      Сообщение отредактировано: ЫукпШ -
        Я использую COM port monitorдля сиффинга, пока не подводил. Но интересно попробовать и вариант с использованием функции
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0188 ]   [ 17 queries used ]   [ Generated: 18.04.24, 04:55 GMT ]