Win32k мэпинг и гуи

Тема в разделе "WASM.NT.KERNEL", создана пользователем Velheart, 10 апр 2011.

  1. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    привет, блин, короче такая фигня: твердо помню, что есть какая-то засада с мэппингом win32k на память вроде как процессов без гуи потоков.., точно с таким сталкивался пару лет назад, гугл молчит, сокровенные знания забыты =), а нужно из DriverEntry прочитать память Win32k.sys, кто-нить помнит в чем там дело и как побороть?
     
  2. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    соре, отбой, все вспомнил, выпил лишнего и развел панику =)
     
  3. Indyz

    Indyz New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2011
    Сообщения:
    7
    Аттач к сессион спейс. Какже есчо. Функи из калбеков шадова(Win32Callouts) вытягиваются элементарно.
     
  4. JivotnoE

    JivotnoE New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2009
    Сообщения:
    10
    csrss.exe, только смотри что их несколько, тебе нужно найти свой
     
  5. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Поведайте нам, интересно ведь
     
  6. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Ну так а все уже же написали, только после конвертации в гуи процесс, в ап процесса мапится соответствующий session space, тут и тут вроде нормально описано.
     
  7. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Ересь какаято, никуда оно не мапится.

    Никаких проблем для чтения session space нет, любой процесс находится в той или иной сессии, кроме system и smss, у них нет session space, в таких случаях достучаться до нее можно через MiAttachSession, как уже написал клерк.
     
  8. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Извиняюсь за дизинформацию =), почему-то всегда казалось, что маппинг win32k.sys связан именно с гуишностью процесса.
     
  9. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Связан разве что косвенно, т.к. при конвертации потока в gui-шный вызываются коллауты, добавляющие поток/процесс в списки win32k.sys, вот тут можно почитать кое-какую инфу об этом: http://kitrap08.blogspot.com/2011/03/blog-post.html
     
  10. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Ага, сенкс, я уже и прочитал, я кстати и подозревал что, что-то не то, перед тем как написать просмотрел ядро в иде, врк, а там не в _KiBBTUnexpectedRange, не в PsConvertToGuiThread нету никакого мапинга, а они ж напрямую из _KiFastCallEntry дергаются, когда индекс большой, вот только то, что из PsConvertToGuiThread уже win32k дергается, меня почему-то не смутило и я подумал, что просто где-то что-то упустил =)
     
  11. f34534

    f34534 New Member

    Публикаций:
    0
    Регистрация:
    21 апр 2011
    Сообщения:
    4
    TSS
    [offtop]Ну по сабжу уже всё сказано. Немного заофтопим. Тут обнаружилась интересная тема в инетах "К вопросу о поиске неэкспортируемых символов". В частности "приводит к проблеме отделения кода от данных ( не решаемой в общем случае статическим анализом ).". Так вот поправлю - задача решается в любом случае. Трудно найти используемую Case-ветвлением(это условное ветвление, где условие определяет регистр(ага, не только регистр флагов может определять выбираемую ветвь) и в зависимости от него выбирается из массива определённая ветвь(тоесть участок графа на который имеются ссылки в ветвлениях)) часть массива, а не сам массив. Только в этом случае задача в общем не решаема(без виртуализации, тоесть исполнения или полноценного анализа, который есчо не реализован приемлимым образом). Для примера можите рассмотреть NtUserCall*, использующие один массив, но разные его часть - поиск массива прост, тоесть отделение данных от кода, но для определения частей используемых каждой функцией нужен синтаксический анализ кода. Для не Case-ветвлений, а простых данных отделение их от кода весьма просто.[/offtop]
     
  12. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    f34534
    Возможно, но я говорил про общий случай. К примеру, высокоуровневый seh может быть представлен ввиде куска scopetable внутри ф-ции, тогда в графе этот кусок будет отсутствовать, причем даже трейсером его можно пропустить, если исключения не было. Тут нужно полное покрытие чтобы такие случаи ловить, то бишь динамический анализ с откатом состояний.