¿se puede averiguar si estamos en una maquina virtual?

24/10/2005 - 23:03 por jorge | Informe spam
¿hay alguna manera de que algun programa pueda averiguar de alguna forma si
se está ejecutando en una maquina real, o en una maquina virtual como vmware
o Virtual PC?

P.D.:Tengo conocimientos de programacion e incluso hice algun pinito con
ensamblador.

jorge

Preguntas similare

Leer las respuestas

#6 JM Tella Llop [MVP Windows]
25/10/2005 - 15:40 | Informe spam
Mejor casi, si preguntas de programacion de este server. es que no se a
que nivel, etc, para que puedas retomarlo. Yo como sigo en la brecha desde
siempre, pero la programacion la tomo solo como hobby, no suelo acudir a
ninguna pagina y sigo con mis manuales de siempre...

Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna clase,
y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"Leonardo Daniel Ulanosky" wrote in message
news:
Muy interesante, tu propuesta.. y me has hecho sentir nostalgia.
Yo llegué a ver mucho de programación en Assembler, -creo
que no hay ni un foro ya para eso ya- manejaba de todo
hasta que salió W95, y ahi, si apareció un entorno gráfico serio
que me obligó por el trabajo a discontinuar todo aquello...
-el masm y el c++ de borland v3.1 fueron mis herramientas
hasta allá por el 94-

Se que el C del visual estudio u otros, te permite programar
en asm, pero me recomendarías un link o algo, para poder
volver a re-entrar en ese tema y poder al menos probar lo
que sugieres.?

Saludos y gracias.


"JM Tella Llop [MVP Windows]" escribió en el mensaje
news:uumqd$
Se puede perfectamente por el software llegar a saber esto.

He visto varios trucos de programacion pero que me parecen chapuceros:
realizar un programa en C:, situar un manejador de excpeciones y ejeuctar
operaciones no validas -y privilegiadas- analizando posteriormente el
codigo atrapado en el manejador. Esto codigos, en ciertas instrucciones
tan simples como las IN / OUT normalmente reciben codigos de error
diferentes a los que realmente se darian en un sistema operativo en una
maquina real.

La manera mas elegante por parte del software de hacerlo, sería si
tuviesemos una instruccion no privilegiada (es decir, de las que se
pueden ejecutar en modo user -ring3- y que por tanto no disparen ningun
manejador de excepcion) y que esta nos devolviese datos que fuesen
diferentes en una maquina real de una maquina virtual. Aunque no se si
puede haber mas, al menos la instruccion SIDT cumple las premisas
anteriores. Esta instruccion nos devuelve el contenido del registro de la
'interrupt descriptor table' (IDTR).

Como solamente hay un registro IDTR y en el caso de una maquina virtual,
hay al menos dos sistemas operativos en ejecucion concurrentemente (el
host y el invitado) la maquina virtual necesita reasignar el IDTR del
sistema operativo invitado para no entrar en conflictos con la maquina
host. En este caso, cuando nuestro programa de prueba ejecute una
instruccion SIDT, la cual, al no ser privilegiada no provocará una
excepcion (que atrape la maquina virtual y por tanto pueda falsearnos el
resultado dandonos el original), y por tanto recibiremos un valor que al
analizarlo podremos comprobar que no es el esperado en una maquina
"real".

Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna clase,
y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"jorge" wrote in message
news:
¿hay alguna manera de que algun programa pueda averiguar de alguna forma
si se está ejecutando en una maquina real, o en una maquina virtual como
vmware o Virtual PC?

P.D.:Tengo conocimientos de programacion e incluso hice algun pinito con
ensamblador.

jorge











Respuesta Responder a este mensaje
#7 JM Tella Llop [MVP Windows]
25/10/2005 - 15:57 | Informe spam
Quise decir...

Mejor casi, si preguntas EN LOS GRUPOS de programacion de este server.



