Showing posts with label Virtual machines. Show all posts
Showing posts with label Virtual machines. Show all posts

Friday, 4 March 2011

All Boot disk

Today one of my colleagues showed me this great site where you can download all the boot disk images from MSDOS 3.3 to Windows XP. Then you can use these images to start up a virtual machine. These ISO CD-ROM images have been created to allow you to boot your computer from a CD for the purpose of repairing various issues. The CD images are an exact copy of the boot diskette images. There is no advantage to using these ISO images over a diskette image. Some newer computers do not have a floppy drive installed, so these images allow for compatibility of newer machines.
Great job!.

Thursday, 6 August 2009

Saber si nuestra aplicación se ejecuta dentro de una máquina virtual

En éste post, os muestro el código de Nico Bendlin para saber si nuestra aplicación se está ejecutando dentro de una máquina virtual o no. El código es bastante simple pero está en ensamblador. Si nos fijamos en el código podemos ver que se utiliza la instrucción "IN" para escribir en un puerto concreto. Ésta función solo la utilizan las máquinas virtuales, por lo tanto el programa intenta utilizar la instrucción, si puede valida que está dentro de la máquina virtual en otro caso no. He encontrado varios métodos por la red uno de ellos en CodeProject, con una muy buena explicación del funcionamiento del método. La mayoría suelen funcionar, pero como comentan ellos, ésto solo són funciones demo, sin ninguna validación por parte de los fabricantes de máquinas virtuales. En los dos métodos que os pondré a continuación se utiliza la misma función "IN" para saber si estamos dentro o no, pero otro día puede cambiar la funcionalidad y puede que no nos sirvan los métodos.

unit VMWare;

interface

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

type
    TForm3 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        Button2: TButton;
        Edit2: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
    private
        { Private declarations }
    public
        { Public declarations }
    end;

var
    Form3: TForm3;

function IsInsideVMWare: Boolean;
function IsVMwarePresent(): LongBool; stdcall;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
    Edit1.text := 'No';
    if IsVMwarePresent then
        Edit1.text := 'Yes';
end;

procedure TForm3.Button2Click(Sender: TObject);
begin
    Edit2.text := 'No';
    if IsInsideVMWare then
        Edit2.text := 'Yes';
end;

function IsVMwarePresent(): LongBool; stdcall;
begin
    Result := False;
{$IFDEF CPU386}
    try
        asm
            mov     eax, 564D5868h
            mov     ebx, 00000000h
            mov     ecx, 0000000Ah
            mov     edx, 00005658h
            in      eax, dx
            cmp     ebx, 564D5868h
            jne     @@exit
            mov     Result, True
    @@exit:
        end;
    except
        Result := False;
    end;
{$ENDIF}
end;

function IsInsideVMWare: Boolean;
var
    rc: Boolean;
begin
    rc := False;
    try
        asm
          push   edx
          push   ecx
          push   ebx
          mov    eax, 'VMXh'
          mov    ebx, 0
          mov    ecx, 10
          mov    edx, 'VX'
          in     eax, dx
          cmp    ebx, 'VMXh'
          setz   [rc]
          pop    ebx
          pop    ecx
          pop    edx
        end;
    except
        on EPrivilege do
            rc := False;
    end;
    Result := rc;
end;

end.

Si ejecutamos el programa y estamos dentro de una máquia virtual, podemos realizar el test:



  • Enlaces de interés:
Sítio de descargas de Nico Bendlin.
VMWare Torry's 1.
VMWare Torry's 2.
Detect if your program is running inside Virtual Machine.

Thursday, 12 March 2009

Creando máquinas virtuales para VMware Player con EasyVMX

Si queremos crear una máquina virtual de VMware sin tener el VMware Server (que es la herramienta que nos permite generar un proyecto de la nada, solo con el CD de instalación del Sistema Operativo), lo podemos hacer con una herramienta diponible en la red -> EasyVMX. Desde esta web, podemos parametrizar nuestra máquina virtual, y luego descargamos el fichero de configuración de VMware, el cual podremos arrancar con el VMware Player e iniciar nuestra instalación.

Desde EasyVMX, nos aparece un pequeño formulario donde escoger nuestro SO, la memoria necesaria, la capacidad del HD y otros dispositivos como los puertos (serie, paralelo, USB), tarjeta de sonido, etc. Una vez configurado todo, hacemos el submit del formulario y nos aparecerá una zona de descarga con un zip y dentro todos los archivos necesarios para poder crear nuestra máquina virtual arrancando el VMware Player.



Un ejemplo de configuración, por ejemplo para instalar el Windows 7 (tengo pendiente un post para mostraros la instalación que tengo hecha del Windows 7 en una máquina virtual, de momento solo os puedo comentar que el SO promete!).




Una vez descargado el fichero, vemos que en el contenido de este aparece ya nuestra máquina virtual parametrizada igual que si lo hubiésemos hecho con el VMware Server, de esta manera solo hay que meter el CD del SO en la unidad de CD-ROM, y arrancar la máquina virtual. La instalación funcionará automáticamente.