You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For a report on a false positive, please make sure that you include:
1
+
For a report on a false positive/bug, please make sure that you include:
2
2
- which OS and VM you are using
3
3
- which technique(s) have given a false positive
4
4
- a screenshot or copy pasted message of the CLI's output
5
+
- if necessary, running the [debug binary](https://github.com/kernelwernel/VMAware/releases/download/v2.2.0/vmaware_debug.exe) and copy pasting the output would be immensely useful for us to diagnose your issue.
5
6
6
7
> [!NOTE]
7
8
> Specific versions or in-depth system info is not required, just the bare basics is what we're looking for.
8
9
9
-
If your issue is not a false positive, please make sure to write as much information as needed.
10
+
If your issue is not a false positive, please make sure to write the necessary information needed.
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -239,7 +239,7 @@ You can view the full docs [here](docs/documentation.md). All the details such a
239
239
240
240
> I would've made it strictly MIT so proprietary software can make use of the library, but some of the techniques employed are from GPL projects, and I have no choice but to use the same license for legal reasons.
241
241
>
242
-
> This gave me an idea to make an MIT version without all of the GPL code so it can also be used without forcing your code to be open source. It should be noted that the MIT version removes <b>7</b> techniques out of 117 (as of 2.0 version), and the lesser the number of techniques, the less accurate the overall result might be.
242
+
> This gave me an idea to make an MIT version without all of the GPL code so it can also be used without forcing your code to be open source. It should be noted that the MIT version removes <b>7</b> techniques out of 116 (as of 2.0 version), and the lesser the number of techniques, the less accurate the overall result might be.
Copy file name to clipboardExpand all lines: docs/documentation.md
+7-2Lines changed: 7 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,7 @@
10
10
-[`VM::conclusion()`](#vmconclusion)
11
11
-[`VM::detected_count()`](#vmdetected_count)
12
12
-[`VM::vmaware struct`](#vmaware-struct)
13
+
-[Overall things to avoid](#overall-things-to-avoid)
13
14
-[Flag table](#flag-table)
14
15
-[Brand table](#brand-table)
15
16
-[Setting flags](#setting-flags)
@@ -411,6 +412,12 @@ int main() {
411
412
412
413
<br>
413
414
415
+
# Overall things to avoid
416
+
❌ 1. Do NOT rely on the percentage to determine whether you're in a VM. The lib is not designed for this way, and you're potentially increasing false positives. Use VM::detect() instead for that job.
417
+
❌ 2. Do NOT depend your whole program on whether a specific brand was found. VM::brand() will not guarantee it'll give you the result you're looking for even if the environment is in fact that specific VM brand.
418
+
❌ 3. Do NOT use VM::NO_MEMO flag if you're not sure what you're doing, this can potentially hamper the performance significantly.
419
+
420
+
<br>
414
421
415
422
# Flag table
416
423
VMAware provides a convenient way to not only check for VMs, but also have the flexibility and freedom for the end-user to choose what techniques are used with complete control over what gets executed or not. This is handled with a flag system.
@@ -515,15 +522,13 @@ VMAware provides a convenient way to not only check for VMs, but also have the f
515
522
|`VM::PROCESSOR_NUMBER`| Check for number of processors | Windows | 50% |||||
516
523
|`VM::NUMBER_OF_CORES`| Check for number of cores | Windows | 50% |||||
517
524
|`VM::ACPI_TEMPERATURE`| Check for device's temperature | Windows | 25% |||||
518
-
|`VM::PROCESSOR_ID`| Check if any processor has an empty Processor ID using SMBIOS data | Windows | 25% |||||
519
525
|`VM::SYS_QEMU`| Check for existence of "qemu_fw_cfg" directories within /sys/module and /sys/firmware | Linux | 70% |||||
520
526
|`VM::LSHW_QEMU`| Check for QEMU string instances with lshw command | Linux | 80% |||||
521
527
|`VM::VIRTUAL_PROCESSORS`| Check if the number of virtual and logical processors are reported correctly by the system | Windows | 50% |||||
522
528
|`VM::HYPERV_QUERY`| Check if a call to NtQuerySystemInformation with the 0x9f leaf fills a _SYSTEM_HYPERVISOR_DETAIL_INFORMATION structure | Windows | 100% |||||
523
529
|`VM::BAD_POOLS`| Check for system pools allocated by hypervisors | Windows | 80% |||||
524
530
|`VM::AMD_SEV`| Check for AMD-SEV MSR running on the system | Linux and MacOS | 50% | Admin ||||
525
531
|`VM::AMD_THREAD_MISMATCH`| Check for AMD CPU thread count database if it matches the system's thread count || 95% |||||
526
-
|`VM::NATIVE_VHD`| Checks if the OS was booted from a VHD container || 100% |||||
527
532
|`VM::NATIVE_VHD`| Check for OS being booted from a VHD container | Windows | 100% |||||
528
533
|`VM::VIRTUAL_REGISTRY`| Check for particular object directory which is present in Sandboxie virtual environment but not in usual host systems | Windows | 65% |||| Admin only needed for Linux |
529
534
|`VM::FIRMWARE`| Check for VM signatures and patched strings by hardeners in firmware, while ensuring the BIOS serial is valid | Windows and Linux | 100% |||||
0 commit comments