joder... que me comí la mitad de la frase

Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna clase,
y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"JM Tella Llop [MVP Windows]" wrote in message
news:
Mejor casi, si preguntas de programacion de este server. es que no se
a que nivel, etc, para que puedas retomarlo. Yo como sigo en la brecha
desde siempre, pero la programacion la tomo solo como hobby, no suelo
acudir a ninguna pagina y sigo con mis manuales de siempre...

Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna clase,
y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"Leonardo Daniel Ulanosky" wrote in message
news:
Muy interesante, tu propuesta.. y me has hecho sentir nostalgia.
Yo llegué a ver mucho de programación en Assembler, -creo
que no hay ni un foro ya para eso ya- manejaba de todo
hasta que salió W95, y ahi, si apareció un entorno gráfico serio
que me obligó por el trabajo a discontinuar todo aquello...
-el masm y el c++ de borland v3.1 fueron mis herramientas
hasta allá por el 94-

Se que el C del visual estudio u otros, te permite programar
en asm, pero me recomendarías un link o algo, para poder
volver a re-entrar en ese tema y poder al menos probar lo
que sugieres.?

Saludos y gracias.


"JM Tella Llop [MVP Windows]" escribió en el
mensaje news:uumqd$
Se puede perfectamente por el software llegar a saber esto.

He visto varios trucos de programacion pero que me parecen chapuceros:
realizar un programa en C:, situar un manejador de excpeciones y
ejeuctar operaciones no validas -y privilegiadas- analizando
posteriormente el codigo atrapado en el manejador. Esto codigos, en
ciertas instrucciones tan simples como las IN / OUT normalmente reciben
codigos de error diferentes a los que realmente se darian en un sistema
operativo en una maquina real.

La manera mas elegante por parte del software de hacerlo, sería si
tuviesemos una instruccion no privilegiada (es decir, de las que se
pueden ejecutar en modo user -ring3- y que por tanto no disparen ningun
manejador de excepcion) y que esta nos devolviese datos que fuesen
diferentes en una maquina real de una maquina virtual. Aunque no se si
puede haber mas, al menos la instruccion SIDT cumple las premisas
anteriores. Esta instruccion nos devuelve el contenido del registro de
la 'interrupt descriptor table' (IDTR).

Como solamente hay un registro IDTR y en el caso de una maquina virtual,
hay al menos dos sistemas operativos en ejecucion concurrentemente (el
host y el invitado) la maquina virtual necesita reasignar el IDTR del
sistema operativo invitado para no entrar en conflictos con la maquina
host. En este caso, cuando nuestro programa de prueba ejecute una
instruccion SIDT, la cual, al no ser privilegiada no provocará una
excepcion (que atrape la maquina virtual y por tanto pueda falsearnos el
resultado dandonos el original), y por tanto recibiremos un valor que al
analizarlo podremos comprobar que no es el esperado en una maquina
"real".

Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna clase,
y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"jorge" wrote in message
news:
¿hay alguna manera de que algun programa pueda averiguar de alguna
forma si se está ejecutando en una maquina real, o en una maquina
virtual como vmware o Virtual PC?

P.D.:Tengo conocimientos de programacion e incluso hice algun pinito
con ensamblador.

jorge















Respuesta Responder a este mensaje
#8 jorge
25/10/2005 - 18:36 | Informe spam
jodó petaca!. eso me pasa por preguntar.

muchas gracias :)

jorge


"JM Tella Llop [MVP Windows]" escribió en el mensaje
news:uumqd$
Se puede perfectamente por el software llegar a saber esto.

He visto varios trucos de programacion pero que me parecen chapuceros:
realizar un programa en C:, situar un manejador de excpeciones y ejeuctar
operaciones no validas -y privilegiadas- analizando posteriormente el
codigo atrapado en el manejador. Esto codigos, en ciertas instrucciones
tan simples como las IN / OUT normalmente reciben codigos de error
diferentes a los que realmente se darian en un sistema operativo en una
maquina real.

La manera mas elegante por parte del software de hacerlo, sería si
tuviesemos una instruccion no privilegiada (es decir, de las que se pueden
ejecutar en modo user -ring3- y que por tanto no disparen ningun manejador
de excepcion) y que esta nos devolviese datos que fuesen diferentes en una
maquina real de una maquina virtual. Aunque no se si puede haber mas, al
menos la instruccion SIDT cumple las premisas anteriores. Esta instruccion
nos devuelve el contenido del registro de la 'interrupt descriptor table'
(IDTR).

