Перехватывание сообщения ОС/аппаратных средств / инженерный анализ драйверов

Это - в принципе объективный вопрос (считайте количество пакетов доступным там), но трудный ответить из-за отсутствия соответствующих цифр.

При подсчете только пакетов, которые идут с распределением, то таблица в Википедии (благодаря enzotib для ссылки) дает ответ. Или скорее это идет некоторым путем к ответу: различные дистрибутивы разбивают пакеты по-разному. Например, SuSE склоняется не к монолитным пакетам, таким образом, он имеет едва больше двоичных пакетов, чем исходные пакеты. Debian, который обычно разделяет что-либо, что может иногда устанавливаться отдельно, имеет о том же количестве исходных пакетов, но дважды как больше двоичных пакетов. В целом, большинство главных дистрибутивов Linux (Ubuntu, Debian, Дуга Linux включая АУР, OpenSuSE, Fedora, Mandriva) имеет подобную сумму программного обеспечения.

Существует больше различия при подсчете сторонних репозиториев и двоичных пакетов обеспеченными непосредственно поставщиками. Проще говоря, больше пользователей, которых распределение имеет, больше людей, склонно сделать пакеты для него. У меня нет трудных чисел, но я подозреваю, что Ubuntu является победителем здесь, и из-за ее большого количества пользовательских репозиториев ¹ и из-за широко распространенной поддержки (из-за популярности Ubuntu). Для программного обеспечения предприятия Red Hat является также сильным соперником.

¹ Персональные архивы пакета (PPA) — точка входа для пользователей, точка входа для разработчиков.

4
15.12.2018, 19:03
1 ответ

Существует, конечно, много возможностей.

Например, если это - USB-устройство, Вы могли бы контролировать трафик USB между устройством/вычислять в системе с поддержкой драйвера (аналогичный tcpdump для сети). Например, для Windows существует несколько доступных инструментов монитора USB (IIRC usbsnoop, например).

В случае сканера USB Вы могли, например, генерировать трассировку с настройками по умолчанию, затем изменять настройки, генерировать другую трассировку, сравнивать их и выяснять то, что изменилось и так далее.

Аналогичный этому Вы могли проследить материал для SCSI, Firewire и т.д. устройства.

Затем Вы могли попробовать к dis-assemble/debug собственный драйвер (например, с про IDA).

Или Вы могли выполнить Windows в виртуальной машине или эмуляторе (например, qemu) и использовать точки останова и осмотреть аппаратное состояние перед/после того, как вызовами драйвера. Аналогичный этому Вы могли наблюдать к тому, какие регистры или что-то как этот драйвер пишет/читает.

3
27.01.2020, 20:59

Теги

Похожие вопросы