gSharedInfo Windows Seven

Тема в разделе "WASM.WIN32", создана пользователем xrc2, 24 дек 2009.

  1. xrc2

    xrc2 New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    47
    Здравствуйте.

    Возникла необходимость находить динамически gSharedInfo во всех версиях Windows. Главная проблема в том что в Windows Seven - user32.dll уже имеет gSharedInfo в export'ах. Но это не тот адрес структуры. Под дебагом посмотрел ф-ию UserRegisterWowHandlers и в конце обнаружил адрес который и дает user32.dll в export'ax. И соответственно напрашиваются несколько вопросов:
    Как можно найти\вычислить gSharedInfo в Windows Seven?
    Существует ли возможность найти\вычислить адрес стурктуры aheList (список хэндлов всех окон, менюшек и т.д.), без gSharedInfo?
     
  2. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    >user32.dll уже имеет gSharedInfo в export'ах. Но это не тот адрес структуры.
    Точно не тот? Что же это за экспорт тогда такой? Просто мы тоже замечали, что такой символ экспортируется, однако полагали, что он определяет не что иное, как адрес gSharedInfo.
    А вообще, никакой особой разницы между получением адреса этой структуры на различных OS мы не видим. Другое дело, что сами структуры могут слегка отличаться промежутке w2k..w7.

    >Существует ли возможность найти\вычислить адрес стурктуры aheList без gSharedInfo?
    Чисто теоретически?
    1) Загрузить user32.dll – чтобы секция win32k!ghSectionShared промапилась на адресное пространство процесса.
    2) Массив элементов HANDLEENTRY будет (по идее) располагаться в начале отображения.
    3) Просканировать дескрипторы виртуальных адресов в поисках подходящего по параметрам отображения секции (размер, защита, подложка).
    4) Проверить, действительно ли это нужное отображение – создать окно или что-нибудь. Учитывать размер HANDLEENTRY при валидации – внимание для дебажных билдов и х64-систем.

    Больше?
    Комментарии к статье «Инжект: лезем через окно»:
    Небольшой модуль, который пользует это:
    Код (Text):
    1. // SharedInfo.h
    2. // Huey the Infected, 10/2009                    [del]
    3. // Sol_Ksacap, 2009/12/24                        [del]
    4.  
    5.  
    6. NAMESPACE_BEGIN(shared_info)
    7.  
    8. //
    9. // Address of structure with sysinfo like 'dtCaretBlink' or 'dwLastRITEventTickCount'.
    10. //
    11. extern
    12. struct tagSERVERINFO* ServerInfo;                     // psi
    13.  
    14. //
    15. // Dunno what's this and how one can use it.
    16. //
    17. extern
    18. struct tagDISPLAYINFO* DisplayInfo;                   // pDispInfo
    19.  
    20. //
    21. // Delta between views of 'win32k!ghSectionShared' section. First view is in
    22. // session space, r/w, and the second view is for the current process, r/o.
    23. // Section contains entries for handles of User Objects.
    24. //
    25. extern
    26. UINT64 HandleEntriesDelta;                            // ulSharedDelta
    27.  
    28. //
    29. // Usermode address of session-wide table with entries for handles of User Objects.
    30. // HandleEntriesUser = (PPROCESSINFO(PEPROCESS->Win32Process))->pClientBase
    31. //
    32. extern
    33. struct _HANDLEENTRY* HandleEntriesUser;               // aheList
    34.  
    35. //
    36. // Kernelmode address of session-wide table with entries for handles of User Objects.
    37. // HandleEntriesKernel == win32k!gpvSharedBase
    38. //
    39. extern
    40. struct _HANDLEENTRY* PTR64 HandleEntriesKernel;       // <none>
    41.  
    42. NAMESPACE_END(shared_info)
    ^ в аттаче. Должно работать для всех систем – 2k..w7, x64\x32 (в т.ч. для х32-программ на х64).
    Сегодня там были подправилены некоторые шероховатости – так что в случае обнаружения косяков желательно отписаться в теме.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Sol_Ksacap
    Оо шарешь.. респект!
     
  4. xrc2

    xrc2 New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    47
    Да вы крут, Sol_Ksacap. Спасибо.