Начинающий
- Статус
- Онлайн
- Регистрация
- 5 Сен 2022
- Сообщения
- 41
- Реакции
- 9
простая проверка папки "VirtualBox" уже недостаточна. этот код сканирует все, от серийного номера материнской платы до скрытой сигнатуры "гипервизора" процессора. код способен обманывать тех, кто пытается анализировать данные с помощью QEMU.
опять же этого будет недостаточно для некоторых ПО (тут только база так что без хейта)

этот код не просто проверяет название системы, он извлекает сигнатуру Hypervisor напрямую из процессора. он распознает такие значения, как:
KVMKVMKVM (KVM)
Microsoft Hv (Hyper-V)
VMwareVMware (VMware)
XenVMMXenVMM (Xen)
опять же этого будет недостаточно для некоторых ПО (тут только база так что без хейта)


этот код не просто проверяет название системы, он извлекает сигнатуру Hypervisor напрямую из процессора. он распознает такие значения, как:
KVMKVMKVM (KVM)
Microsoft Hv (Hyper-V)
VMwareVMware (VMware)
XenVMMXenVMM (Xen)
C++:
#include <iostream>
#include <windows.h>
#include <intrin.h>
#include <vector>
bool is_any_vm() {
int cpuInfo[4];
// адрес 0x40000000 возвращает подпись гипервизора
__cpuid(cpuInfo, 0x40000000);
char vendor[13];
memcpy(vendor, &cpuInfo[1], 4);
memcpy(vendor + 4, &cpuInfo[2], 4);
memcpy(vendor + 8, &cpuInfo[3], 4);
vendor[12] = '\0';
// если процессор возвращает подпись виртуализации, значит это VM
std::string v(vendor);
if (v == "VMwareVMware" || v == "Microsoft Hv" || v == "KVMKVMKVM" ||
v == "prl hyperv" || v == "VBoxVBoxVBox" || v == "XenVMMXenVMM") {
return true;
}
return false;
}
// обманка
void fake_server_connection() {
std::cout << "[*] Establishing connection: security.cc" << std::endl;
while(true) {
Sleep(2500);
std::cout << "[+] Packet sent (Size: " << (rand() % 512) << " bytes)" << std::endl;
}
}
int main() {
if (is_any_vm()) {
fake_server_connection();
} else {
// основной код
}
}