best tool to reverse-engineer a WinXP PS/2 touchpad driver?
У меня есть тачпад PS/2, для которого я хотел бы написать драйвер (я просто веб-парень, так что это незнакомая для меня территория). Сенсорная панель поставляется с драйвером Windows XP, который, по-видимому, отправляет сообщения для включения / выключения касания-нажатия Я пытаюсь выяснить, какое сообщение оно отправляет, но не знаю, с чего начать. Будет ли работать программное обеспечение типа "Syser Debugger"? Я хочу перехватить исходящие сообщения, отправляемые на шину PS/2.
3 ответа
IDA Pro не очень пригодится вам, если вы хотите узнать, какие "сообщения" отправляются. Вы должны понимать, что это очень большой шаг для большинства веб-разработчиков, но вы уже знали это?
Я бы начал с того, чтобы решить, действительно ли вам нужно работать на уровне драйвера, часто это уровень ядра. Уровень пользовательского режима может быть там, где вы хотите посмотреть в первую очередь. Используйте такой инструмент, как WinSpy или другой инструмент отладки Windows, чтобы узнать, какие сообщения передаются программным обеспечением драйвера и апплетом настройки мыши на панели управления. Вы можете использовать функцию Windows API под названием SendMessage() для отправки сообщений в приложение из пользовательского режима.
Ваша первая остановка для разработки драйвера устройства должна быть Windows DDK docs и OSR Online.
Я предлагаю ознакомиться со спецификациями тачпада Synaptics (большинство тачпадов, установленных на ноутбуках, являются синаптиками), доступными здесь http://www.synaptics.com/decaf/utilities/ACF126.pdf Я полагаю, что на странице 18 вы найдете функцию, которую вы ищем. По крайней мере, вы будете знать, чего ожидать.
Таким образом, весьма вероятно, что драйвер сенсорной панели "преобразует" команду, поступающую из пользовательского режима, в эту команду PS/2.
Я не знаю специфики драйвера сенсорной панели PS/2, но вижу два основных способа взаимодействия панели с пользовательским режимом с драйвером: - обновить какой-либо ключ в реестре (это на самом деле очень часто) - драйвер предоставляет альтернативный "канал", который открывает приложение пользовательского режима и записывает конкретные команды
Возможно, вы захотите попробовать использовать монитор процесса из sysinternals для регистрации активности реестра при настройке / сбросе функции. Что касается вариантов 2, вы можете попробовать IRP-трекер из OSR и посмотреть, есть ли какая-то особая связь между панелью и драйвером (в форме или IRP, идущих туда-сюда). В этом случае знание программирования ядра в некоторой степени необходимо. Отладчик ядра Windows также может быть полезен для проверки наличия у драйвера PS/2 альтернативного канала.
Взгляните на IDA Pro - Интерактивный дизассемблер. Это удивительный дизассемблер.
Если вы хотите отлаживать, а не просто перепроектировать, попробуйте PEBrowse Professional Interactive от SmidgeonSoft