• VLMI - форум по обмену информацией. На форуме можете найти способы заработка, разнообразную информацию по интернет-безопасности, обмен знаниями, курсы/сливы.

    После регистрации будут доступны основные разделы.

    Контент форума создают пользователи, администрация за действия пользователей не несёт ответственности, отказ от ответственности. Так же перед использованием форума необходимо ознакомиться с правилами ресурса. Продолжая использовать ресурс вы соглашаетесь с правилами.
  • Подпишись на наш канал в Telegram для информации о актуальных зеркалах форума: https://t.me/vlmiclub

[C++] WMI Wrapper

xorb1n

Участник
Сообщения
15
Реакции
7
0 руб.
Telegram
Привет, буквально утром появилась идея написать обёртку для WMI, чтобы можно было получать различные hardware-ные значения, типа название процессора, видеокарты, системы и т.д., чего угодно, что позволяют получить Win32 классы.

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

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

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

hr9NvgoD.png


Инструкшен(на скрине):
  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
 
Последнее редактирование:
Сверху Снизу