SLIC passthrough to VirtualBox. Activating the host's OEM windows on the VM

Hello Boys and Girls

I came to you because I need help but I am ready to contribute and make something beautiful. I am trying to solve the problem of passing through to the VirtualBox hosted Windows the piece of string written into the BIOS that allows the use of the OEM Windows version.

I don't need to make long winded explanations on the advantages of such setups over dual booting.

the problem is that the ACPI tables contain this SLIC string which unlock System-locked Pre-installation Windowses to activate. The question is, could we emulate or clone this piece of string on a virtual machine to allow the VM to use the OEM key for it?

The answer is yes, yes we can. I am just not sure how.

The piece of string can be found here sys/firmware/acpi/tables/SLIC You can use dmidecode to look into it, but it made very little sense to me.

Approximately seven million years ago, someone saw this and decided to make a patch for VirtualBox for it. guess what, it not only worked, but it eventually got into the official VB release. Yay!

At this point I could go on with explaining the background, the governing paradigms and the particular inflammation of the zeitgeist that gave birth to the solution at hand while doing it faster than the screen refreshes without explaining what do the the words i typed actually do. I mean I could do that if I were Wendell. But if I were Wendell, I would probably also know the subject from top to bottom. Sadly that is not the case. I can't talk to you about pulling SLIC strings from ACPI tables when I don't know what either of those things are. I can't tell you how to use vboxmanager to manually configure your VM's bios when I don't know what does DMI stand for and when zeros and ones are really just zeros and ones to me.

But what I can do, is showing you a tutorial of some sort to this procedure someone wrote. In German. Ja.
http://wiki.ubuntuusers.de/Dualboot-Windows_virtualisieren

I am going to leave it here and noone is going to chew through it by let's say next week, i will begin to digest it myself and present my sweat, blood and vomit covered findings. Like a Blue bird feeding his hatchlings.

Stay Tuned,

cheers,
IamnotactuallycalledRobin

google acpi table reader.. then open the slic table, the windows key is obvious, then copy and paste it somewhere, copy it into the activation key prompt. ta da!

2 Likes

Haven't found it yet. But this says we need more than just the key. namely:

Full SLIC table in BIOS
OEM certificate (xrm-ms) which corresponds with OEMID and OEMTableID (Windows Marker) in SLIC table.
OEM-SLP product key

(btw I am stuck trying to read the the acpi table )

update: the below code gave me something which DOES have MSFT in it, but everything is in a string wtith tons of unrecognised characters.

   cat /sys/firmware/acpi/tables/SLIC > SLIC.dat

update:

Cool, I have got this:

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20141107-64 [Dec 17 2014]
 * Copyright (c) 2000 - 2014 Intel Corporation
 * 
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of SLIC.dat, Wed Sep 23 23:50:13 2015
 *
 * ACPI Data Table [SLIC]
 *
 * Format: [HexOffset DecimalOffset ByteLength]  FieldName : FieldValue
 */

[000h 0000   4]                    Signature : "SLIC"    [Software Licensing Description Table]
[004h 0004   4]                 Table Length : 00000176
[008h 0008   1]                     Revision : 03
[009h 0009   1]                     Checksum : 6A
[00Ah 0010   6]                       Oem ID : "DELL  "
[010h 0016   8]                 Oem Table ID : "CBX3   "
[018h 0024   4]                 Oem Revision : 01072009
[01Ch 0028   4]              Asl Compiler ID : "MSFT"
[020h 0032   4]        Asl Compiler Revision : 00010013

we are getting there Baby

Yeah I gave it up... :(

Seems you eventually figured out how to use ‘dd’ to copy the machine’s SLIC table needed to activate to Windows. But really, you need to passthru or mirror the ACPI table in the VirtualBox environment. Isn’t there a configuration item for doing that? Even if not, you should be able to activate using the Windows Product Key on the OEM sticker on the machine instead.

The structure of the SLIC is proprietary if you ask Microsoft, and you really don’t need to know it for what you’re doing. However, we do know most of what’s in there, including that it contains an RSA certificate to validate against. Here’s the most comprehensive listing of description of the structure that I’ve been able to come across (my actual certificates blanked out):

Signature		"SLIC"
Length			0x00000176 (374)
Revision		0x01 (1)
Checksum		0xC8 (200)
OEM ID			"HPQOEM"
OEM Table ID		"SLIC-BPC"
OEM Revision		0x00000001 (1)
Creator ID		""
Creator Revision	0x00000000 (0)
OEM Public Key Structure
  Type		0x00000000 (0)
  Length	0x0000009C (156)
  Key Type	0x06 (6)
  Version	0x02 (2)
  Reserved	0x0000 (0)
  Algorithm	0x00002400 (9216)
  Magic		"RSA1"
  Bit Length	0x00000400 (1024)
  Exponent	0x00010001 (65537)
  Modulus	0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 
         	0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 
         	0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 
         	0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 
         	0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 
         	0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 
         	0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 
         	0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 0xCD 
SLIC Marker Structure
  Type		0x00000001 (1)
  Length	0x000000B6 (182)
  Version	0x00020000 (131072)
  OEM ID	"HPQOEM"
  OEM Table ID	"SLIC-BPC"
  Windows Flag	"WINDOWS "
  SLIC Ver	0x00020001 (v2.1)
  Reserved	0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Signature	0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 
         	0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 
         	0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 
         	0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF
         	0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 
         	0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 
         	0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF
         	0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF 0xEF

This system is used by Windows XP, Vista, and 7. Starting with Windows 8, a newer structure was developed. Windows XP in particular may also validate the OEM manufacturer’s name in other ACPI entries as well!

Hope this is helpful for anyone else curious who comes across this post!