
VMAWARE (VM+ AFALE)-это кроссплатформенная библиотека C ++ для обнаружения виртуальной машины.
Библиотека:
# include " vmaware.hpp "
# include < iostream >
int main () {
if ( VM::detect ()) {
std::cout << " Virtual machine detected! " << " n " ;
} else {
std::cout << " Running on baremetal " << " n " ;
}
std::cout << " VM name: " << VM::brand () << " n " ;
std::cout << " VM type: " << VM::type () << " n " ;
std::cout << " VM certainty: " << ( int ) VM::percentage () << " % " << " n " ;
}Возможный выход:
Virtual machine detected!
VM name: VirtualBox
VM type: Hypervisor (type 2)
VM certainty: 100%

Этот проект также предоставляет крошечный, но удобный инструмент CLI, использующий весь потенциал того, что может сделать библиотека. Это даст вам всевозможные подробности о среде, в которой она работает.

Чтобы установить библиотеку, загрузите файл vmaware.hpp в последнем разделе выпуска в свой проект. Двоичные файлы также расположены там. Никакие связи Cmake или Shared объекта не необходимы, это буквально так просто.
Однако, если вам нужен полный проект (глобально доступные заголовки с <vmaware.hpp> и инструментом CLI), следуйте этим командам:
git clone https://github.com/kernelwernel/VMAware
cd VMAwaresudo dnf/apt/yum update -y # change this to whatever your distro is
mkdir build
cd build
cmake ..
sudo make installcmake -S . -B build/ -G " Visual Studio 16 2019 " # edit this
set ( DIRECTORY "/path/to/your/directory/" )
# if you want the MIT version, toggle this to ON
option (MIT "MIT version" OFF )
if (MIT)
set (EXTENSION "_MIT" )
else ()
set (EXTENSION "" )
endif ()
set ( DESTINATION " ${DIRECTORY} vmaware ${EXTENSION} .hpp" )
if ( NOT EXISTS ${DESTINATION} )
message ( STATUS "Downloading VMAware" )
set (URL "https://github.com/kernelwernel/VMAware/releases/latest/download/vmaware ${EXTENSION} .hpp" )
file (DOWNLOAD ${URL} ${DESTINATION} SHOW_PROGRESS )
else ()
message ( STATUS "VMAware already downloaded, skipping" )
endif ()Вы можете просмотреть полные документы здесь. Все детали, такие как функции, методы, настройки и примеры. Поверь мне, это не слишком пугающе;)
Он использует комплексный список низкоуровневых (процессоров, графического процессора, жесткого диска и прошивки) и высокоуровневых анти-VM методов, которые учитываются в системе оценки. Оценки (0-100) для каждой техники приведены произвольно, и каждый метод, который обнаружил виртуальную машину, будет добавлена их оценка в одну накопленную точку, где пороговый номер точки будет решать, будет ли он работает в виртуальной машине.
Он предназначен для исследователей безопасности, инженеров-виртуальных машин, разработчиков геймеров и практически любого, кому нужен практическое и надежное механизм обнаружения виртуальной машины в своем проекте. Например, библиотека подходит, если вы делаете виртуальную машину и проверяете эффективность скрытия. Если вы разработчик игры/разработчик программного обеспечения, библиотека полезна для оборотных инженеров. Если вы аналитик вредоносного ПО и хотите проверить возможности сокрытия вашей виртуальной машины, это будет идеальным инструментом для того, чтобы сравнить, насколько хорошо выявлена ваша виртуальная машина против вредоносного ПО. Кроме того, программное обеспечение может оптимизировать производительность или использование ресурсов на основе обнаруженной среды, и некоторые приложения могут захотеть ограничить использование виртуальных машин для предотвращения несанкционированного распределения или тестирования.
Уже есть множество проектов, которые имеют ту же цель, такие как Invizzible, Pafish и Al-Khaser. Но разница между вышеупомянутыми проектами заключается в том, что они не предоставляют программируемый интерфейс для взаимодействия с механизмами обнаружения, в дополнение к отсутствию поддержки систем, не являющихся Windows. Я хотел, чтобы методы обнаружения ядра были доступны программно программным образом для поперечного платформенного способа для всех, чтобы получить что-то полезное, а не предоставлять только инструмент CLI. Он также содержит большее количество методов, так что это в основном только библиотека обнаружения виртуальной машины и инструмент на стероидах с максимальной гибкостью.
Существует несколько платных программного обеспечения для защиты лицензирования другого программного обеспечения против инженеров -реверс или программного ткани, таких как Sentinel RMS Thales и VMProtect. Хотя они не предназначены только для того, чтобы быть только библиотеками обнаружения виртуальных машин, они по -разному ограничены в своих возможностях. Обнаружение VM Sentinel RMS не имеет столько брендов виртуальных машин (не говоря уже о том, что цена предназначена только для корпораций, а не для людей), а VMProtect имеет очень ограниченное количество методов обнаружения, где некоторые из них не требуют больших усилий, чтобы обойти только с несколькими конфигурациями для ВМ (механизм обнаружения также была лидера, поэтому в том, что он не был закрыт). Говоря об этом, единственным недостатком vmaware является то, что он полностью открытый исходный код, который облегчает работу обстановки по сравнению с его закрытым исходным кодом. Тем не менее, я бы сказал, что это достойный компромисс, имея столько методов обнаружения виртуальных машин открытым и интерактивным способом, включая ценные отзывы сообщества, чтобы сделать библиотеку более эффективной и точной.
Hyper-V имеет неясную функцию, где, если она включена в систему хоста, значения аппаратного обеспечения CPU заставляют выглядеть так, как будто вся система работает внутри Hyper-V, что не так. Это делает задачу определить, является ли аппаратное обеспечение значений, которое собирает библиотека, является либо реальной виртуальной реальностью, либо только артефактами того, что Hyper-V оставил в результате включения его в системе хоста. Причина, по которой это проблема, заключается в том, что библиотека может ложно заключить, что ваша система хост работает в Hyper-V, что является ложным положительным. Здесь вступает в игру механизм Hyper-X , чтобы различить эти два. Это было разработано Реквием

