Сейчас на форуме: rmn, Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+4 невидимых)

 eXeL@B —› Программирование —› Код функции в Ring 0
Посл.ответ Сообщение

Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 мая 2008 23:36
· Личное сообщение · #1

Доброго времени суток !

Система Windows Pro SP2 версия 5.1.2600
Инструмент: SoftIce 4.05
Можно трейсить через шлюз (sysenter). Но "образы" возникают не сразу, а могут и наоборот. Т.е., если
надо найти, к примеру, место в коде, где происходит отрисовка окна (ShowWindow - изнутри под Ring 0),
то не всё так просто получается. По sysenter проходишь через шлюз - попадаешь в _KiSystemService, затем
двигаешь в сторону call ebx. Её по F10 проходишь, окно не рисуется, хотя должно. Таким образом,
задача в следующем: узнать адрес начала отрисовки окна и, что более важно как можно побороть неясность
с SoftIce. Быть может когда находишься в Ring 0 действия не всегда происходят "в реальном времени" ?
Естественно пути ведут к драйверу win32k.sys. Вход для ShowWindow BF82FECFh.




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 03 мая 2008 00:11
· Личное сообщение · #2

Arounder - там не всё так просто. win32k.sys это под-система win32. Потом, если я не ошибаюсь, пойдёшь в GDI, а потом в видео драйвер. Дело в том, что этой кухни очень много и не всё вызывается на прямую.

Про ShowWindow - тут вообще происходит window invalidate, и послдедуующий WM_PAINT.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 03 мая 2008 07:30
· Личное сообщение · #3

если вы про работу системы win32k
то лучше книгу почитать
Yuan F.Windows graphics programming.Win32 GDI and DirectDraw.2000.chm
в двух словах
всё рисуеться в видео драйвере
а данные беруться из процессов win32k
сами функции типа всяких LineTo ничего сразу не рисуют они рисуют по буфферу в win32k процессах на каждое окно

PS: это в двух словах
если не в двух то какие то моменты могу расширить
как пример можете посмотреть код ReactOS и DDK насчет видео системы



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 03 мая 2008 16:31
· Личное сообщение · #4

Задача на первый взгляд проста (как может показаться ! )
Добавить кода к месту в коде отрисовки окна, чтобы получить прозрачность контуров окна - что-то похожее на Vista. Без всяких блиндов и т.п. Такая связка, будучи правильно сделана исключит всевозможные глюки и тормоза системы. Да и вообще - интересно покопаться, подумать на эту тему.



Ранг: 14.0 (новичок)
Активность: 0=0
Статус: Участник

Создано: 10 мая 2008 22:41
· Личное сообщение · #5

>>Её по F10 проходишь, окно не рисуется, хотя должно.
как я помню окно рисуется не там, а обработчиком сообщений WM_NCPAINT / WM_PAINT




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 11 мая 2008 18:07
· Личное сообщение · #6

BitBlt


 eXeL@B —› Программирование —› Код функции в Ring 0
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати