Windows 8 DWM inject, capture ...

Тема в разделе "WASM.RESEARCH", создана пользователем shchetinin, 5 дек 2011.

  1. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Вобщем сабж.
    Перехват экрана в Windows 8.
    В Windows 7 можно было сделать инжект в DWM и перехватить DirectX ( Device, SwapChain )
    В Windows 8 DWM имеет больше привелегий и обычное приложения инжект не сделает ( обход этого мне не известин , кроме драйверов и админ привилегий )

    Каким еще образом можно сделать захват отрисовки для DirectX ?
    *Не используя установку чего либо из под админа .
    * BitBlt очень медленно и это GDI.
    * dwmgetdxsharedsurface работает только для окна , то и есть придется делать компизицию окон( Z-Order и прочая боесамое )

    Нужо поймать отрисовку DirectX .
     
  2. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Windows 8 вообще только System или DWM-1 user.


    Об отрисовки (мало ли кому интерестно)

    .text:10067319 push edi
    .text:1006731A lea eax, [ebp+var_1C]
    .text:1006731D lea ecx, [eax+ecx*4]
    .text:10067320 lea eax, [ebp+var_20]
    .text:10067323 push eax
    .text:10067324 lea eax, [ebp+var_2C]
    .text:10067327 push eax
    .text:10067328 push 7
    .text:1006732A lea eax, [ebp+var_4]
    .text:1006732D sub eax, ecx
    .text:1006732F sar eax, 2
    .text:10067332 push eax
    .text:10067333 push ecx
    .text:10067334 push 0A9h
    .text:10067339 push edi
    .text:1006733A push edi
    .text:1006733B push ebx
    .text:1006733C call ds:__imp__D3D11CreateDevice@40 ; D3D11CreateDevice(x,x,x,x,x,x,x,x,x,x

    {Timed interface }
    push edx
    push offset __GUID_a04bfb29_08ef_43d6_a49c_a9bdbdcbe686
    push eax
    call dword ptr [ecx]


    push edi
    mov ebx, offset __GUID_9b7e4c8f_342c_4106_a19f_4f2704f689f0
    push ebx



    ......

    push ebx ;;;; __GUID_9b7e4c8f_342c_4106_a19f_4f2704f689f0 -> D3d10Device1 - it nice :)
    push eax
    call dword ptr [ecx]


    Так что пока юзаем Dx10 :)