.fw files.wiki
ROM

Archivos ROM

Imagen ROM genérica

Un archivo .ROM suele ser un firmware sin procesar, una BIOS, una option-ROM o una imagen de cartucho de emulador copiada de memoria de solo lectura.

Generic firmware or BIOS ROM image

Más común
Desarrollador
Various hardware vendors
Categoría
Archivos de sistema
Tipo MIME
application/octet-stream
Formato
Binario
Primera versión
1970
Estándar abierto
No

Video-game cartridge ROM image

Desarrollador
Various console and computer vendors
Tipo MIME
application/octet-stream
Formato
Binario
Primera versión
1976
Estándar abierto
No

Raw embedded-device flash/ROM dump

Desarrollador
Various embedded-system vendors
Tipo MIME
application/octet-stream
Formato
Binario
Primera versión
1970
Estándar abierto
No

IBM PC expansion Option ROM image

Desarrollador
IBM / PC-compatible hardware vendors
Tipo MIME
application/octet-stream
Formato
Binario
Bytes mágicos
55 AA
Primera versión
1981
Última versión
PCI Firmware 3.3
Estándar abierto
Sí

UEFI option ROM image

Desarrollador
UEFI Forum / PCI-SIG hardware vendors
Tipo MIME
application/octet-stream
Formato
Binario
Bytes mágicos
55 AA
Primera versión
2005
Última versión
UEFI 2.10 / PCI Firmware 3.3
Estándar abierto
Sí

Macintosh ROM image

Desarrollador
Apple
Tipo MIME
application/octet-stream
Formato
Binario
Primera versión
1984
Estándar abierto
No

Visor de texto .ROM en línea

Leyendo el archivo…

¿Qué es un archivo .ROM?

Un archivo ROM, contrariamente a la creencia común, no es un formato de archivo exacto. En su lugar, esta extensión se usa para denominar una extensión no especializada de archivos de memoria de solo lectura volcados o creados. Por lo general, un archivo designado con .ROM corresponde a firmware o BIOS almacenado en placas base, tarjetas gráficas, unidades ópticas, routers de red, placas embebidas y otros equipos fabricados por varios fabricantes. El contenido suele ser el dato en bruto sin un contenedor, así que cualquier archivo .bin es un equivalente potencial de cualquier archivo ROM.

Los ROM también se usan ampliamente en emulación. Por ejemplo, los usuarios pueden encontrarse con ROM que representan volcados de chips de cartuchos de varias placas arcade, ordenadores clásicos y consolas. Existe una tendencia entre los desarrolladores de sistemas a usar extensiones como .nes, .sfc, .gb, .gba, .n64 y otras. Sin embargo, todavía se pueden encontrar algunos archivos .ROM. En cuanto a la emulación de sistemas Macintosh, existe el volcado de Apple ROM requerido en SheepShaver, Mini vMac.

Algunos tipos de archivo específicos comunes que vale la pena comentar: los ROM de opción de expansión para PC y los ROM de opción UEFI. Ambos suelen ser blobs de firmware muy pequeños para diversos equipos PCI/ISA y comienzan con los bytes 55 AA en 0. Una definición aún más amplia de .ROM se reserva para ROM de dispositivos embebidos. El contenido puede representar una partición flash, firmware, cargador de arranque, kernel comprimido, sistema de archivos raíz, calibración y cargas útiles del proveedor, etc. Debido a la ambigüedad, el archivo puede identificarse mediante el origen y el tamaño, cadenas y encabezados específicos (bytes, contenido), así como varias herramientas (como binwalk o la utilidad file).

Cómo abrir un archivo .ROM

