Доброго дня. Есть дайвер. Через IDA PRO "удалось" его проанализировать. (IDA PRO юзаю первый раз в жизни). Во вкладке Strings вывело кучу строк - приятно было увидеть там нечто типо +IOCTL_CAM..., -IOCTL_CAM... ну и много чего еще) Ищу я как раз IOCTLки. Но никак не могу вытащить данные. просто видимо тупо не понимаю. заголовочного файла к ним я не нашел, хотя вроде это и MSовский драйвер. Проблема еще в том, что это все под Windows Mobile и на ARM процессоре. Посему: вопрос, как можно изъять эти IOCTLки-наверное через чур идиотский, но тем не менее, как делали вы, или делали бы?
Проанализировать функцию, адрес которой пишется в DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL].
извиняюсь конечно, но я ничего не понял) точнее может не правильно понял) вопщем подать запрос через DeviceIoControl с кодом IRP_MJ_DEVICE_CONTROL? вот только у меня и IRP_MJ_DEVICE_CONTROL нигде в заголовках нет. DDK наверное нада скачать ?)
Драйвер регистрирует callback-функции в передаваемой ему структуре DRIVER_OBJECT в массиве MajorFunction в ней. Эти функции будут вызываться при обращении к какому-либо устройству этого драйвера. Например, при CreateFile вызывается обработчик по индексу IRP_MJ_CREATE. А при DeviceIoControl вызывается обработчик IRP_MJ_DEVICE_CONTROL. Посмотри, какими указателям заполняются эти поля. И анализируй эти обработчики в иде. Разумеется, тебе нужен DDK и вообще познания о том, как работают драйвера.
хм. походу это не относится к WinCE, т.к там нет как таковых драйверов... впрочим, сейчас подробней погружусь
Ок. а если предположить, что речь в первом посте шла не о драйвере, как таковом, а о обычной dll и эти IOCTL - просто какие нить константы?
Зависит от того, как эти константы в длл используются. В любом случае, анализировать код ф-ий, которые отвечают за обработку. ida pro + hexrays
А можно как нить отладить этот "драйвер". Конкретно: поставить брекпоинт на месте, которое как я думаю возвращает значение константы и ждать пока дойдет до этого места исполнение? чувствую я что нельзя наверно)
Как?) может можно открыть файл прямо на кпк ? или мне здесь наверное бесполезно спрашивать про кпк?))
Поставить брейпойнт можно, если установить отладчика режима ядра. Если я правильно понимаю, то чтобы узнать IOCTL, хватит иды. Исследовал некоторое время назад один "driver crackme", так хватило одной иды и ольки. В прочем может я не прав.