|
. |
| Интересное Релизы Статьи Новости RSS |
Новости
В общем, этот движок без поддержки комментариев морально и технически устарел, а дописывать мне его лень. Так что велкам в мой новый блог: the-gr8.cih.ms Он на стороннем ресурсе, чтобы не зависеть от работоспособности сервера cih.ms. Так же производится дублирование на gr8.blog.ru Прощай уютненький gr8.cih.ms! ;( комментарии [N/A]
Наклепал вот небольшой кодес поиска блокировки для PsLoadedModuleList, чтобы синхронизировать обращения к ней. Вообщем сразу предупреждаю, что этот метод тянет разве что на ресерч, потому там одноразовый сплайсинг юзается (на мп системах небезопасно), но все-таки достоен внимания имхо и применим, если юзать единожды при старте системы для легального софта конечно (мы ведь легальный софт пишем?) Метод основан на том, что сплайсится ExAcquireResourceSharedLite/ExAcquireResourceExclusiveLite (Shared на вин2000, на остальных виндах Exclusive) и вызывается MmLockPagableDataSection, которая первым делом как раз вызывает ExAcquireXXXLite с нужным нам параметром ... комментарии [N/A]
Если из драйвера требуется спросить юзера о чем-то или известить о чем-то, совсем не обязательно городить страшные конструкции с пайпами, евентами или LPC. В Windows есть встроенный механизм hard error. Когда происходит что-то, то через вызывается сервис NtRaiseHardError, которая уводится в исполнительную систему ExRaiseHardError, а та отправляет по LPC сообщение процессу, который зарегистрировался как сервер для таких ошибок. Обычно это csrss. Он отображает диалоговое окно, даже с возможностью выбора из фиксированного набора ответов (Yes/No/Abort/Retry/Continue/...)
... комментарии [N/A]
Открыть Exclusive девайсы (которые были созданы с Exclusive=TRUE в IoCreateDevice параметрах), например Video0, можно следующим образом: IopParseDevice игнорирует флаг Exclusive если объект открывается с флагом IO_ATTACH_DEVICE_API. Этот флаг указывает IoAttachDevice. Таким образом, вызвав ZwOpenFile с последним параметром OpenOptions = IO_ATTACH_DEVICE_API, можно обмануть систему и заставить думать, что мы аттачимся к возделенному девайсу и получить hFile хендл на file object. Дальше ObReferenceObjectByHandle, получаем FILE_OBJECT, а из него IoGetRelatedDeviceObject получает DEVICE_OBJECT, который нас интерсует. Sample code: http://www.everfall.com/paste/id.php?qjtq1zgehxep Have fun! комментарии [N/A]
Сделал реализацию критических секций юзермодных под ядро. Полностью совместимо. Можно из ядра делать захват/освобождение критической секции. EnterCriticalSection и LeaveCriticalSection на существующей секции тестил - работают. Создание новой не тестил. Проект: http://code.google.com/p/critsect/ В папке test есть тестовый драйвер, который берет LdrpLoaderLock у explorer.exe и захватывает ее на традцать секунд. Полезно грузить его сразу после старта Windows. Пока истекают эти тридцать секунд можно потыкать в меню Start или правой кнопкой по десктопу. Explorer попытается подгрузить свою либу и повиснет, пока драйвер не освбоодит секцию. Потом explorer продолжит работать как надо. комментарии [N/A]
Написал на коленке мини-тулзу генерировать автоматом хидеры для номеров Native сервисов. Перебирает экспорт ntdll. Исходничек: http://www.everfall.com/paste/id.php?wucqs2cq73to Вывод (на моей системе): http://www.everfall.com/paste/id.php?7v5ikyvrzmrp комментарии [N/A]
Опубликовал некий текст "драйверы режима ядра: с чего начать", который трудно назвать статьей, потому что там нет как таковой технической информации, скорее это руководство к действию. Зато у себя поместил в раздел статей. Да и теперь этот сайтенг будет обновляться. В любом случае спасибо всем, кто оставался с нами, не переключайтесь! =) комментарии [N/A]
Недавно, наконец, раздербанил окончательно протокол DBGKD, по которому общаются WinDbg/i386kd с встроенным отладчиком ядра в Windows по COM порту. Написал даже эмулятор свой, который светит пайп и ждет коннекта. Весело наблюдать, как WinDbg принимает его за "Windows XP 2600" :) В скором времени, если кому интересно, сделаю описание этого протокола со всеми структурами. Вот такие дела. комментарии [N/A]
Вариант поиска KdDebuggerDataBlock (это я все про свой GR8LKD =) Кстати, скоро будет новая версия, возможно, с экспериментальной поддержкой Windows Vista) Если вручную заполнять структуру дампа, то нужен адрес KdDebuggerDataBlock. Раньше я получал его, мягко говоря, через жопу, через экспортируемые символы, оч криво:( Щас нашел одну фишку как найти этот адрес без геморроя. Засмотрелся я что-то на структурку KPCR, именно ту самую, на которую смотрит база сегмента с селектором FS в ядре. Структурка, согласно документации MSDN (а значит поля не поменяются в следующих версиях) имеет следующий вид: ... комментарии [N/A]
Управление памятью в ядре Windows XP Для начала нечто вроде вступления. Статья рассчитана на тех, кто уже работал с памятью в режиме ядра и отличает MmProbeAndLockPages от MmMapLockedPagesSpecifyCache, а так же знаком с основами устройства управления памятью у процессора - каталоги страниц (PDE), таблицы страниц (PTE), исключение ошибки страницы (#PF). Для исправления первого упущения рекомендуется сначала прочитать соответствующие статьи Four-F (http://www.wasm.ru/series.php?sid=9, части 6 и 9), для исправления второго - статьи цикла BrokenSword "Процессор Intel в защищенном режиме" (http://www.wasm.ru/series.php?sid=20, части 6 и 7, кстати, в части 7 есть ошибка в картинке - вместо картинки для PDE 4M страниц представлена картинка для PDE 4K страниц).... комментарии [N/A]
У странички обновился дизайн - спасибо Berkut Еще немного интересного: 1) я почти закончил статью про менеджмент памяти 2) я пишу свой чертов отладчик уже сколько времени.. сегодня пересматривал сорсы. 3) я придумал несколько приват-хек-методов +)) 4) я.. я... Update: Слегка подправил текст странички, чтобы он соответствовал стандарту =) комментарии [N/A]
Я прикрутил теги, сделал нормальные ссылки на разделы и сделал RSS-ленту. Можно посмотреть результат проверки:
Прикольно, да? :) Ссылочки: http://gr8.cih.ms/rss.xml http://gr8.cih.ms/rss.php комментарии [N/A]
Планирую скоро написать статью на эту тему - как происходит вся эта байда с свопом, невалидными PTE и все такое. Пока что пишу примеры для статьи, а именно: функции ручной выгрузки и загрузки страниц в/из свопа. Выгрузка работает, загрузка из свопа - нет +) Что-то я перемудрил. Пойду посплю и завтра на свежую голову допишу примеры и сяду за статью. Ждите к концу недели :) Ориентировочное содержание статьи: Невалидные PTE, проверка памяти: MmIsAddressValid + написание своего аналога, учитывающего специфику невалидных PTE, подкачка - принципы работы и пара примеров работы с файлом подкачки. Всем удачи, ребята, и до новых встреч! комментарии [N/A]
Вот подумал тут - умру я вдруг и останется от меня эта страничка.. Просто у подруги брат умер недавно, смотришь на его страничку в вконтакте.ру и думаешь, что если это и случится, то обязательно не со мной.. а почему? комментарии [N/A]
Вот-с, мне было нечего делать и я написал свою версию оной функции, нужной, когда шило в одном месте засело и очень хочется использовать большие массивы в стеке больше 1 страницы, а с CRT линковать не охота. extern "C" void __cdecl _chkstk() {
__asm { push ebp sub eax, 4 xchg [esp+4], ebp sub esp, eax xchg [esp], ebp mov ebp, esp add ebp, eax mov ebp, [ebp] } } Вот мне делать нечего было.. Зато сенпотично, правда? комментарии [N/A]
Я, такой жутко ленивый, все-таки нашел немного времени и решил обновить движок у своего сайта. Провтыкав несколько часов над Notepad++ с php-кодом, я выдал вот это :) Теперь я здесь буду иногда постить свои новости и наработки в техническом плане. Что-то вроде блога, только про кодинг =) Так что вот. Если очень сильно повезёт, прикручу и комментарии! =)) До скорого. // Great комментарии [N/A]
|
| © / gr8.cih.ms / |
|