Great'est homepage .

Новости

Новый блог на blogspot.com
/ 03 Jan 10 16:45:06 /
тэги: blogspot

В общем, этот движок без поддержки комментариев морально и технически устарел, а дописывать мне его лень.
Так что велкам в мой новый блог: the-gr8.cih.ms
Он на стороннем ресурсе, чтобы не зависеть от работоспособности сервера cih.ms.
Так же производится дублирование на gr8.blog.ru
Прощай уютненький gr8.cih.ms! ;(
комментарии [N/A]


Поиск блокировки PsLoadedModuleList
/ 30 Apr 09 07:41:34 /
тэги: PsLoadedModuleList, PsLoadedModuleResource, ring0, kernel

Наклепал вот небольшой кодес поиска блокировки для PsLoadedModuleList, чтобы синхронизировать обращения к ней.

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

Метод основан на том, что сплайсится ExAcquireResourceSharedLite/ExAcquireResourceExclusiveLite (Shared на вин2000, на остальных виндах Exclusive) и вызывается MmLockPagableDataSection, которая первым делом как раз вызывает ExAcquireXXXLite с нужным нам параметром
...
комментарии [N/A]


Интерактив в драйвере
/ 30 Apr 09 09:14:06 /
тэги: windows, harderror, drivers, ring0

Если из драйвера требуется спросить юзера о чем-то или известить о чем-то, совсем не обязательно городить страшные конструкции с пайпами, евентами или LPC.
В Windows есть встроенный механизм hard error. Когда происходит что-то, то через вызывается сервис NtRaiseHardError, которая уводится в исполнительную систему ExRaiseHardError, а та отправляет по LPC сообщение процессу, который зарегистрировался как сервер для таких ошибок. Обычно это csrss. Он отображает диалоговое окно, даже с возможностью выбора из фиксированного набора ответов (Yes/No/Abort/Retry/Continue/...)

...
комментарии [N/A]


Открытие Exclusive девайсов
/ 12 Dec 08 08:30:10 /
тэги: device, object, ring0

Открыть 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]


Critical Sections for kernel mode drivers
/ 28 Nov 08 05:08:46 /
тэги: critsect, ring0, kernel mode

Сделал реализацию критических секций юзермодных под ядро. Полностью совместимо.
Можно из ядра делать захват/освобождение критической секции.

EnterCriticalSection и LeaveCriticalSection на существующей секции тестил - работают.
Создание новой не тестил.

Проект: http://code.google.com/p/critsect/

В папке test есть тестовый драйвер, который берет LdrpLoaderLock у explorer.exe и захватывает ее на традцать секунд. Полезно грузить его сразу после старта Windows.
Пока истекают эти тридцать секунд можно потыкать в меню Start или правой кнопкой по десктопу. Explorer попытается подгрузить свою либу и повиснет, пока драйвер не освбоодит секцию. Потом explorer продолжит работать как надо.
комментарии [N/A]


Syscall Generator
/ 27 Nov 08 23:25:35 /
тэги: syscall, native, ntdll, sdt

Написал на коленке мини-тулзу генерировать автоматом хидеры для номеров Native сервисов.
Перебирает экспорт ntdll.

Исходничек: http://www.everfall.com/paste/id.php?wucqs2cq73to
Вывод (на моей системе): http://www.everfall.com/paste/id.php?7v5ikyvrzmrp
комментарии [N/A]


Драйверы режима ядра: с чего начать
/ 14 Nov 08 19:23:17 /
тэги: ring0, kernel mode, драйвера

Опубликовал некий текст "драйверы режима ядра: с чего начать", который трудно назвать статьей, потому что там нет как таковой технической информации, скорее это руководство к действию. Зато у себя поместил в раздел статей.
Да и теперь этот сайтенг будет обновляться. В любом случае спасибо всем, кто оставался с нами, не переключайтесь! =)
комментарии [N/A]


Протокол DBGKD
/ 11 Apr 08 09:07:25 /
тэги: dbgkd, kd, windbg, kernel mode, ring0, debugging

Недавно, наконец, раздербанил окончательно протокол DBGKD, по которому общаются WinDbg/i386kd с встроенным отладчиком ядра в Windows по COM порту.
Написал даже эмулятор свой, который светит пайп и ждет коннекта. Весело наблюдать, как WinDbg принимает его за "Windows XP 2600" :)
В скором времени, если кому интересно, сделаю описание этого протокола со всеми структурами. Вот такие дела.
комментарии [N/A]


