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
.
Cообщение от Mark Russinovich:
The Win32k team has confirmed the bug.
А можно ли запустить под стол без всяких хуков?
Решение показалось парадоксальным, и потому предложил задачку
в "Этюды"Автор: kero
Дата: 07.01.10
.
Но не дождавшись адекватного отклика, помещаю решение сюда:
http://files.rsdn.ru/42164/dlgbox_under.zip .
В примере — DialogBox (с закомментированным в исходнике вариантом), но аналогично и для обычного окна.
Для вывода окна из-под стола достаточно клика по столу, — особенность безбсодового запуска под стол
Проверено на XP.
---
Парадоксальность же вот в чем: для запуска ПОД стол обязательно наличие WS_EX_TOPMOST.
Вроде бы обязательно.
"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, Вы писали:
S>>+W7 x64.
K>Спасибо за отклик!
K>Да, мрачно-занятная складывается картинка ...
Ну ониж с нуля семёрку писали, а тут спалились
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]