WMI на ассемблере

Тема в разделе "WASM.WIN32", создана пользователем Jin X, 26 сен 2018.

Метки:
  1. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Всем привет!

    Кто-нибудь использовал WMI на асме? Ну или на Си.
    Короче, без использования OLE-Variant-типов, заложенных в язык (типа Delphi).
    Именно через WinAPI интересует технология работы.
     
  2. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Вот например кусок. Если надо отдельным исходником могу оформить.
    Код (Text):
    1.  
    2.             invoke CoInitialize,0
    3.             ;invoke CoInitializeSecurity,0,-1,0,0,RPC_C_AUTHN_LEVEL_DEFAULT,RPC_C_IMP_LEVEL_IMPERSONATE,0,EOAC_NONE,0
    4.             invoke CoInitializeSecurity,0,-1,0,0,RPC_C_AUTHN_LEVEL_DEFAULT,RPC_C_IMP_LEVEL_IMPERSONATE,0,EOAC_STATIC_CLOAKING,0
    5.            .if eax<>0 & eax<>RPC_E_TOO_LATE
    6.              pushdata pszErrorCanNotInitializeSecurity,db 'ERROR: CoInitializeSecurity() <> S_OK'\,0x0d\,0x0a\,0
    7.                   stdcall [.MainWindowInfo.method_write_message],esp
    8.              popdata
    9.            .else
    10.              pushdata pbinCLSID_WbemLocator,MIDL_INTERFACE 4590f811-1d3a-11d0-891f-00aa004b2e24
    11.              pushdata pbinIID_WbemLocator,MIDL_INTERFACE dc12a687-737f-11cf-884d-00aa004b2e24
    12.                   lea eax,[WbemLocator]
    13.                   mov DWORD[eax],0
    14.                   invoke CoCreateInstance,[pbinCLSID_WbemLocator],0,CLSCTX_INPROC_SERVER,[pbinIID_WbemLocator],eax
    15.              popdata
    16.              popdata
    17.             .if eax <> 0
    18.                   pushdata pszErrorCanNotCreateWbemLocator,db 'ERROR: CoCreateInstance() <> S_OK'\,0x0d\,0x0a\,0
    19.                    stdcall [.MainWindowInfo.method_write_message],esp
    20.                   popdata
    21.             .else
    22.                   pushdata puszWbemPathValue,du 'ROOT\CIMV2'\,0
    23.                    invoke SysAllocString,esp
    24.                    mov [puszWbemPath],eax
    25.                   popdata
    26.                   lea eax,[WbemServices]
    27.                   mov DWORD[eax],0
    28.                   cominvk WbemLocator,ConnectServer,[puszWbemPath],0,0,0,0,0,0,eax
    29.                  .if eax <> 0
    30.                    pushdata pszErrorCanNotConnectServer,db 'ERROR: IWbemLocator.ConnectServer() <> WBEM_S_NO_ERROR'\,0x0d\,0x0a\,0
    31.                     stdcall [.MainWindowInfo.method_write_message],esp
    32.                    popdata
    33.                  .else
    34.                    pushdata pusWqlValue,du 'WQL'\,0
    35.                     invoke SysAllocString,esp
    36.                     mov [puszWql],eax
    37.                    popdata
    38.                    pushdata puszQuerySelectValue,du 'Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE'\,0
    39.                    ;pushdata puszQuerySelectValue,du 'Select * from Win32_NetworkAdapterConfiguration where InterfaceIndex=3'\,0
    40.                     invoke SysAllocString,esp
    41.                     mov [puszQuerySelect],eax
    42.                    popdata
    43.                    lea eax,[EnumWbemClassObject]
    44.                    mov DWORD[eax],0
    45.                    cominvk WbemServices,ExecQuery,[puszWql],[puszQuerySelect],WBEM_FLAG_RETURN_IMMEDIATELY,0,eax
    46.                   .if eax <> 0
    47.                     pushdata pszErrorCanNotExecQuery,db 'ERROR: IWbemServices.ExecQuery() <> WBEM_S_NO_ERROR'\,0x0d\,0x0a\,0
    48.                          stdcall [.MainWindowInfo.method_write_message],esp
    49.                     popdata
    О, а даже есть отдельным наброском.
     

    Вложения:

    Последнее редактирование: 26 сен 2018
    betrayer и Jin X нравится это.
  3. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Спасибо, гляну :)
    Это, как я понял, пример работы с OLE просто?
     
    Последнее редактирование: 26 сен 2018
  4. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Это и есть подключение к wmi и работа с ним wql-запросами. Настолько не похоже на дельфи? :)
     
  5. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    :sarcastic:
    Я пока не смотрел, просто взглядом окинул, не нашёл слова WMI, подумал, что просто OLE.
    Но потом уже увидел WBEM :)