Сейчас на форуме: subword, rtsgreg1989, zds (+9 невидимых)

 eXeL@B —› Основной форум —› Как осуществляется приём/передача данных в драйвере USB ?
Посл.ответ Сообщение


Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 11 марта 2008 18:28
· Личное сообщение · #1

Есть некий USB контроллер и драйвер к нему. Программа с донглом и присутствует конверт. Эмуляция и реверс EXE не интересует. Сторонними логгерами USB пока не хочу пользоваться. Хочу написать свой логгер вставив вызовы функций перехвата данных (которые реализую в dll) непосредственно с файл драйвера. На какие функции в sys файле стоит обратить внимание ? Программа с драйвером будет общаться через DeviceIoControl ?
Где в sys файле найти участок обработки ? Каким образом осуществляется приём/передача данных в подобной связке ?
Понимаю, что ответы на многие вопросы живут в гугле и существует масса сложных и умных статей по устройству драйверов. Мне нужен ответ в двух словах который сразу натолкнёт на путь к практической реализации.




Ранг: 114.4 (ветеран), 21thx
Активность: 0.040.01
Статус: Участник

Создано: 11 марта 2008 21:41
· Личное сообщение · #2

ToBad, напиши с каким донглом взаимодействует программа. И диапазон предположений сразу сузится.




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 11 марта 2008 22:05
· Личное сообщение · #3

Larry пишет:
напиши с каким донглом взаимодействует программа


HASP HL. Хотя какая разница ? Я про донгл между прочим упомянул. Наверное я запутанно объяснил. Тот USB драйвер это чисто драйвер хардварного контроллера. Контроллер связан с кнопками и лампами. Задача моя понять алго взаимодействия контроллера и программы. Обо всём, что касается ключа и конверта я упомянул, что бы не предлагали реверсить ЕХЕ в поисках алго, ибо для меня это сложнее...



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 11 марта 2008 22:55
· Личное сообщение · #4

ToBad пишет:
На какие функции в sys файле стоит обратить внимание ? Программа с драйвером будет общаться через DeviceIoControl ?
Где в sys файле найти участок обработки ?

ddk (wdk) -> примеры, доки -> просветление.
ps: usb снифферов в природе уже хватает




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 12 марта 2008 06:20 · Поправил: s0larian
· Личное сообщение · #5

ToBad, с драйвером проги разговаривают через ReadFile(), WriteFile(), DeviceIOControl(). Для WDM drivers на 2000/XP/Vista в kernel mode эти вызовы превращаются в IRP. Обработчики цепляются в DriverEntry вот так:

DriverObject->MajorFunction[IRP_MJ_READ] = ReadHandler;


Там же обработчик PnP - все события и команды. Вся работа с устройством через WDM API, тут нету memory mapped IO. Если хочешь понять что и как работает, то разбирай в IDA вот эти обработчики: IRP_MJ_DEVICE_CONTROL, IRP_MJ_PNP, IRP_MJ_READ, IRP_MJ_WRITE и IRP_MJ_SYSTEM_CONTROL. В них 90% кода и логики.



Ранг: 74.1 (постоянный), 34thx
Активность: 0.030
Статус: Участник

Создано: 12 марта 2008 10:09
· Личное сообщение · #6

ToBad

А если перехватыват данные, передаваемые\получаемые с драйвера в юзер моде?
(ReadFile\WriteFile\DeviceIOControl ???)
и посмотреть, что передается и получается??




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 13 марта 2008 13:46
· Личное сообщение · #7

Большое спасибо всем за разъяснения ! Информация очень помогла !


 eXeL@B —› Основной форум —› Как осуществляется приём/передача данных в драйвере USB ?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати