[Source] IsVirtualPCPresent() - Sistema AntiVirtualPC

Iniciado por Mad Antrax, 30 Junio 2008, 21:34 PM

0 Miembros y 2 Visitantes están viendo este tema.

Mad Antrax

Tatatachan!!... aquí vuelvo con mi tercera función para los "anti's" en VB6, en este caso me he metido con la máquina virtual de Microsoft: VirtualPC 2007 Este método me gusta bastante porque es el primero que ha sido desarrollado íntegramente por mí, y de momento no he visto nadie que detecte un VirtualPC de la misma forma, empecemos...

¿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 (vb) [Seleccionar]
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 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 (vb) [Seleccionar]
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

>:D
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

‭‭‭‭jackl007

excelente, yo ya iba a postear este tipo de cosillas, me adelantaste.
(me iba a poner a mirar lares del mismo modo).
el de VMware es mas sencillo se puede implementar del mismo modo que el virtual, el registro contiene ese tipo de info, o sino el proceso.
es cosa de curiosiar y probar.
al final se completa un modulo llamado: antiVirtualMachines, donde contenta todos los scripts. :D

‭‭‭‭jackl007

por cierto incluso el mismo code funciona con VMware.
(es multiWare el codigo) ;D

carlitos.dll

lo encuentro muy creativo, gracias por el source. ¿Una consulta? ¿Para qué evitar VirtualPC?

‭‭‭‭jackl007

Cita de: carlitos.dll en 30 Junio 2008, 22:06 PM
¿Para qué evitar VirtualPC?

Si programas malware es muy util, ya que evitaras en parte de que tu "creacion" sea estudiada por personas que trabajan para los antivirus.
de ese modo sera indetectable (salvo que lo prueben en alguna pc o la VM sea distinta y no se evada).

cobein

Muy interesante, me preguntaba si no hay una manera un poco mas "general" de detectar este tipo de soft?
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

Novlucker

CitarMuy interesante, me preguntaba si no hay una manera un poco mas "general" de detectar este tipo de soft?

No creo que sea necesario, ya que este "tipo de soft" es contado con los dedos  :P
Basta un par de rutinas de este tipo para solucionar el problema

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Mad Antrax

Cita de: jackl007 ツ en 30 Junio 2008, 21:48 PM
por cierto incluso el mismo code funciona con VMware.
(es multiWare el codigo) ;D

Vaya, pues me ahorraste tiempo. Estaba instalando un Windows XP en un VMWare para probar, pero ya no hace falta.

Edito el primer post para que la gente sepa que sirve para VirtualPC, VMWare y posiblemente algún otro software de Virtualización, lástima que la función se llama IsVirtualPCPresent() y no IsVirtualEnvironmentPresent() o algo por el estilo, en fin...

Con esto completamos:

IsAnubisPresent() = Detects Anubis SandBox.
IsSandboxiePresent() = Detects Sandboxie SandBox.
IsVirtualPCPresent() = Detects VirtualPC 2007 & VMWare & ... Software.

Saludos y gracias por los comentarios.!!
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

Karcrack

Muy bueno Mad... ya estan a salvo nuestras aplicaciones de mirones >:D

Ahora solo falta probar a ver si tambien funciona con otras herramientas de virtualizacion... como : QEMU...

krackwar

Mi blog
Bienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran.
El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.