Abrir un archivo .ROM en Windows

  1. 1 Ve a la carpeta donde está tu archivo en Explorador de archivos. Normalmente, los archivos descargados terminan en Descargas.
  2. 2 Haz doble clic en tu archivo .ROM si tienes una aplicación para archivos .rom en tu equipo. Si no se abre, pasa al paso tres.
  3. 3 Haz clic derecho en tu archivo .ROM -> selecciona Abrir con -> Elegir otra aplicación.
  4. 4 Elige HxD en la lista (Windows 11: elige Siempre). En Windows 10 -> marca "Usar siempre esta aplicación para abrir archivos .rom" y haz clic en Aceptar.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para Windows

Abrir un archivo .ROM en macOS

  1. 1 En la app Finder, localiza tu archivo .ROM.
  2. 2 Solo haz doble clic en tu archivo .ROM para abrir automáticamente el programa asociado con él.
  3. 3 ¿Necesitas otra app en tu Mac? Haz Control-clic en el archivo (o clic derecho con el mouse). En el menú emergente, selecciona Abrir con -> ImHex.
  4. 4 Si no aparece en la lista, elige Otra… y busca la aplicación manualmente.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para macOS

Abrir un archivo .ROM en Linux

  1. 1 Abre tu gestor de archivos. Según el escritorio, puede llamarse Archivos (GNOME), Dolphin (KDE Plasma), Nemo (Cinnamon) o Thunar (Xfce).
  2. 2 Haz doble clic en el archivo.
  3. 3 O elige otro programa haciendo clic derecho en el archivo -> Abrir con -> ImHex.
  4. 4 Instala ImHex (si no está instalado en tu equipo) desde el centro de software, el repositorio o Flathub.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para Linux

Abrir un archivo .ROM en Android

  1. 1 Abre Archivos u otra app de gestión de archivos.
  2. 2 En Descargas, busca el archivo .ROM y ábrelo tocándolo.
  3. 3 Se mostrará una lista de apps capaces de abrir el archivo. Toca una aplicación adecuada y pulsa Siempre para asociar de forma permanente este tipo de archivo con esta app.
  4. 4 ¿No hay ninguna app capaz de abrir este archivo? Descarga una aplicación adecuada desde Google Play Store.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para Android

Abrir un archivo .ROM en iPhone / iPad

  1. 1 Usa la app Archivos y ve a En mi iPhone, iCloud Drive o Descargas.
  2. 2 Toca el archivo .ROM que quieras abrir.
  3. 3 Si el archivo puede abrirse con una app integrada de iOS (formato compatible), se abrirá automáticamente.
  4. 4 Mantén pulsado el archivo para abrir el menú contextual -> elige Compartir -> selecciona una aplicación adecuada en la lista de apps.
  5. 5 Si no aparece esa opción, primero descarga la app desde el App Store y luego toca el documento otra vez.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para iPhone / iPad

Abrir un archivo .ROM en línea

  1. 1 Ve al visor en línea en la parte superior de esta página.
  2. 2 Arrastra el archivo hasta allí o selecciónalo, y su contenido aparecerá en la pestaña de tu navegador. El archivo no se sube.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para En línea

Más detalles sobre cómo abrir archivos .ROM

Si usas Windows, necesitas usar HxD e ImHex, ya que ambos abren el archivo directamente como bytes hexadecimales, pero no ejecutan el código. Si conoces el firmware de ese dispositivo, RetroArch puede usarse en Windows para abrir cualquier archivo de volcado de juego compatible conocido instalando el core requerido para ello. La herramienta Flashrom funciona bien con varias placas y firmware de BIOS en Windows, y también con parte del hardware de programadores, ya que son compatibles.

UEFITool, SheepShaver, UTM, ImHex en macOS permiten inspeccionar el archivo ROM en tu caso particular. ImHex permite inspección en bruto y buscar alguna información en el archivo, adivinar sus estructuras y codificarlas por colores. OpenEmu y Mini vMac son útiles para ejecutar juegos de consola y sistemas Macintosh antiguos. Además, binwalk en línea de comandos puede ser útil para extraer datos incrustados. Algunas herramientas están disponibles de forma gratuita, pero algunas versiones son comerciales y solo pueden descargarse desde la Mac App Store en macOS.

