Starting work on a patcher for VBox source which will Anonymize All The Things, including SMBIOS and the DSDT + SSDT ACPI tables, and also be open source.
For anti-VM detection is it better to attempt to look like a real system according to SMBIOS/ACPI, or to strip it down to nothing so that no info can be gathered?
I'm leaning towards the stripped down approach...
Current VBox DSDT is super obvious and can be easily targeted, even without the "VBOX " string.
There's also an inactive Pentium 3 CPU entry in SMBIOS...no good, we can still read it
DSDT red flags:
It's ~8.2KiB binary, my laptop one is ~76.3KiB
strings: VBOX, Windows 2006 SP2, VAIN, all the DBG strings, 0xDEC0AD0B, many many others
this:
For anti-VM detection is it better to attempt to look like a real system according to SMBIOS/ACPI, or to strip it down to nothing so that no info can be gathered?
I'm leaning towards the stripped down approach...
Current VBox DSDT is super obvious and can be easily targeted, even without the "VBOX " string.
There's also an inactive Pentium 3 CPU entry in SMBIOS...no good, we can still read it
DSDT red flags:
It's ~8.2KiB binary, my laptop one is ~76.3KiB
strings: VBOX, Windows 2006 SP2, VAIN, all the DBG strings, 0xDEC0AD0B, many many others
this:
Code: Select all
and this:
Method (_PRT, 0, NotSerialized)
{
if (LEqual (LAnd (PICM, UIOA), Zero)) {
DBG ("RETURNING PIC\n")
Store (0x00, \_SB.PCI0.SBRG.APDE)
Store (0x00, \_SB.PCI0.SBRG.APAD)
Return (PR00)
}
else {
DBG ("RETURNING APIC\n")
Store (0xbe, \_SB.PCI0.SBRG.APDE)
Store (0xef, \_SB.PCI0.SBRG.APAD)
Return (PR01)
}
}
Code: Select all
plus code structure, field names, method names, etc. I think it needs a serious overhaul.Field (PCIC, ByteAcc, NoLock, Preserve)
{
Offset (0xad),
APAD, 8,
Offset (0xde),
APDE, 8,
}