KdVersionBlock
/ 11 Apr 08 09:07:34 /
тэги: KPCR, ring0, Kernel Mode, Windows, gr8lkd, KdVersionBlock, KdDebuggerDataBlock

Вариант поиска KdDebuggerDataBlock (это я все про свой GR8LKD =) Кстати, скоро будет новая версия, возможно, с экспериментальной поддержкой Windows Vista)
Если вручную заполнять структуру дампа, то нужен адрес KdDebuggerDataBlock. Раньше я получал его, мягко говоря, через жопу, через экспортируемые символы, оч криво:(
Щас нашел одну фишку как найти этот адрес без геморроя.
Засмотрелся я что-то на структурку KPCR, именно ту самую, на которую смотрит база сегмента с селектором FS в ядре.
Структурка, согласно документации MSDN (а значит поля не поменяются в следующих версиях) имеет следующий вид:
...
комментарии [N/A]


Управление памятью в ядре Windows XP
/ 11 Apr 08 09:07:33 /
тэги: Memory Management, Kernel Mode, Windows, Win32, ring0, статьи

Управление памятью в ядре 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]


Обновился дизайн
/ 11 Apr 08 09:07:31 /
тэги: сайт, дизайн

У странички обновился дизайн - спасибо Berkut

Еще немного интересного:
1) я почти закончил статью про менеджмент памяти
2) я пишу свой чертов отладчик уже сколько времени.. сегодня пересматривал сорсы.
3) я придумал несколько приват-хек-методов +))
4) я.. я...

Update: Слегка подправил текст странички, чтобы он соответствовал стандарту =)
bbimage
комментарии [N/A]


Обновление сайта
/ 11 Apr 08 09:07:30 /
тэги: сайт, rss, теги

Я прикрутил теги, сделал нормальные ссылки на разделы и сделал RSS-ленту. Можно посмотреть результат проверки:
bbimage
Прикольно, да? :)

Ссылочки: http://gr8.cih.ms/rss.xml http://gr8.cih.ms/rss.php
комментарии [N/A]


Управление памятью в Kernel Mode
/ 11 Apr 08 09:07:29 /
тэги: Kernel Mode, Memory Management, память, ring0, Windows

Планирую скоро написать статью на эту тему - как происходит вся эта байда с свопом, невалидными PTE и все такое.
Пока что пишу примеры для статьи, а именно: функции ручной выгрузки и загрузки страниц в/из свопа.
Выгрузка работает, загрузка из свопа - нет +)
Что-то я перемудрил. Пойду посплю и завтра на свежую голову допишу примеры и сяду за статью. Ждите к концу недели :)
Ориентировочное содержание статьи: Невалидные PTE, проверка памяти: MmIsAddressValid + написание своего аналога, учитывающего специфику невалидных PTE, подкачка - принципы работы и пара примеров работы с файлом подкачки.
Всем удачи, ребята, и до новых встреч!
комментарии [N/A]


Цифровая память
/ 11 Apr 08 09:07:28 /
тэги: мысли какие-то

Вот подумал тут - умру я вдруг и останется от меня эта страничка.. Просто у подруги брат умер недавно, смотришь на его страничку в вконтакте.ру и думаешь, что если это и случится, то обязательно не со мной.. а почему?
комментарии [N/A]


__chkstk
/ 11 Apr 08 09:07:27 /
тэги: __chkstk, Win32

Вот-с, мне было нечего делать и я написал свою версию оной функции, нужной, когда шило в одном месте засело и очень хочется использовать большие массивы в стеке больше 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]


Сайт обновился
/ 11 Apr 08 09:07:26 /
тэги: сайт


Я, такой жутко ленивый, все-таки нашел немного времени и решил обновить движок у своего сайта. Провтыкав несколько часов над Notepad++ с php-кодом, я выдал вот это :)
Теперь я здесь буду иногда постить свои новости и наработки в техническом плане. Что-то вроде блога, только про кодинг =)
Так что вот. Если очень сильно повезёт, прикручу и комментарии! =))
До скорого.
// Great
комментарии [N/A]


            счетчик посещений
© / gr8.cih.ms / cih.ms community