En Linux, flashrom lee y escribe chips flash compatibles. Las herramientas comunes para analizar son: UEFITool, binwalk, GHex, ImHex, objdump, objcopy. Los programas comunes usados como emuladores son: QEMU, MAME, Bochs y algunos similares.

En Android, RetroArch puede abrir varias imágenes ROM de juegos volcadas añadiendo cores, imágenes de consola compatibles en RetroArch en tu teléfono móvil.

En iOS, el programa Delta puede usarse para ejecutar algunas imágenes compatibles de consola de tu dispositivo; también se puede usar UTM con una configuración compatible adecuada del emulador. Todavía falta una aplicación universal basada en navegador con soporte para renderizar archivos .ROM. De lo contrario, se pueden usar visores hexadecimales. En caso de que el doble clic abra el archivo incorrecto sin resultado, simplemente no cambies el nombre del archivo y usa software específico para el análisis de la consola concreta.

Detalles técnicos

En su mayor parte, un archivo .rom consiste en una imagen binaria en bruto sin envoltura, un área de metadatos de tamaño fijo y una extensión de archivo con nombre fijo. En ROM genéricos, como una imagen de firmware genérica o una imagen ROM, puede que no haya ninguna secuencia de bytes mágicos en absoluto. El proceso de identificación puede realizarse mediante el tamaño del archivo, la suma de verificación, datos específicos del mapper/header, vectores de interrupción, una cadena de texto conocida y el software original para crear esa imagen. La mayoría de estos archivos se reconocen como imágenes en bruto. Un archivo de imagen .rom puede parecer igual que un archivo .bin, salvo por el nombre del archivo.

Las ROM de opción de expansión compatibles con PC son una excepción y tienen una característica muy distintiva: el inicio está formado por 55 AA en el offset 0, luego tiene un campo con el tamaño en bloques de 512 y siempre contiene un vector de inicialización; además, también puede comprobarse la corrección de su imagen. La PCI option ROM contiene un bloque de datos PCIR con identificación del tipo de imagen ROM, tipos de código y tamaño. Una sola PCI ROM puede contener más imágenes, como un número de segmentos de código de carga útil para algunos tipos de procesadores.

Las imágenes UEFI option ROM usan una envoltura similar 55 AA; sin embargo, existe la posibilidad de tener ejecutables EFI o código x86 de la vieja escuela, o ambos juntos. Normalmente, las imágenes de placas base compatibles con UEFI tienen formato de firmware de volumen con archivos FFS dentro. Las actualizaciones del proveedor pueden añadir otro nivel al empaquetado; sin embargo, el volcado flash original debería seguir siendo una colección de regiones de firmwares.

El tamaño típico va desde KB de archivos ROM de cartuchos y option ROM de tiempos antiguos hasta 8-64 MBytes de archivos ROM de placas base de PC nuevas. Los volcados flash integrados también suelen ser bastante grandes, especialmente cuando se dispone de volcados completos NOR o NAND. No existe un MIME type específico para .rom. La opción más segura es application/octet-stream.

Cómo convertir archivos .ROM

En una conversión en la que cambiar la extensión funciona, solo eso es necesario, siempre que la herramienta admita ese tipo de cambio de extensión; es decir, los bytes se mantienen igual y solo cambia la extensión, cp input.rom output.bin es todo lo que se necesita. Para convertir una imagen binaria en bruto a texto con registros de direcciones, usaremos GNU objcopy para generar cualquiera de estos: objcopy -I binary -O ihex input.rom output.hex o objcopy -I binary -O srec input.rom output.srec Aquí simplemente cambiamos el formato sin modificar realmente nuestros datos binarios en bruto, sin cambiar los detalles del dispositivo ni la información incluida en una estructura de archivo concreta.

