¿Que método utilizas para detectar VirtualPC?
Revisé los otros sources en C/C++ para ver si me inspiraba, pero utilizaban técnicas algo profesionales para el pobre compilador de VB6, seguramente hay otra manera para detectar VirtualPC con VB6 pero esta es una de las más fáciles:
Con la ayuda de los Script WMI, hacemos un volcado de información sobre cada disco duro instalado en el equipo, concretamente buscamos 3 variables: Caption, Model y PNP DeviceID. En un equipo físico obtendremos nombres relativos al fabricante y modelo de nuestro HDD, mientras que en VirtualPC obtendremos nombres parecidos a estos:
Virtual HD, IDE\DISKVIRTUAL01_, etc...
Así que recopilamos toda la información en una sola variable y buscamos el string: "VIRTUAL" en su interior, hacemos una comparación y ya tenemos nuestro anti-VirtualPC terminado!
Ueeee, ahora... ¿me das el source?
Aquí está el modulo principal:
Código
''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Program: Anti-VirtualPC 1.0 ' Coder: MadAntrax ' Web: foro.elhacker.net ' Date: 30/06/08 ' ' Programa que detecta si nuestro malware ' se ejecuta en la máquina virtual: Virtual PC ' permitiendo finalizar el proceso de nuestro ' malware :) ' ' Usar la función IsVirtualPCPresent() As Boolean ' Detecta el nombre, modelo y driver del HD para determinar ' si nos encontramos en VirtualPC ' ' Original idea: MadAntrax ' Referencias: http://www.microsoft.com/technet/scriptcenter/scripts/storage/disks/drives/stdvvb19.mspx?mfr=true ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Function IsVirtualPCPresent() As Boolean Dim DetectVirtualPC As String Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set HDS = WMI.ExecQuery("Select * from Win32_DiskDrive") DetectVirtualPC = "" For Each objHDS In HDS DetectVirtualPC = DetectVirtualPC & objHDS.Caption & objHDS.Model & objHDS.PNPDeviceID Next If InStr(UCase(DetectVirtualPC), "VIRTUAL") <> 0 Then IsVirtualPCPresent = True Else IsVirtualPCPresent = False End If End Function
y para llamarlo, podemos usar algo así:
Código
Sub Main() If IsVirtualPCPresent = True Then MsgBox "VirtualPC: Detectado" End End If 'Your Code Here End Sub
Saludos!!
EDITADO: Parece ser que esta misma función detecta de forma correcta VirtualPC 2007 y VMWare (los 2 software de virtualización más usados). Así que esta función sirve para los 2