• Domingo 22 de Diciembre de 2024, 18:23

Autor Tema:  Mbr Disco Duro  (Leído 2859 veces)

malcom

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Mbr Disco Duro
« en: Miércoles 7 de Diciembre de 2005, 03:00 »
0
Hola! podria de alguna manera reemplazar o modificar el mbr de mi disco duro 'C' con un programa hecho en nasm?. Tengo windows xp SP1.

Podria hacer esto si aprendo assembler de 32 bits?  :comp:

Gracias de Antemano.

jaumegs

  • Miembro MUY activo
  • ***
  • Mensajes: 110
    • Ver Perfil
Re: Mbr Disco Duro
« Respuesta #1 en: Miércoles 7 de Diciembre de 2005, 08:10 »
0
Teóricamente por lo que se, para programar el sector de arranque de un disco es necesario usar el procesador en modo 16bits. Despues de eso ya se puede arrancar el modo protegido del ensamblador(32 bits).

Si se hace del mismo modo que con un disquete, es sencillo, solo has de cargar en el sector 0 del disco duro el programa que quieras que te carge, con algunas peculiaridades...

P.D.- Da igual el sistema operativo que estés utilizando... Al iniciarse el ordenador leerá el MBR lo primero, y cargará el programa que haya en el, "substituyendo" al sistema operativo que tuvieras instalado.

SALUDOS

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Mbr Disco Duro
« Respuesta #2 en: Miércoles 7 de Diciembre de 2005, 11:22 »
0
Cita de: "malcom"
Hola! podria de alguna manera reemplazar o modificar el mbr de mi disco duro 'C' con un programa hecho en nasm?. Tengo windows xp SP1.

Podria hacer esto si aprendo assembler de 32 bits?  :comp:

Gracias de Antemano.
Si, como poder hacerlo podes. ¿Existe alguna razon para hacerlo?

Podes hacerlo desde Windows usando su API, tene en cuenta que si lo haces mal jodes el BOOT.

 :devil:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Alpha_

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Mbr Disco Duro
« Respuesta #3 en: Miércoles 7 de Diciembre de 2005, 15:31 »
0
Me uno al pedido... ya sabía que se puede hacer, pero quisiera que me tiraran algo de info.. como por ejemplo, qué cosas debería tener en cuenta, qué cosas puedo y no puedo usar (interrupciones de BIOS? de DOS?, el tamaño que puede ocupar como máximo el código, etc).

Nunca lo hice y me resulta un proyecto interesante para aprender.

Y dicho sea de paso.. cómo podría ir testeando el código sin tener que grabarlo en el MBR antes?
Alpha
http]

jaumegs

  • Miembro MUY activo
  • ***
  • Mensajes: 110
    • Ver Perfil
Re: Mbr Disco Duro
« Respuesta #4 en: Miércoles 7 de Diciembre de 2005, 18:12 »
0
Bueno, generalmente depende del sistema de archivos que uses... si es FAT12 o 16 o 32 PERFECTO, si es NTFS.... pues realmente no se como se hace...

Bueno, si es FAT el sector de arranque (BOOTSECTOR) contiene cierta información:
Código: Text
  1.  
  2. Des.  Longitud  Descripción
  3. 0x00  3 bytes  Instrucción de salto al programa de arranque
  4. 0x03  8 bytes  Identificación del sistema (fabricante)
  5. 0x0B  1 palabra  Número de bytes por sector
  6. 0x0D  1 byte  Número de sectores por cluster
  7. 0x0E  1 palabra  Número de sectores reservados (con BootSector)
  8. 0x10  1 byte  Número de copias de la FAT
  9. 0x11  1 palabra  Número máximo de entradas del directorio raíz
  10. 0x13  1 palabra  Número total de sectores
  11. 0x15  1 byte  Identificador del disco (F0 para 3 ½ y 1.44MB)
  12. 0x16  1 palabra  Número de sectores para cada FAT
  13. 0x18  1 palabra  Número de sectores por pista
  14. 0x1A  1 palabra  Número de cabezas/caras
  15. 0x1C  1 palabra  Número de sectores ocultos
  16. 0x20  4 byte  Número total de sectores (si 0x13 es 0)
  17. 0x24  1 byte  Número de unidad física (sólo discos duros)
  18. 0x25  1 byte  Reservado
  19. 0x26  1 byte  Byte de marca con el valor 0x29
  20. 0x27  4 bytes  Número de serie del disco
  21. 0x2B  11 bytes  Nombre del disco (NO NAME si no tiene)
  22. 0x36  5 bytes  Tipo de FAT: FAT12 o FAT16
  23. ...  ...  .........
  24. ...  ...  Rutina de Arranque (Bootstrap-Loader)
  25.  

Bueno, esto es necesario si quereis conservar el formato existente... (recomiendo leer documentación sobre la FAT)

Esto ha de estar presente siempre en el BootSector, sino os habreis cargado la FAT... bueno, después de esto va el programa que querais....

Que podeis usar en el?... pues todo, pero solo código de 16bits. Claro está que no se pueden usar interrupciones del DOS, mas que nada porque siempre se arranca el programa del BootSector antes que el SO, asi que si modificais el BootSector de vuestro disco duro... y es el único que teneis, si no haceis una copia del que habia antes de modificarlo, ya no podreis cargar ni WINDOWS ni nada...

Que tamaño puede tener?... generalmente 512bytes, pero si modificas el offset 0Eh(nº sectores reservados) podreis hacer que ocupe el número de sectores que querais... asi que se puede hacer un programa de 2Mb, 3Mb, 500Mb... ya dependerá de la capacidad de vuestro disco duro, y claro está... de la RAM...

PD IMPORTANTE- Si modificas el BootSector de tu disco duro principal(es el que arranca el SO que usas) y no sabes como recuperarlo luego... tendras que formatear el disco i reinstalar el SO. Así que recomiendo hacer una copia de este sector antes de tocar nada (Con el winhex por ejemplo) o practicar con disketes, que el método es el mismo.

Bueno, si os interesa mas información podria hacer un MINImanual (y digo mini porque mis conocimientos de ASm... :P , pero podria introducir datos acerca el sistema de archivos FAT que este si que me lo conozco)

SALUDOS

malcom

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Mbr Disco Duro
« Respuesta #5 en: Miércoles 7 de Diciembre de 2005, 20:22 »
0
Ok, yo ya logre hacer un programa, ponerlo en el sector 0 de un diskette y que mi pc arrancara con ese programa. Ahora quiero saber solo por cultura general como ponerlo en mi disco duro.

Mas adelante me gustaria saber como colocar un menu en el arranque que me diga por ejemplo:  

1)Iniciar windows
2)Iniciar programa que colocaste en el arranque

algo asi.

Bueno por ahora voy a intentar hacer un backup del sector 0 de mi disco duro antes de ponerme a intentar algo.

Gracias por la ayuda!

bob esponja

  • Miembro MUY activo
  • ***
  • Mensajes: 411
    • Ver Perfil
    • http://marianoguerra.blogspot.com
Re: Mbr Disco Duro
« Respuesta #6 en: Jueves 8 de Diciembre de 2005, 19:24 »
0
hacela mas facil:

http://www.gnu.org/software/grub/
http://freshmeat.net/projects/lilo

gestores de arranque.
en un momento yo tuve 5 sistemas operativos en un disco y los elegia con esto.
son open source asi que podes leer el codigo