Привет, буквально утром появилась идея написать обёртку для WMI, чтобы можно было получать различные hardware-ные значения, типа название процессора, видеокарты, системы и т.д., чего угодно, что позволяют получить Win32 классы.
Обёртка не универсальна и написана только для получения данных на локальном компьютере, думаю, кто разбирается, тому не составит труда переписать немного.
ПостДисклеймер: Я не C++ кодер, так что если увидете какую-нибудь ересь в моем коде, то можете написать комментарий к этой ересе(адекватный комментарий, как лучше сделать и т.д.)
Вообще, я писал это для того, чтобы в будущем использовать в своих malware проектах, но руки никак не дотягиваются сесть и написать малварь, а может и знаний недостаточно.
Инструкшен(на скрине):
Откуда брать названия классов и свойств: https://msdn.microsoft.com/en-us/library/aa394084(v=vs.85).aspx
Будут вопросы, буду рад ответить в телеграмме: https://t-do.ru/xorb1n
Скачать можно с гитхаба: https://github.com/0x193/WMI-Wrapper
Обёртка не универсальна и написана только для получения данных на локальном компьютере, думаю, кто разбирается, тому не составит труда переписать немного.
ПостДисклеймер: Я не C++ кодер, так что если увидете какую-нибудь ересь в моем коде, то можете написать комментарий к этой ересе(адекватный комментарий, как лучше сделать и т.д.)
Вообще, я писал это для того, чтобы в будущем использовать в своих malware проектах, но руки никак не дотягиваются сесть и написать малварь, а может и знаний недостаточно.
Инструкшен(на скрине):
- Создать объект класса WMI
- Вызвать метод Initialize
- Вызвать метод InitializeSecurity
- Вызвать метод CreateInstance
- Вызвать метод ConnectServer, в качестве единственного аргумента указать название пространства имен к которому нужно подключиться на локальном компьютере
- Вызвать метод SetProxyBlanket
- Вызвать метод ExecQuery, в качестве первого аргумента указать запрос на языке WQL(Windows Query Language, но это не точно, я не гуглил расшифровку, сам догадался), вторым параметром указать название свойства значение которого нужно получить
P.S. Там короче есть звездочка, вот, если вместо неё указать то, что вы указали во втором аргументе, то можно сократить много времени(атвичаю, сеёзна говорю) - Создать переменную типа VARIANT, фактически, это структура в которой могут хранится данные различного типа
- Вызвать функцию GetValue и передать в качестве аргумента созданную "универсальную" переменную
- Как-то использовать полученное значение, p.s. там выбор типов разный, например bstr - считайте, что это обыкновенная строка
- Вызвать метод ::VariantClear и передать в него нашу "универсальную" переменную
- Вызвать метод Uninitialize
Откуда брать названия классов и свойств: https://msdn.microsoft.com/en-us/library/aa394084(v=vs.85).aspx
Будут вопросы, буду рад ответить в телеграмме: https://t-do.ru/xorb1n
Скачать можно с гитхаба: https://github.com/0x193/WMI-Wrapper
Последнее редактирование: