Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Гайд Antivm (базовый)

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

этот код не просто проверяет название системы, он извлекает сигнатуру Hypervisor напрямую из процессора. он распознает такие значения, как:

KVMKVMKVM (KVM)
Microsoft Hv (Hyper-V)
VMwareVMware (VMware)
XenVMMXenVMM (Xen)


C++:
Expand Collapse Copy
#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 {
        // основной код
    }
}
 
простая проверка папки "VirtualBox" уже недостаточна. этот код сканирует все, от серийного номера материнской платы до скрытой сигнатуры "гипервизора" процессора. код способен обманывать тех, кто пытается анализировать данные с помощью QEMU.
опять же этого будет недостаточно для некоторых ПО (тут только база так что без хейта):da::da:

этот код не просто проверяет название системы, он извлекает сигнатуру Hypervisor напрямую из процессора. он распознает такие значения, как:

KVMKVMKVM (KVM)
Microsoft Hv (Hyper-V)
VMwareVMware (VMware)
XenVMMXenVMM (Xen)


C++:
Expand Collapse Copy
#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 {
        // основной код
    }
}
Вот чел ахуент кода увидит логику отправки в 4 строчки где 2 это цикл а остальная это print
 
Назад
Сверху Снизу