ПереZагруZка
От: kero Россия  
Дата: 12.12.09 05:18
Оценка: 110 (11)
Дело было на XP...
На днях прикидывал пути решения регулярной на форумах задачки: скрытный (в смысле — окна скрыты) запуск приложения.
И один из вариантов с WH_CBT преподнес сюрприз, отмеченный мнемоникой в заголовке.

Суть в том, что совершенно легальные действия по изменению Z-order
после нажатия стандартного сочетания Win+D или соответствующей кнопки на Quick Launch
приводят к немедленной перезагрузке с извещением о серьезной ошибке...

В аттаче — минимальный рабочий пример (+ исходник): обычный шаблон создания простого окна,
только перед вызовом CreateWindowEx — в своем потоке ставим хук WH_CBT,
на HCBT_CREATEWND устанавливаем наше окно в самый низ Z-order, и затем хук снимаем. Вот и все.
Полученное окно спрятано за "рабочий стол", поэтому на таскбаре оставлена кнопка, контроля ради.

Ну, и теперь — Win+D !

P.S.
Проверил только на XP-pro-sp2, и, конечно, очень интересует, как там на других WinOS? Не поленитесь, дайте знать.

http://files.rsdn.ru/42164/4_win+d.zip
.
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re: ПереZагруZка
От: kero Россия  
Дата: 12.12.09 07:54
Оценка:
Добрые люди подтвердили БСОД для
Win7x64
Win7 x32 RC1 7100
Vista SP2 x86
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[2]: ПереZагруZка
От: x64 Россия http://x64blog.name
Дата: 12.12.09 09:00
Оценка: 6 (1) +1
Проверил, воспроизводится на всех системах (кроме может быть NT4). Падение в Win32k.sys, значит опять в оконной подсистеме что-то неладно. Надо бы баг им запостить.
JID: x64j@jabber.ru
Re[3]: ПереZагруZка
От: kero Россия  
Дата: 13.12.09 10:44
Оценка:
Здравствуйте, x64, Вы писали:

x64>Проверил, воспроизводится на всех системах (кроме может быть NT4).


Спасибо!

x64>Падение в Win32k.sys, значит опять в оконной подсистеме что-то неладно.

x64>Надо бы баг им запостить.

Да как-то не получилось найти вменяемый feedback, или просто я такой тупой...
Раз за разом что-то там не распознают в js моего IE — и привет.
(Отправлять же прямо с компа из-под сообщения об ошибке что-то не хочется).
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[4]: ПереZагруZка
От: x64 Россия http://x64blog.name
Дата: 13.12.09 11:33
Оценка:
K>(Отправлять же прямо с компа из-под сообщения об ошибке что-то не хочется).

Самый простой способ и не вижу тут ничего такого. Поставь kernel memory dump и будет тебе щастье, всего-то метров 200.
JID: x64j@jabber.ru
Re: ПереZагруZка
От: ononim  
Дата: 13.12.09 13:27
Оценка: 4 (1)
K>Ну, и теперь — Win+D !
K>P.S.
K>Проверил только на XP-pro-sp2, и, конечно, очень интересует, как там на других WinOS? Не поленитесь, дайте знать.

да коряво у них там все с хуками, я уже находил другой баг там: http://bugtraq.ru/rsn/archive/2008/11/01.html
но он на моей win2k3 уже не воспроизводится, пофиксили когдато с апдейтами
Как много веселых ребят, и все делают велосипед...
Re: ПереZагруZка
От: Pavel Dvorkin Россия  
Дата: 14.12.09 13:41
Оценка:
Здравствуйте, kero, Вы писали:

K>Проверил только на XP-pro-sp2, и, конечно, очень интересует, как там на других WinOS? Не поленитесь, дайте знать.


Windows 7 Professional Eng 64 bit BSOD
With best regards
Pavel Dvorkin
Re: ПереZагруZка
От: sll  
Дата: 14.12.09 14:34
Оценка:
Здравствуйте, kero, Вы писали:

K>Дело было на XP...

K>На днях прикидывал пути решения регулярной на форумах задачки: скрытный (в смысле — окна скрыты) запуск приложения.
K>И один из вариантов с WH_CBT преподнес сюрприз, отмеченный мнемоникой в заголовке.

K>Суть в том, что совершенно легальные действия по изменению Z-order