Да. Есть некоторые методы, которые тривиально подлежат подготовке, и нет ничего, что библиотека не может с этим сделать, будь то преднамеренный ложный позитив или даже ложный негатив. Это проблема, с которой сталкивается каждый проект обнаружения виртуальной машины, является ли закрытым или открытым исходным кодом, поэтому библиотека пытается проверить все возможные методы, чтобы получить наилучший результат на основе среды, в которой она работает. Помните, все технически поддельно.
Этот проект не требует разработки вредоносных программ по очевидным причинам. Даже если вы намереваетесь использовать его в целях сокрытия, он, скорее всего, будет отмечен антивирусами в любом случае, и с самого начала ничего не запутывается. Хорошая чертову удачи, запутывая 10K+ строки кода C ++ Lmao.
Я бы сделал его строгого MIT, чтобы проприетарное программное обеспечение могло использовать библиотеку, но некоторые из используемых методов взяты из проектов GPL 3.0, и у меня нет выбора, кроме как использовать одну и ту же лицензию по юридическим причинам. Это дало мне идею сделать версию MIT без всего кода GPL, поэтому ее также можно использовать, не заставляя ваш код быть открытым исходным кодом. Следует отметить, что версия MIT удаляет 12 методов из 116 (по состоянию на 1,9 версии), и чем меньше число методов, тем менее точным может быть общий результат.
Если вы компилируете с GCC или Clang, добавьте флаги
-lmи-lstdc++или вместо этого используйте компиляторы G ++/Clang ++. Если вы получаете ошибки линкеров из совершенно новой среды виртуальной реальности на Linux, обновите свою систему с помощьюsudo apt/dnf/yum update -yчтобы установить необходимые компоненты C ++.
Если у вас есть какие -либо предложения, идеи или какой -либо вклад, не стесняйтесь спрашивать! Я буду более чем рад обсудить в разделе выпуска. Если вы хотите лично спросить что -то наедине, мой разногласия - kr.nl
И если вы нашли этот проект полезным, будет оценена звезда :)
Я не несет ответственности за какое -либо ущерб, который вы причиняете, благодаря любому злонамеренному использованию этого проекта.
Лицензия: GPL-3.0/MIT