El binwalk -e input.rom permite extraer kernels de Linux o squashfs/cramfs incrustados dentro de routers/dispositivos IoT, certificados/otros archivos y segmentos comprimidos, siempre que se encuentren firmas adecuadas. Para un volcado completo del firmware de PC, usamos UEFITool NE y UEFITool para extraer el volumen de firmware UEFI, módulos/controladores DXE, actualizaciones de microcódigo, almacenes NVRAM y módulos option ROM. Para ROM hacks, Floating IPS aplica un parche IPS/BPS al volcado correspondiente para producir la ROM parcheada.

Para convertir el código de bytes a desensamblado, volveremos a usar nuestro flujo de trabajo estándar con herramientas mencionadas como Radare2, Ghidra y objdump, así como IDA, sin posibilidad de conservar símbolos/código fuente/comentarios. No podemos convertir una ROM de un juego al formato usado para otra consola de videojuegos, ya que son asuntos distintos.

Convertir aHerramientaComando / nota
Intel HEX (.hex) GNU objcopy objcopy -I binary -O ihex input.rom output.hex Útil para programadores de EPROM y herramientas de microcontroladores; se asume que el origen de la dirección es 0, salvo que se ajuste con opciones de objcopy.
Motorola S-record (.srec/.s19) GNU objcopy objcopy -I binary -O srec input.rom output.srec Convierte bytes sin procesar en un formato de texto de registros de dirección; no añade metadatos específicos del dispositivo.
Binary image (.bin) cp / copy cp input.rom output.bin .rom y .bin suelen ser solo extensiones de archivo distintas para los mismos bytes sin procesar.
Extracted firmware filesystem/files Binwalk binwalk -e input.rom Funciona cuando el ROM contiene flujos comprimidos reconocibles, archivos, SquashFS, cramfs, UBI u otras cargas incrustadas.
Disassembly listing (.asm/.txt) radare2 r2 -A -q -c 'pD $s' input.rom > output.asm Produce desensamblado dependiente de la arquitectura; selecciona CPU, cantidad de bits y dirección de carga para obtener resultados precisos.
Patched ROM image Floating IPS Para hacks de ROM de juegos, aplica un parche BPS/IPS a un ROM coincidente obtenido legalmente; el resultado sigue siendo una imagen ROM.

Problemas comunes y soluciones

"Format not recognized" a menudo significa que un archivo es incompatible con la herramienta/hardware/plataforma/tamaño de chip/orientación de imagen previstos. Por ejemplo: no funcionará un volcado de BIOS de 512 KB en un núcleo de emulador que espera un archivo de 1 MB; un volcado de option ROM para IBM PC con 55 AA empezando desde el offset 0 no tiene posibilidad de cargarse como ROM de cartucho. Cuando aparece una pantalla negra en herramientas de emulación como MAME, RetroArch, OpenEmu, Delta, 86Box, QEMU, Bochs, esto puede deberse a un BIOS faltante, una región incorrecta, un header corrupto o incorrecto, un mapper usado para el núcleo seleccionado que aún no es compatible o no se maneja correctamente, y al caso en que el archivo de imagen sigue comprimido por otra razón (por ejemplo, un archivo comprimido).

"Bad checksum," "Invalid ROM," y "BIOS checksum error" a menudo significan una imagen truncada, una ROM con bytes intercambiados, un header alterado o una imagen ROM para una revisión incorrecta del hardware. Con las option ROMs de PC, dos cosas son críticas: el byte de tamaño correcto y un valor de checksum correcto. Con consolas/ordenadores, hasta el cambio más mínimo, incluso de un solo byte, puede cambiar los vectores esperados, las arrays de validación, etc… Si ves un error de escritura al usar flashrom, asegúrate de que se use el chipset adecuado, los pines Write protect correctos, el estado desbloqueado correcto de las regiones Descriptor, el voltaje adecuado y la descripción correcta del chip proporcionados.