K>после нажатия стандартного сочетания Win+D или соответствующей кнопки на Quick Launch
K>приводят к немедленной перезагрузке с извещением о серьезной ошибке...

K>В аттаче — минимальный рабочий пример (+ исходник): обычный шаблон создания простого окна,

K>только перед вызовом CreateWindowEx — в своем потоке ставим хук WH_CBT,
K>на HCBT_CREATEWND устанавливаем наше окно в самый низ Z-order, и затем хук снимаем. Вот и все.
K>Полученное окно спрятано за "рабочий стол", поэтому на таскбаре оставлена кнопка, контроля ради.

K>Ну, и теперь — Win+D !


K>P.S.

K>Проверил только на XP-pro-sp2, и, конечно, очень интересует, как там на других WinOS? Не поленитесь, дайте знать.

K>http://files.rsdn.ru/42164/4_win+d.zip


+W7 x64.
Re[5]: ПереZагруZка
От: kero Россия  
Дата: 14.12.09 16:45
Оценка:
Здравствуйте, x64, Вы писали:

K>>(Отправлять же прямо с компа из-под сообщения об ошибке что-то не хочется).


x64>Самый простой способ и не вижу тут ничего такого. Поставь kernel memory dump и будет тебе щастье, всего-то метров 200.


Но в данном-то случае — какой вообще смысл отсылать что-либо сверх моей демки? компы-то у них, поди, есть?
Однако в конце-концов осенило: вспомнил свои багрепорты по Process Explorer и просто написал в блог Марку Русиновичу.
Он очень быстро ответил, переслал ему, что он попросил, ждем продолжения
.
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[2]: ПереZагруZка
От: kero Россия  
Дата: 14.12.09 16:59
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Windows 7 Professional Eng 64 bit BSOD


Здравствуйте, sll, Вы писали:

S>+W7 x64.


Спасибо за отклик!
Да, мрачно-занятная складывается картинка ...
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[6]: ПереZагруZка
От: x64 Россия http://x64blog.name
Дата: 14.12.09 17:38
Оценка: :)
K>...написал в блог Марку Русиновичу.
K>Он очень быстро ответил, переслал ему, что он попросил, ждем продолжения

*Запаслись попкорном*
Ссылку дал бы сюда что ли.
JID: x64j@jabber.ru
Re[7]: ПереZагруZка
От: kero Россия  
Дата: 14.12.09 17:53
Оценка:
Здравствуйте, x64, Вы писали:

K>>...написал в блог Марку Русиновичу.

K>>Он очень быстро ответил, переслал ему, что он попросил, ждем продолжения

x64>*Запаслись попкорном*

x64>Ссылку дал бы сюда что ли.

http://blogs.technet.com/mark_russinovich (пишет он замечательно интересно),

там в верху слева — http://blogs.technet.com/mark_russinovich/contact.aspx, туда и запостил.
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re: ПереZагруZка
От: ononim  
Дата: 14.12.09 19:30
Оценка: 19 (2) :))
K>P.S.
K>Проверил только на XP-pro-sp2, и, конечно, очень интересует, как там на других WinOS? Не поленитесь, дайте знать.
K>http://files.rsdn.ru/42164/4_win+d.zip
смеха ради запустил на win'95 (помните такую? ) и... http://img96.imageshack.us/img96/7245/w95bsod.png
что характерно — Win+D не потребовался (да и нету его там)
Как много веселых ребят, и все делают велосипед...
Re[2]: ПереZагруZка
От: std.denis Россия  
Дата: 14.12.09 19:47
Оценка:
O>смеха ради запустил на win'95 (помните такую? ) и... http://img96.imageshack.us/img96/7245/w95bsod.png
O>что характерно — Win+D не потребовался (да и нету его там)
надо бы тогда еще на Wine проверить
Re[2]: ПереZагруZка
От: kero Россия  
Дата: 14.12.09 21:20
Оценка:
Здравствуйте, ononim, Вы писали:

K>>http://files.rsdn.ru/42164/4_win+d.zip

O>смеха ради запустил на win'95 (помните такую? ) и... http://img96.imageshack.us/img96/7245/w95bsod.png
O>что характерно — Win+D не потребовался (да и нету его там)

А знаете — за это сообщение вам отдельное спасибо, кроме шуток. Еще бы узнать про Win98 (не виртуалку)...
Хотелось бы проверить предположение, что организация Z-order с тех пор не менялась.
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[3]: ПереZагруZка
От: kero Россия  
Дата: 14.12.09 21:28
Оценка:
Здравствуйте, std.denis, Вы писали:

