Moving Grave1:(MG#_1.X01):21/11/1995 << Back To Moving Grave1


MBR (Master Boot Record) ************************ 1. El Registro de arranque del disco ------------------------------------ Como todos o casi todos saben, el primer sector del FD o HD esta reserva- do para el registro de arranque (Boot), cuyas interioridades vamos a analizar a continucación. Los 3 primeros bytes del registro de arranque son una instrucción del en- samblador que salta a otra posición del registro de arranque donde residen las rutinas de carga. (JMP SHORT) ────────> /~~~~~~~~~~~~~~~~~~~~~~~~~~~~\ 0 1 2 V 510 511 ┌───┬───┬───┬──┬────┬────┬─────────────┬───┬───┬───┬────────────┬──┬───┬───┐ │ 1 │ 2 │ 3 │ │ │ │ │ │ │ │ │ │511│512│ └───┴───┴───┴──┴────┴────┴─────────────┴───┴───┴───┴────────────┴──┴───┴───┘ │ │ ^~~~~~~~~~~~V~~~~~~~~~~~~^ ^~~~~~~~~~~~~V~~~~~~~~~~~~^ │ │ | | Parámetro Rutina de Carga | | ~~~~VV~~~~~ ~~~V~~~ Salto hacia la dirección Fin del Registro de Arranque de la rutina de carga. (55 AA hex) Nota: En un boot normal (lease no infectado) generalmente la dirección de car- ----- ga del boot se encuentra en la dirección 7C00h. Si uno modifica los dos ultimos byte del boot (55 AA hex) el D.O.S. lo inter- pretara como NO VALIDO. El tercer byte es simplemente un NOP o sea 90h A continuación, a partir del cuarto byte, se encuentra pasa de parámetro del registro de arranque, que contienela información que comentamos en el si- guiente apartado. 1.1 El proceso de arranque -------------------------- Tras los chequeos internos y la reinicialización, el cargador pasa el con- trol al registro de arranque del disco, que contiene las rutinas de puesta en marcha. Dichas rutinas se encargan de buscar en el disco los archivos de sis- tema IO.SYS y MSDOS.SYS (en el caso del D.O.S de IBM serán IBMIO.COM e IBMDOS. COM) y preceden a cargarlos en su caso. 1.2 Parámetros del disco rigido de arranque ------------------------------------------- El registro de arranque contiene en la posición que hemos comentado los parámetros de la tabla, cuyos valores usales son los siguientes: Desplaza- │ Byte de │ Número │ miento │ Comienzo │ de Bytes │ PARAMETROS ──────────┼──────────┼──────────┼──────────────────────────────────────────── 00003 │ 4 │ 8 │ Identificativo del sistema 00011 │ 12 │ 2 │ Número de bytes por sector 00013 │ 14 │ 1 │ Número de sectores por clúster 00014 │ 15 │ 2 │ Número de sectores reservados 00016 │ 17 │ 1 │ Número de copias de la F.A.T. 00017 │ 18 │ 2 │ Número de de elementos del directorio raiz 00019 │ 20 │ 2 │ Número total de sectores en el disco 00021 │ 22 │ 1 │ Identificativo de formato 00022 │ 23 │ 2 │ Número de sectores por F.A.T. 00024 │ 25 │ 2 │ Número de sectores por pista 00026 │ 27 │ 2 │ Número de caras 00028 │ 29 │ 2 │ Número de sectores especiales reservados 00032 │ 33 │ 4 │ Número total de sectores en el disco 00036 │ 37 │ 2 │ Número de unidad fisica 00038 │ 39 │ 1 │ Asignatura Extendida del Boot Record 00039 │ 40 │ 4 │ Número de serie 00043 │ 44 │ 11 │ Nombre del disco (Volumen Label) 00054 │ 55 │ 8 │ Identificación del sistema de archivos 1.3 Explorando el registro de arranque -------------------------------------- Utilizando el DEBUG es posible visualizar las instrucciones de carga de los 3 primeros byte del registro de arranque. Cargue un diskette formateado en la unidad y teclee: DEBUG L0001 (Cargar el resitro de arranque) U0L2 (Desensamblar y listar los bytes 1 y 2). El resultado de esta última operación será una instrucción JMP (jump) que indica un salto a una posición de memoria (ejemplo: 2E). Teclee U 2E (para desensamblar y listar los bytes 2E y siguientes, que serán las rutinas de carga). -=-=-=-=-=-=-=-=-=-=-=-=- END OF THIS PART