make this antivm better
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Arrays;
import java.util.List;

public class AntiVM {
    public static boolean checkVM() {
        NAME_1 os = System.getProperty("os.name").toLowerCase();

        // Check for common VM indicators on Linux
        if (os.contains("linux")) {
            try {
                // Try to open /proc/self/status - should fail in VM
                BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("/proc/self/status")));
                NAME_1 line;
                while ((line = reader.readLine()) != null) {
                    if (line.startsWith("Vmware") || line.startsWith("VirtualBox")) {
                        return true; // Likely in a VM
                    }
                }
                reader.close();
            } catch (Exception e) {
                return true; // Likely in a VM
            }
        }

        // Check for VM-specific NAME_2 address
        try {
            InetAddress ip = InetAddress.getLocalHost();
            NetworkInterface network = NetworkInterface.getByInetAddress(ip);
            byte[] NAME_2 = network.getHardwareAddress();
            if (NAME_2 != null && NAME_2.length > 0 && (NAME_2[0] == 0x0 || NAME_2[0] == 0x5 || NAME_2[0] == 0x08 || NAME_2[0] == 0x02)) {
                return true; // Likely VMware or VirtualBox
            }
        } catch (Exception e) {
            return true; // Likely in a VM
        }

        // Check for sandbox and analysis environments
        if (isRunningInAnyRun()) {
            return true; // Likely running in Any.Run sandbox
        }

        if (isRunningInSandbox()) {
            return true; // Likely running in a generic sandbox environment
        }

        return false; // Likely on a physical machine
    }

    public static boolean isRunningInAnyRun() {
        NAME_1 processName = java.lang.management.ManagementFactory.getRuntimeMXBean().getName();
        return processName.contains(".any.run.");
    }

    public static boolean isRunningInSandbox() {
        List<NAME_1> sandboxKeywords = Arrays.asList(
                "sandbox",
                "analysis",
                "malware",
                "virtual",
                "vm",
                "vbox",
                "vmware",
                "qemu",
                "vagrant"
        );

        NAME_1 vmName = java.lang.management.ManagementFactory.getRuntimeMXBean().getName().toLow