SD>надо бы тогда еще на Wine проверить


Сам Wine не имею, но судя по сообщениям на RSDN — винды там сымитированы довольно халтурно. Помнится, и Z-order у них не такой, и EditBox — однобуферный.... Так что можно и не проверять
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[4]: ПереZагруZка
От: kero Россия  
Дата: 14.12.09 21:55
Оценка:
Только что сообщили, что
Windows 7 Build 7600 x86 окно под "рабочий стол" загнать не позволяет и бсода нет.
Нет ли у кого таких же виндов, — проверить, может и от машины зависит?
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[5]: ПереZагруZка
От: x64 Россия http://x64blog.name
Дата: 15.12.09 01:48
Оценка:
K>Windows 7 Build 7600 x86 окно под "рабочий стол" загнать не позволяет и бсода нет.
K>Нет ли у кого таких же виндов, — проверить, может и от машины зависит?

Есть падение, именно на этой системе, виртуалка VirtualBox 3.1.0. А зависит скорее не от машины, а от набора установленного софта, типа всяких там "менеджеров окон" и т.п.
JID: x64j@jabber.ru
Re[6]: ПереZагруZка
От: kero Россия  
Дата: 15.12.09 05:55
Оценка:
Здравствуйте, x64, Вы писали:

K>>Windows 7 Build 7600 x86 окно под "рабочий стол" загнать не позволяет и бсода нет.

K>>Нет ли у кого таких же виндов, — проверить, может и от машины зависит?

x64>Есть падение, именно на этой системе, виртуалка VirtualBox 3.1.0. А зависит скорее не от машины, а от набора установленного софта, типа всяких там "менеджеров окон" и т.п.


А кстати, судя по тому же сообщения о Windows 7 Build 7600 x86 от Derek —
(http://www.wasm.ru/forum/viewtopic.php?id=35657, сообщение #21) —
на виртуалке валится вообще все подряд...
А Windows 7 Build 7600 x86 у него — "physical host"...
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[7]: ПереZагруZка
От: kero Россия  
Дата: 15.12.09 07:04
Оценка: 6 (1)
Здравствуйте, kero, Вы писали:

K>А кстати, судя по тому же сообщения о Windows 7 Build 7600 x86 от Derek -

K>(http://www.wasm.ru/forum/viewtopic.php?id=35657, сообщение #21) -
K>на виртуалке валится вообще все подряд...
K>А Windows 7 Build 7600 x86 у него — "physical host"...

По тому же адресу — http://www.wasm.ru/forum/viewtopic.php?id=35657 — появилась очень интересная заметка (сообщения #24 и #25) от Sol_Ksacap.
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re: ПереZагруZка
От: kero Россия  
Дата: 15.12.09 15:38
Оценка:
K>http://files.rsdn.ru/42164/4_win+d.zip

Еще две совсем короткие демки Z_бага (назовем его так ), обе на MessageBox-е.
Различаются вроде бы незначительно, однако результаты вполне могут расходиться.

1) http://files.rsdn.ru/42164/4_win+d_(mb).zip

.data
 _wnd  db "wnd",0
.data?
 hhook dd ?
.code

HookProc proc uses ebx edi nCode:UINT,wParam:WPARAM,lParam:LPARAM
  .if nCode==HCBT_CREATEWND
    mov ebx,lParam
    assume ebx:PTR CBT_CREATEWND
    mov edi,[ebx].lpcs
    assume edi:PTR CREATESTRUCT
    .if [edi].lpszClass==WC_DIALOG
      invoke GetDesktopWindow
      mov edx,eax
      invoke GetWindow,eax,GW_CHILD
      invoke GetWindow,eax,GW_HWNDLAST ; (Progman)
      invoke GetWindow,eax,GW_CHILD    ; (SHELLDLL_DefView)
      mov [ebx].hWndInsertAfter,eax
    .endif
    assume edi:nothing
    assume ebx:nothing   
    xor eax,eax  
  .else
    invoke CallNextHookEx,hhook,nCode,wParam,lParam
  .endif
  ret
HookProc endp

start:
  invoke GetModuleHandle,0
  invoke SetWindowsHookEx,WH_CBT,offset HookProc,eax,0
  mov hhook,eax
  invoke MessageBox,0,offset _wnd,offset _wnd,0
  invoke UnhookWindowsHookEx,hhook
  invoke ExitProcess,eax
end start


2) http://files.rsdn.ru/42164/4_win+d_(mb_enum).zip