Como solamente hay un registro IDTR y en el caso de una maquina virtual,
hay al menos dos sistemas operativos en ejecucion concurrentemente (el
host y el invitado) la maquina virtual necesita reasignar el IDTR del
sistema operativo invitado para no entrar en conflictos con la maquina
host. En este caso, cuando nuestro programa de prueba ejecute una
instruccion SIDT, la cual, al no ser privilegiada no provocará una
excepcion (que atrape la maquina virtual y por tanto pueda falsearnos el
resultado dandonos el original), y por tanto recibiremos un valor que al
analizarlo podremos comprobar que no es el esperado en una maquina "real".

Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna clase,
y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"jorge" wrote in message
news:
¿hay alguna manera de que algun programa pueda averiguar de alguna forma
si se está ejecutando en una maquina real, o en una maquina virtual como
vmware o Virtual PC?

P.D.:Tengo conocimientos de programacion e incluso hice algun pinito con
ensamblador.

jorge







Respuesta Responder a este mensaje
#9 Leonardo Daniel Ulanosky
26/10/2005 - 19:34 | Informe spam
Claro... quedó claro.!! entendí.!!
: ) Gracias amigo.!
Saludos Daniel.

"JM Tella Llop [MVP Windows]" escribió en el mensaje
news:
Quise decir...

Mejor casi, si preguntas EN LOS GRUPOS de programacion de este
server.



joder... que me comí la mitad de la frase

Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna clase,
y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"JM Tella Llop [MVP Windows]" wrote in message
news:
Mejor casi, si preguntas de programacion de este server. es que no se
a que nivel, etc, para que puedas retomarlo. Yo como sigo en la brecha
desde siempre, pero la programacion la tomo solo como hobby, no suelo
acudir a ninguna pagina y sigo con mis manuales de siempre...

Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna clase,
y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"Leonardo Daniel Ulanosky" wrote in message
news:
Muy interesante, tu propuesta.. y me has hecho sentir nostalgia.
Yo llegué a ver mucho de programación en Assembler, -creo
que no hay ni un foro ya para eso ya- manejaba de todo
hasta que salió W95, y ahi, si apareció un entorno gráfico serio
que me obligó por el trabajo a discontinuar todo aquello...
-el masm y el c++ de borland v3.1 fueron mis herramientas
hasta allá por el 94-

Se que el C del visual estudio u otros, te permite programar
en asm, pero me recomendarías un link o algo, para poder
volver a re-entrar en ese tema y poder al menos probar lo
que sugieres.?

Saludos y gracias.


"JM Tella Llop [MVP Windows]" escribió en el
mensaje news:uumqd$
Se puede perfectamente por el software llegar a saber esto.

He visto varios trucos de programacion pero que me parecen chapuceros:
realizar un programa en C:, situar un manejador de excpeciones y
ejeuctar operaciones no validas -y privilegiadas- analizando
posteriormente el codigo atrapado en el manejador. Esto codigos, en
ciertas instrucciones tan simples como las IN / OUT normalmente reciben
codigos de error diferentes a los que realmente se darian en un sistema
operativo en una maquina real.

La manera mas elegante por parte del software de hacerlo, sería si
tuviesemos una instruccion no privilegiada (es decir, de las que se
pueden ejecutar en modo user -ring3- y que por tanto no disparen ningun
manejador de excepcion) y que esta nos devolviese datos que fuesen
diferentes en una maquina real de una maquina virtual. Aunque no se si
puede haber mas, al menos la instruccion SIDT cumple las premisas
anteriores. Esta instruccion nos devuelve el contenido del registro de
la 'interrupt descriptor table' (IDTR).

Como solamente hay un registro IDTR y en el caso de una maquina
virtual, hay al menos dos sistemas operativos en ejecucion
concurrentemente (el host y el invitado) la maquina virtual necesita
reasignar el IDTR del sistema operativo invitado para no entrar en
conflictos con la maquina host. En este caso, cuando nuestro programa
de prueba ejecute una instruccion SIDT, la cual, al no ser privilegiada
no provocará una excepcion (que atrape la maquina virtual y por tanto
pueda falsearnos el resultado dandonos el original), y por tanto
recibiremos un valor que al analizarlo podremos comprobar que no es el
esperado en una maquina "real".

Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna clase,
y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"jorge" wrote in message
news:
¿hay alguna manera de que algun programa pueda averiguar de alguna
forma si se está ejecutando en una maquina real, o en una maquina
virtual como vmware o Virtual PC?

P.D.:Tengo conocimientos de programacion e incluso hice algun pinito
con ensamblador.

jorge



















email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida