Загрузка...

[C++] WMI Wrapper

Тема в разделе C/C++ создана пользователем swmf 16 июн 2018. (поднята 9 июн 2018) 557 просмотров

Загрузка...
  1. swmf
    swmf Автор темы 16 июн 2018 101 8 дек 2017
    Привет, буквально утром появилась идея написать обёртку для WMI, чтобы можно было получать различные hardware-ные значения, типа название процессора, видеокарты, системы и т.д., чего угодно, что позволяют получить Win32 классы.

    Обёртка не универсальна и написана только для получения данных на локальном компьютере, думаю, кто разбирается, тому не составит труда переписать немного.

    ПостДисклеймер: Я не C++ кодер, так что если увидете какую-нибудь ересь в моем коде, то можете написать комментарий к этой ересе(адекватный комментарий, как лучше сделать и т.д.)

    Вообще, я писал это для того, чтобы в будущем использовать в своих malware проектах, но руки никак не дотягиваются сесть и написать малварь, а может и знаний недостаточно.

    [IMG]

    Инструкшен(на скрине):
    1. Создать объект класса WMI
    2. Вызвать метод Initialize
    3. Вызвать метод InitializeSecurity
    4. Вызвать метод CreateInstance
    5. Вызвать метод ConnectServer, в качестве единственного аргумента указать название пространства имен к которому нужно подключиться на локальном компьютере
    6. Вызвать метод SetProxyBlanket
    7. Вызвать метод ExecQuery, в качестве первого аргумента указать запрос на языке WQL(Windows Query Language, но это не точно, я не гуглил расшифровку, сам догадался), вторым параметром указать название свойства значение которого нужно получить
      P.S. Там короче есть звездочка, вот, если вместо неё указать то, что вы указали во втором аргументе, то можно сократить много времени(атвичаю, сеёзна говорю)
    8. Создать переменную типа VARIANT, фактически, это структура в которой могут хранится данные различного типа
    9. Вызвать функцию GetValue и передать в качестве аргумента созданную "универсальную" переменную
    10. Как-то использовать полученное значение, p.s. там выбор типов разный, например bstr - считайте, что это обыкновенная строка
    11. Вызвать метод ::VariantClear и передать в него нашу "универсальную" переменную
    12. Вызвать метод Uninitialize
    Енд

    Откуда брать названия классов и свойств: https://msdn.microsoft.com/en-us/library/aa394084(v=vs.85).aspx

    Будут вопросы, буду рад ответить в телеграмме: https://t-do.ru/xorb1n
    Скачать можно с гитхаба: https://github.com/0x193/WMI-Wrapper
     
    16 июн 2018 Изменено
  2. ginelow
    ginelow 19 июн 2018 Заблокирован(а) 68 11 янв 2018
    Сел сегодня за плюсики, хотел получить путь к рабочему столу, соснул хуйца, перехожу на делфи. Как ты с ума не сошел
     
  3. swmf
    swmf Автор темы 19 июн 2018 101 8 дек 2017
    ginelow, я щас с ума сошёл, когда захотел писать на чистом си, я ебал в рот этот си
     
Top