12.07.2015 Views

Взлом GSM - Xakep Online

Взлом GSM - Xakep Online

Взлом GSM - Xakep Online

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

codinglinksВот они, устройства в Windows}}}}IoSkipCurrentIrpStackLocation(Irp);returnIoCallDriver(((PDEVICE_EXTENSION)pDeviceObject->DeviceExtension)->top_stack_device,Irp);Вызов IoCallDriver отправит твой модифицированныйIRP-пакет дальше по стеку устройств.Кстати, возникает закономерный вопрос — где нам искатьбуфер, в котором пользователь передает данные?Рассмотрим три варианта. Первый — в буфере самого IRPпакета(так называемый «буферизованный ввод-вывод»);указатель на буфер будет лежать здесь — AssociatedIrp.SystemBuffer.Второй — «прямой ввод-вывод». В IRP-пакете хранитсялишь указатель на кусок ядерной памяти в виде MDL-структуры,где лежат пользовательские данные. В этом случаеищи данные вот здесь — Irp MdlAddress.И, наконец, третий вариант — «ввод-вывод без управления».Это когда диспетчер ввода-вывода помещает вполе DeviceIoControl.Type3InputBuffer структурыIO_STACK_LOCATION указатель на пользовательский входнойбуфер, а в поле UserBuffer IRP-пакета — указатель напользовательский выходной буфер и оставляет драйверувозможность управлять ими самостоятельно.Размещение драйвера-фильтраКуда можно приаттачить созданный нами драйвер-фильтр?По умолчанию вызов IoAttachDeviceToDeviceStack закинетего сразу над фильтруемым девайсом. А если, скажем,требуется разместить фильтр ПОД устройством? Такое тожевозможно! В реестре Windows, в ветке, которая описывает тоили иное устройство, существует возможность определения,куда и какие фильтры подгружать системе при загрузке устройства(более подробно — читай WDK).Перечислим три возможных способа «воткнуть» фильтр:• над PDO; способ не документирован, но реализовать можно;• между PDO и FDO; для этого нужно использовать ключ реестраLowerFilters;• над FDO; для этого используется ключ реестра UpperFilters.Сейчас не будем углубляться в эти дебри. Оставляю экспериментыс фильтрами в качестве домашнего задания.Поговорим о FastIOЧто такое FastIO? Как ты уже понял, в основе взаимодействиямежду устройствами в ядре Windows лежит IRP-пакет. Механизмхоть и надежен, но на самом деле не слишком быстр,ведь ядру приходится тратить много времени на обработкуIRP-пакетов. В тех случаях, когда критична скорость выполнениязапроса, IRP заменяет FastIO — концепция «быстроговвода-вывода», при которой драйвер регистрирует «точкиввода-вывода». К примеру, FastIO используется в драйверахфайловых систем NTFS, FAT, HDFS, CDFS.Использование FastIO в современных операционныхсистемах предполагается в двух случаях. Во-первых, дляобеспечения интеграции с механизмом кэширования данных,в частности при работе с файловой системой. Во-вторых,FastIO, используется для обеспечения работы с файлами,промаппированными (спроецированными) в оперативнуюпамять.Хитрость вместо напутствияМы научились кодить простые фильтры. Они помогут тебепоставить на колени любые устройства в Windows. Единственныйнедостаток устройств-фильтров в ядре — их легкообнаружить. Подскажу одну хитрость. Фильтры можно сделатьневыгружаемыми. Для этого достаточно «забыть» про реализациюфункции выгрузки драйвера.Фильтрация IRP — тема сложная и, к сожалению, ее не раскрытьв пределах одной журнальной статьи. Азы в фильтрациитебе придется изучать самому, а если что непонятно — пиши,будем разбираться вместе! zОбязательно к прочтению:• http://www.wasm.ru/print.php?article=drvw2k15 — статья«Драйверы режимаядра: Часть 15: Жизненныйцикл IRP».• http://www.osronline.com/article.cfm?id=83 — Secrets ofthe Universe Revealed!How NT Handles I/OCompletion.• http://www.osronline.com/article.cfm?article=391— Proper Completion.ResubmittingIRPs from within aCompletion Routine.• http://support.microsoft.com/kb/320275, http://support.microsoft.com/kb/326315— Different ways ofhandling IRPs.dvdНа компакт-дискележат сорцы простогодрайвера-фильтраTCP-трафика вядре Windows, докипо фильтрации вWindows и FastIO, аеще — утилиты дляпросмотра объектовядра Windows— WinObjEx.infoВ пакете WDK (DDK)технология фильтрацииIRP хорошоописана. Не ленисьчитать!xàêåð 07 /115/ 08099

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!