Как можно подделать идентификатор производителя USB и значения идентификатора продукта в OSX? - PullRequest
4 голосов
/ 29 апреля 2011

Мы рассматриваем возможность использования поставщика и идентификатора продукта устройства USB (полученного с помощью IOKit) для разблокировки определенных функций приложения. Я знаю, что эти значения могут быть подделаны, но я не уверен, насколько легко это можно сделать в OSX. Что входит в подделку поставщика и идентификатора продукта? Это что-то, что непрограммист может сделать довольно легко?

Ответы [ 5 ]

2 голосов
/ 02 мая 2011

Я подозреваю, что было бы довольно легко (для программиста) создать kext, который создает достаточно реалистичный объект IOUSBDevice в пространстве ядра.Однако, как только это будет сделано, любой сможет загрузить его.

Также возможно создать безкодовый кекст с помощью AppleUSBMergeNub для маскировки устройства под другое (хотя я не проверял это, похоже, чтоработать, предполагая, что вы только пытаетесь сопоставить IOUSBDevice без фактического его использования).

Вероятно, было бы проще просто перехватить ваши вызовы API в пользовательском пространстве и дать вашему программному обеспечению ответы, которые он ожидает.

1 голос
/ 27 августа 2013

Это на самом деле довольно легко, и я определенно не программист!

нашел руководство здесь http://rolande.wordpress.com/2012/10/25/getting-the-aten-usb-serial-adapter-working-with-mac-osx-lion

Спасибо, Роланд!

Мне удалось изменить идентификаторы USB-адаптера Ethernet, который я купил на eBay, чтобы использовать другой драйвер с Mac OS X 10.8.

1 голос
/ 03 мая 2011

Непрограммист не может этого сделать. Что вы можете сделать, так это написать расширение ядра (драйвер IOKit) для устройства, которое имеет соответствующий словарь, совпадающий с real vendor- / product-ID устройства, который заставляет систему автоматически загружать расширение ядра, когда это устройство подключено и передается ссылка на объект устройства. Теперь драйвер отвечает за инициализацию устройства и создает всю необходимую информацию о пространстве пользователя, необходимую для взаимодействия инфраструктуры IOKit (библиотеки пространства пользователя) с устройством. Обычно Apple имеет драйверы IOKit по умолчанию для большинства классов USB-устройств (поэтому вам не нужен дополнительный драйвер для каждой USB-мыши или клавиатуры, например), но если найден более конкретный драйвер, вместо него будет использоваться этот драйвер. И при создании данных пространства пользователя, конечно, драйвер может лежать относительно идентификатора поставщика / продукта, в результате чего программа пространства пользователя видит ложные значения. Поскольку IOKit написан на C ++ и сильно зависит от объектов и наследования объектов, нет необходимости даже писать драйвер с нуля, но вместо этого он может наследовать от драйвера Apple по умолчанию и просто переопределять некоторые методы и в противном случае полагаться на супер реализацию. Однако написание драйверов для ядра IOKit не так просто, и даже люди, разрабатывающие программное обеспечение для Mac в течение многих лет, могут не знать, как это сделать, и документация по IOKit - одна из худших, которые предлагает Apple.

Итак, чтобы ответить на ваш вопрос: возможно ли это? Да. Это довольно легко? Нет. Могут ли непрограммисты это сделать? Конечно, нет, если кто-то еще не написал готовое расширение для них, которое им нужно только установить.

0 голосов
/ 17 мая 2011

Я могу создать OCX в коде Delphi, чтобы сделать это И предоставьте информацию для отправки / получения данных на USB с другими состояниями как: - это все еще связано.

Natraly Мне нужно немного больше деталей, чем в случае, если тот же чип подключен от другого продукта. пример названия, описание устройства .............

0 голосов
/ 02 мая 2011

Поскольку до сих пор никто не ответил, я наткнулся на страницу , которая в основном говорит, что вы можете получить Arduino и запрограммировать его на возврат любого VID / PID / серийного номера, который вы хотите.Я до сих пор не могу найти какой-либо программный способ сделать это.

...