Programación General > ASM (Ensamblador)
Mbr Disco Duro
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.
jaumegs:
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:
--- 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.
--- Fin de la cita ---
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:
Alpha_:
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?
jaumegs:
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 --- Des. Longitud Descripción0x00 3 bytes Instrucción de salto al programa de arranque0x03 8 bytes Identificación del sistema (fabricante)0x0B 1 palabra Número de bytes por sector0x0D 1 byte Número de sectores por cluster0x0E 1 palabra Número de sectores reservados (con BootSector)0x10 1 byte Número de copias de la FAT0x11 1 palabra Número máximo de entradas del directorio raíz0x13 1 palabra Número total de sectores0x15 1 byte Identificador del disco (F0 para 3 ½ y 1.44MB)0x16 1 palabra Número de sectores para cada FAT0x18 1 palabra Número de sectores por pista0x1A 1 palabra Número de cabezas/caras0x1C 1 palabra Número de sectores ocultos0x20 4 byte Número total de sectores (si 0x13 es 0)0x24 1 byte Número de unidad física (sólo discos duros)0x25 1 byte Reservado0x26 1 byte Byte de marca con el valor 0x290x27 4 bytes Número de serie del disco0x2B 11 bytes Nombre del disco (NO NAME si no tiene)0x36 5 bytes Tipo de FAT: FAT12 o FAT16... ... ............ ... Rutina de Arranque (Bootstrap-Loader)
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
Navegación
[#] Página Siguiente
Ir a la versión completa