О "бедных" DLL замолвим слово...

Тема в разделе "WASM.RESEARCH", создана пользователем vitokop, 8 июл 2023.

Метки:
  1. vitokop

    vitokop Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    48
    Начиная с Windows 7 Microsoft применяет трюк apisetschema для разрешения
    импортных ссылок.
    Сам ЗВЕРЬ находится в камере "C:\Windows\System32\apisetschema.dll".
    При этом некоторые загруженные DLL(по крайней мере одна) должны хранит инфу об
    имени процесса для детерминированности.
    KERNEL32.DLL "зверем" apisetschema расталкивается по разным DLL, если нет в ее
    основе. Большинство идет в KERNELBASE.dll, которая должна подстраиваться под
    основной процесс (32-64 файла). Поэтому она и стала первой подопытной.
    Рассмотрим KERNELBASE.dll и ее маркерные точки, определенные экспериментальным
    грубым методом: сканированием про-ва DLL на unicode string.
    Ниже приведены данные для W8.1, W10, W11 offset, где ЗАГРУЖЕННАЯ
    KERNELBASE.dll хранит имя ПРОЦЕССА(файла) и при необходимости интернационализацию
    DLL.
    Все в секции .data KERNELBASE.dll;
    1. Параллельно интересно, т.к. KERNELBASE.dll проецируется для ВСЕХ на один АДРЕС,
    как происходит взаимодействие с данной DLL:
    - одна для некоторых группы
    - для каждого процесса
    - отдельные специфические наборы страницы для каждого (группы) процесса (ов)
    2. Получив доступ к KERNELBASE.dll можем узнать имя Процесса
    3. Зачем ХРАНИТЬ имя процесса? М.б. это связано с п.1 ?
    4. Для "ведающих": м.б.это где-то скрыто в новых аналлах соломонов-русиновичей??

    ******** Windows 10 Корпоративная LTSC 1809 (сборка 17763.4499) *************
    секция .data KERNELBASE
    base sizeimage oep
    AdminService.exe >7FF670AA0000 00062000 7FF670ABACA0
    KERNELBASE.dll >7FFC3BD10000 0029D000 7FFC3BD1C9B0
    offset image KERNELBASE 0x00265260 (2 511 456): AdminService.exe UNICODE STRING
    QcomWlanSrvx64.exe >7FF7A0110000 00030000 7FF7A0116E78
    KERNELBASE.dll >7FFC3BD10000 0029D000 7FFC3BD1C9B0
    offset image KERNELBASE 0x00265260 (2 511 456): QcomWlanSrvx64.exe UNICODE STRING
    Explorer.EXE >7FF7BA3F0000 0042A000 7FF7BA48D3F0
    KERNELBASE.dll >7FFC3BD10000 0029D000 7FFC3BD1C9B0
    offset image KERNELBASE 0x00265260 (2 511 456): Explorer.EXE UNICODE STRING
    ...... один из любых svchost ..................
    svchost.exe >7FF685570000 00010000 7FF685574750
    KERNELBASE.dll >7FFC3BD10000 0029D000 7FFC3BD1C9B0
    offset image 0x00265260 (2 511 456): svchost.exe UNICODE STRING
    для 32-р процессов
    MDM.EXE> 00400000 0004D000 00401488
    KERNELBASE.dll> 765C0000 00201000 766D54E0
    offset image 0x001CB900 (1 882 368): MDM.EXE UNICODE
    vmnetdhcp.exe> 011A0000 00067000 011D4B40
    KERNELBASE.dll> 765C0000 00201000 766D54E0
    offset image 0x001CB900 (1 882 368): vmnetdhcp.exe
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    *********** Windows 11 Pro Версия 21H2 (сборка ОС 22000.176) ****************
    секция .data KERNELBASE
    RtkAudUService64.exe> 7FF72A4D0000 00129000 7FF72A55D3A4
    KERNELBASE.dll> 7FFB07830000 00374000 7FFB07854500
    offset image 0x003291E0 (3 314 144): RtkAudUService64.exe
    winlogon.exe> 7FF6432B0000 000DB000 7FF6432EC150
    KERNELBASE.dll> 7FFB07830000 00374000 7FFB07854500
    offset image 0x003291E0 (3 314 144): winlogon.exe
    Explorer.EXE> 7FF704C00000 004C4000 7FF704C40BE0
    KERNELBASE.dll> 7FFB07830000 00374000 7FFB07854500
    offset image 0x003291E0 (3 314 144): Explorer.EXE
    ...... один из svchost ..................
    svchost.exe> 7FF7445C0000 00011000 7FF7445C5380
    KERNELBASE.dll> 7FFB07830000 00374000 7FFB07854500
    offset image 0x003291E0 (3 314 144): svchost.exe

    также в секции .data KERNELBASE
    offset image KERNELBASE 0x00329CDA 3316954: ru-RU - национализация версии
    svchost ЭТИ данные НЕ содержат
    для 32 -р процессов
    base size oep
    KodoKop.exe> 00400000 00BFC000 00B94B70
    KERNELBASE.dll> 75F90000 00252000 760C0FA0
    offset image KERNELBASE 0x00211940 (2 169 152): KodoKop.exe
    offset image KERNELBASE 0x00211FCE (2 170 830): ru-RU
    MDM.EXE> 00400000 0004D000 00401488
    KERNELBASE.dll> 75F90000 00252000 760C0FA0
    offset image KERNELBASE 0x00211940 (2 169 152): MDM.exe
    offset image KERNELBASE национализация версии НЕТ
    FASMW.EXE> 00400000 00035000 004108EE
    KERNELBASE.dll> 75F90000 00252000 760C0FA0
    offset image KERNELBASE 0x00211940 (2 169 152): FASMW.EXE
    offset image KERNELBASE 0x00211FCE (2 170 830): ru-RU
    COMDLG32.DLL для FASMW.EXE содержит в секции .data директорию запуска FASMW.EXE
    offset image 0x000AB8C0(702 656): Z:\Code\pr\zzz\001 UNICODE
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ***************** Windows 8.1 Pro Версия 6.3 (сборка 9600) ****************
    секция .data KERNELBASE
    для 32 -р процессов
    vmware-authd.exe> 00FD0000 00019000 00FDB710
    KERNELBASE.dll> 75140000 000D7000 7514F6A0
    offset image KERNELBASE 0x000C4480 (803 968): vmware-authd.exe unicode
    daemonu.exe> 00C80000 00153000 00CC5DF1
    KERNELBASE.dll> 75140000 000D7000 7514F6A0
    offset image KERNELBASE 0x000C4480 (803 968): daemonu.exe unicode
    64-р процессы
    BSQLServer.exe> 00D80000 00014000 00000000
    KERNELBASE.dll> 7FF95C530000 00115000 7FF95C5326E0
    offset image KERNELBASE 0x000F5160 (1 003 872): BSQLServer.exe unicode
    Explorer.EXE> 7FF6B4010000 00261000 7FF6B4060CF0
    KERNELBASE.dll> 7FF95C530000 00115000 7FF95C5326E0
    offset image KERNELBASE 0x000F5160 (1 003 872): Explorer.EXE unicode
    KodoKop64.exe> 00400000 00A77000 00B81060
    KERNELBASE.dll> 7FF95C530000 00115000 7FF95C5326E0
    offset image KERNELBASE 0x000F5160 (1 003 872): KodoKop64.exe unicode

    WinLogon.exe> 7FF7586E0000 00093000 7FF7586F41E0
    KERNELBASE.dll> 7FF95C530000 00115000 7FF95C5326E0
    offset image KERNELBASE 0x000F5160 (1 003 872): WinLogon.exe unicode
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    Вывод: 1.offset image для всех процессов ОДИНАКОВЫ (64 и 32) и зависят от версии OC,
    по offset image возможно определить тип OC.
    2. offset image 64 всегда больше offset image 32.

    ***************************** Windows 7 **************************************
    Проверки на VMware и VirtualBox не подтвердили данный факт для Win7;
    Оригинальной Win 7 не нашлось под рукой...