QEMU, 86Box y Bochs devuelven el error "No bootable device," cuando un volcado se usa directamente como disco de arranque, en lugar de cargarse por el emulador ya sea directamente como BIOS (option BIOS rom for IBM) pflash/efi o cargado solo como firmware para el dispositivo seleccionado. Además, para imágenes UEFI, UEFITool devuelve "not a valid UEFI image" cuando se intenta un volcado de actualización en un archivo .CAP, un archivo combinado/signed/encrypted por el fabricante o un archivo legacy BIOS. Cuando una unidad FAT32/COPY/PEN trunca un archivo de volcado, es mejor volver a volcar el archivo original.

Consideraciones de seguridad

Normalmente el archivo .rom apenas puede considerarse un archivo que pertenezca a un sistema operativo y puede contener cualquier código o comandos que puedan ser interpretados en caso de procesadores y placas con CPU y GPUs en casos específicos o con algunas placas adicionales o integradas que tengan memoria ROM específicamente. Un flash incorrecto puede corromper las características de tu placa,las opciones de seguridad o el proceso de arranque así como también implantar malware permanente en su funcionamiento.

Sin embargo también se pueden almacenar ahí volcados de ciertos componentes de hardware como el número de serie del hardware, direcciones MAC, detalles de la conexión a la red inalámbrica, claves de Wi-Fi, certificados que permiten las autorizaciones web, claves, configuraciones hechas por variables en términos de memoria no volátil así como también la información guardada durante el respaldo de los usuarios. No distribuyas volcados que infrinjan derechos de propiedad intelectual y no uses privilegios especiales para analizarlos.

Historia y versiones

La era de los años 70 fue testigo del uso del chip de memoria de solo lectura en muchos ordenadores comerciales, consolas y estaciones de juego, y los volcados de bytes de ROM contenían nombres de archivo populares como ".ROM" y ".bin." La ROM siempre ha seguido siendo una parte integral del hardware de computadoras desde el IBM PC de 1981, que solía contener BIOS ROM así como scanned options ROM. Más tarde, en 1984, Macintosh lanzó su propia Mac ROM, que actualmente se usa en emuladores de MAC. M.A.M.E., la herramienta de preservación de máquinas arcade y el software de emulación de consolas, empezó a mantener una base de datos de volcados de ROM que también incluía volcados de cartuchos a finales de los años 90. Más tarde, las estructuras PCI option ROM empezaron a ampliarse para módulos de firmware EFI y UEFI, y finalmente, a partir de la década de 2010, BIOS fue reemplazado por UEFI en el mundo de PC. Sin embargo, nadie define una única extensión de archivo .ROM, pero se ha mantenido tradicionalmente y sigue usándose para reparar firmware de BIOS, modificar BIOS personalizados, preservar ordenadores antiguos e ingeniería inversa.

.BIN se acerca mucho al formato de archivo ROM porque muchos programas pueden considerar que estos formatos son iguales en cuanto al orden de bytes idéntico, especialmente al tratar con microchips de software o copias de seguridad de cartuchos. La extensión de archivo .HEX implica el formato Intel Hex y ofrece información de direcciones y comprobación de errores, lo que hace que su uso sea conveniente para microcontroladores en caso de que la herramienta de programación utilizada admita el formato de archivo. Existen Motorola S-records en extensiones como .S19, .S28, .S37 y .SREC. También son importantes en términos del flujo de producción embebida. Las actualizaciones de proveedores conocidas por nombres como las actualizaciones UEFI de cápsula incluirán el formato de archivo .CAP. Las extensiones .FD y .WPH pertenecen a algunos proveedores populares como AMI, Insyde, Phoenix y servicios de utilidades para portátiles. Los juegos típicos tienen extensiones de archivo como .NES, .SNES o .SFC para juegos de consola, .GB o .GBA para juegos portátiles, y .N64. ISO representa sectores de discos ópticos, no chips de memoria.

Comentarios (0)

Respondiendo a

Aún no hay comentarios. Sé el primero en compartir tu experiencia con este tipo de archivo.