.data
 _wnd  db "wnd",0
.data?
 hhook dd ?
.code

EnCh proc hWnd:HWND,lParam:LPARAM
  mov edx,lParam
  mov eax,hWnd
  mov dword ptr[edx],eax
  ret
EnCh endp

HookProc proc uses ebx edi nCode:UINT,wParam:WPARAM,lParam:LPARAM
  local var:DWORD
  .if nCode==HCBT_CREATEWND
    mov ebx,lParam
    assume ebx:PTR CBT_CREATEWND
    mov edi,[ebx].lpcs
    assume edi:PTR CREATESTRUCT
    .if [edi].lpszClass==WC_DIALOG
      invoke GetDesktopWindow
      mov edx,eax
      invoke EnumChildWindows,edx,offset EnCh,addr var
      mov eax,var
      mov [ebx].hWndInsertAfter,eax
    .endif
    assume edi:nothing
    assume ebx:nothing   
    xor eax,eax  
  .else
    invoke CallNextHookEx,hhook,nCode,wParam,lParam
  .endif
  ret
HookProc endp

start:
  invoke GetModuleHandle,0
  invoke SetWindowsHookEx,WH_CBT,offset HookProc,eax,0
  mov hhook,eax
  invoke MessageBox,0,offset _wnd,offset _wnd,0
  invoke UnhookWindowsHookEx,hhook
  invoke ExitProcess,eax
end start

.
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re: ПереZагруZка
От: kero Россия  
Дата: 16.12.09 21:53
Оценка:
Cообщение от Mark Russinovich:

The Win32k team has confirmed the bug.

По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[2]: ПереZагруZка
От: TarasCo  
Дата: 17.12.09 05:59
Оценка: :))) :))
Ну вот, всю тему спалили
Да пребудет с тобою сила
Re: запустить под стол без всяких хуков
От: kero Россия  
Дата: 18.02.10 06:38
Оценка:
А можно ли запустить под стол без всяких хуков?

Решение показалось парадоксальным, и потому предложил задачку в "Этюды"
Автор: kero
Дата: 07.01.10
.

Но не дождавшись адекватного отклика, помещаю решение сюда: http://files.rsdn.ru/42164/dlgbox_under.zip .
В примере — DialogBox (с закомментированным в исходнике вариантом), но аналогично и для обычного окна.
Для вывода окна из-под стола достаточно клика по столу, — особенность безбсодового запуска под стол
Проверено на XP.
---
Парадоксальность же вот в чем: для запуска ПОД стол обязательно наличие WS_EX_TOPMOST.
Вроде бы обязательно.
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[3]: ПереZагруZка
От: c-smile Канада http://terrainformatica.com
Дата: 19.02.10 03:13
Оценка: 6 (1)
Здравствуйте, kero, Вы писали:

K>А знаете — за это сообщение вам отдельное спасибо, кроме шуток. Еще бы узнать про Win98 (не виртуалку)...

K>Хотелось бы проверить предположение, что организация Z-order с тех пор не менялась.

Мы решали одну проблему с htmlayout и диалогами в конторе у которой есть оффициально исходники Windows.
Код вокруг диалогов и их модальности датирован вообще 91 годом или около того. Ядро во всяком случае.
Если они руководствуются принципом "работает — не трогай" (а похоже что это так), то я думаю что проблема вообще изначальная.
Re: FIXED (CVE-2010-0485)
От: kero Россия  
Дата: 30.06.10 13:20
Оценка: 6 (2)
"Microsoft Security Bulletin MS10-032 — Important
Vulnerabilities in Windows Kernel-Mode Drivers Could Allow Elevation of Privilege (979559)
Published: June 08, 2010"
(Win32k Window Creation Vulnerability — CVE-2010-0485)
http://www.microsoft.com/technet/security/bulletin/ms10-032.mspx
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[3]: ПереZагруZка
От: Vain Россия google.ru
Дата: 01.07.10 08:10
Оценка: :)
Здравствуйте, kero, Вы писали:

S>>+W7 x64.

K>Спасибо за отклик!
K>Да, мрачно-занятная складывается картинка ...
Ну ониж с нуля семёрку писали, а тут спалились
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.