Editar el firmware de una grabadora dvd

Foro que trata temas de programación en varios lenguajes.
Ya sea programación en general, videojuegos, microcontroladores, sistemas operativos, ... lo que sea con tal de que sea programado desde un PC.
Excepto la programación de robots, que tienen su propio subforo.

Moderador: nake

Alps
¿Ordenador?¿Qué es eso? [Limitado]
Mensajes: 2
Registrado: Dom Feb 05, 2017 7:46 pm

Editar el firmware de una grabadora dvd

Mensajepor Alps » Mar Feb 07, 2017 3:26 pm

¡Hola a todos!

Tengo una grabadora DVD marcada Pioneer, modelo DVR-K17A (slim para laptops y con la vieja interfaz IDE), de la cual he conseguido extraer el firmware para intentar hacer algunas modificaciones.
Me gustaría incrementar el número de sectores escribibiles en un DVD-5 modificando el código hexadecimal.
Teóricamente, de tal manera habilitaría el overburning para DVD-5 (hablo obviamente de DVD R+ VERBATIM y EMTEC, dos marcas de DVD que, como es sabido, soportan el overburning), ya que el overburning de CD ya está soportado.
Creo que eventualmente sea también el único modo, dado que modelos de grabadoras similares no soportan el overburning de DVD (pues hay que excluir el llamado cross-flashing).
Usando un editor hexadecimal, habría visto diversas cadenas de caracteres que podrían ser objeto de modificaciones, pero necesito alguien que sabe como y que ir a modificar.
Quizás podría tratarse de un simple truquito, de un cambio trivial y dado que me encanta experimentar, haría fácilmente algunos intentos (luego, siempre puedo "reflashar" el firmware original que ya he extraído y, de todos modos, el valor de la grabadora es muy pequeño...).
También podría adjuntar el file del firmware, si alguien estuviera interesado en echarle un vistazo.
¡Sugerencias útiles son muy bienvenidas!
Eventualmente, también podríais aconsejarme herramienta de ingeniería inversa necesaria en estos casos u otros foros de gente que conoce, modifica y programa los firmware de varios dispositivos hardware (incluidas las grabadoras).
¡Gracias a todos!
Avatar de Usuario
nake
管理者 (Admin)
Mensajes: 1992
Registrado: Vie Jun 04, 2010 4:10 pm
Ubicación: (sin(3t), 0, 0, t+10)
Contactar:

Re: Editar el firmware de una grabadora dvd

Mensajepor nake » Vie Feb 17, 2017 12:22 pm

¡Hola! Y bienvenido al foro!

Yo personalmente no tengo mucha idea sobre el firmware de grabadoras, pero parece un proyecto super interesante! ¿Qué has hecho para dumpear y flashear el firmware?

Respecto a lo del overburning. Estás seguro de que el hardware también lo soporta? No tengo muy claro como se traduce el overburning a hardware, pero si es algo que físicamente tu grabadora no puede hacer, lo mismo aunque edites el firmware no notarás diferencia, pero bueno, por intentarlo no se pierde nada.

Respecto a lo del editor hexadecimal. Es un tema peliagudo, primero tendrás que saber qué tipo de procesador ejecuta ese firmware, y si puedes desensamblarlo (si es algo que gcc entienda, programas como objdump podrían salvarte de encontrar el trozo que buscas).
Luego tienes que ver si puedes editar el binario o puedes compilar tu uno editado. Si consigues desensamblar puede que puedas tocar el código en ensamblador y luego flashear el resultado.
Hacer eso puede que te haga la vida mucho más fácil porque si editas el binario en un editor hexadecimal tienes que tener cuidado de no añadir ni borrar más bytes de los que ya habían (ya que si no las direcciones de memoria, alineamiento, vectores, etc se moverían y todo fallaría al ejecutar). Pero tiene la dificultad de que te tendrás que montar el compilador (que no es tarea fácil normalmente).

Editar un binario con un editor hexadecimal es un arte, y necesitas de verdad entender muy bien cómo funciona un compilador/ensamblador/linker y la CPU sobre la que se ejecuta el código. Si puedes buscar el datasheet te haría la vida mucho más fácil.

¡Suerte con tu proyecto! Y si quieres sigue contando lo que vayas descubriendo, personalmente siento mucha curiosidad por el tema.
Un saludo.
Mi clave pública de correo electrónico: http://www.nakerium.com/nakerium.gpg (Si no sabes lo que es lee este artículo)
Click aquí para ver mi email.


Programo aplicaciones a la carta (con soporte de por vida, para ingeniería o informática) y doy asesoramiento en seguridad informática. Si quieres más información mándame un email o un mensaje privado.
Alps
¿Ordenador?¿Qué es eso? [Limitado]
Mensajes: 2
Registrado: Dom Feb 05, 2017 7:46 pm

Re: Editar el firmware de una grabadora dvd

Mensajepor Alps » Mar Feb 21, 2017 5:54 pm

Gracias por tu interés, nake! ;)

nake escribió:¡Hola! Y bienvenido al foro!

Yo personalmente no tengo mucha idea sobre el firmware de grabadoras, pero parece un proyecto super interesante! ¿Qué has hecho para dumpear y flashear el firmware?


He dumpeado el firmware (un único archivo) gracias a DVRTool, un programa específico para grabadoras Pioneer.

nake escribió:Respecto a lo del overburning. Estás seguro de que el hardware también lo soporta? No tengo muy claro como se traduce el overburning a hardware, pero si es algo que físicamente tu grabadora no puede hacer, lo mismo aunque edites el firmware no notarás diferencia, pero bueno, por intentarlo no se pierde nada.


Por desgracia, no sé si el hardware soporta el overburning. Como has dicho, tal vez una pequeña característica de hardware o un sucesivo cambio de ella podría hacer los esfuerzos vanos. En mi caso, si fuese así, me quedaría pronto.
Se va por exclusión: si, después de modificaciones, el firmware no es suficiente para escribir más datos en un DVD-5, entonces el hardware no permite la grabación más allá de la capacidad estándar de un DVD-5. A ver dónde está la verdad...

nake escribió:Respecto a lo del editor hexadecimal. Es un tema peliagudo, primero tendrás que saber qué tipo de procesador ejecuta ese firmware, y si puedes desensamblarlo (si es algo que gcc entienda, programas como objdump podrían salvarte de encontrar el trozo que buscas).


Todavía no sé el chipset de mi grabadora. Por eso debería desmontar la grabadora pero, siendo una grabadora ultra slim interna, quisiera evitar ese trabajo...
Podría ser que otras marcas de grabadoras montan el mismo chipset y si por casualidad hay modelos que soportan el overburning de DVD, entonces podría ver las diferencias en el firmware.
En cdrinfo.com las reseñas señalan también el chipset de cada grabadora y además podría preguntar al programador de DVRTool cuál es el chipset de mi grabadora. Con un poco de suerte podría obtener esa información. De otra manera, ¿hay programas capaces de detectar el chipset de la grabadora?

nake escribió:Luego tienes que ver si puedes editar el binario o puedes compilar tu uno editado. Si consigues desensamblar puede que puedas tocar el código en ensamblador y luego flashear el resultado.
Hacer eso puede que te haga la vida mucho más fácil porque si editas el binario en un editor hexadecimal tienes que tener cuidado de no añadir ni borrar más bytes de los que ya habían (ya que si no las direcciones de memoria, alineamiento, vectores, etc se moverían y todo fallaría al ejecutar). Pero tiene la dificultad de que te tendrás que montar el compilador (que no es tarea fácil normalmente).


Entonces, una vez detectado el procesador, me vendría bien usar un desensamblador, es decir, abrir el archivo de firmware con un programa como IDA PRO (que he descargado pero no aún utilizado), ¿es así?
Nunca he usado ese programa pero ¿en IDA PRO se puede tocar el código en ensamblador y luego flashear el resultado?
De acuerdo contigo sobre la más dificultad de editar el binario con programas como Hex Workshop. ¿Lo que has dicho se refiere al "checksum" (el control de bytes, si no me equivoco)?

nake escribió:Editar un binario con un editor hexadecimal es un arte, y necesitas de verdad entender muy bien cómo funciona un compilador/ensamblador/linker y la CPU sobre la que se ejecuta el código. Si puedes buscar el datasheet te haría la vida mucho más fácil.


Y añado que necesitaría entender, en mi caso, las lógicas del código que se ocupa de gestionar el aspecto particular del overburning. Por eso, necesitaría saber dónde se debe buscar específicas referencias en el código para modificar el comportamiento de la grabadora.
Desafortunadamente, no hay el datasheet en internet, sólo la más típicas características (pues, no CPU).
De todos modos, si consigo avanzar en el proyecto, seguro que iré a actualizar este thread. Gracias por tus sugerencias.
Saludos.
Avatar de Usuario
nake
管理者 (Admin)
Mensajes: 1992
Registrado: Vie Jun 04, 2010 4:10 pm
Ubicación: (sin(3t), 0, 0, t+10)
Contactar:

Re: Editar el firmware de una grabadora dvd

Mensajepor nake » Mar Feb 28, 2017 2:13 pm

Alps escribió:En cdrinfo.com las reseñas señalan también el chipset de cada grabadora y además podría preguntar al programador de DVRTool cuál es el chipset de mi grabadora. Con un poco de suerte podría obtener esa información. De otra manera, ¿hay programas capaces de detectar el chipset de la grabadora?


Hmmm, si no es una base de datos de gente que la ha desmontado, dudo que haya un programa que sea capaz de detectar la CPU que usa internamente el firmware... si la desmontas mirando el chip en sí debería de bastar, eso sí, si no está tapado con resina o algo así como hacen muchas veces.

Alps escribió:Entonces, una vez detectado el procesador, me vendría bien usar un desensamblador, es decir, abrir el archivo de firmware con un programa como IDA PRO (que he descargado pero no aún utilizado), ¿es así?


Así es. Si abres el desensamblado podrías ver la lógica del programa. Aunque te advierto que si no sabes programar en ensamblador puede ser un auténtico caos. Ensamblador de por sí no es sencillo, pero el de los firmware es aún más complicado, pero por otra parte yo los encuentro muy entretenidos también jajaja.

Alps escribió:Nunca he usado ese programa pero ¿en IDA PRO se puede tocar el código en ensamblador y luego flashear el resultado?


Nunca lo he usado tampoco, pero si el compilador soporta la CPU de la grabadora, entonces así es.

Alps escribió:De acuerdo contigo sobre la más dificultad de editar el binario con programas como Hex Workshop. ¿Lo que has dicho se refiere al "checksum" (el control de bytes, si no me equivoco)?


El checksum es el menor de tus problemas. Normalmente los procesadores tienen unos bytes que si escribes unos números concretos vuelven todo el sistema de solo lectura así que puedes olvidarte de flashear nada. Si esa protección no está activada (es muy posible que no lo esté), y estás tocando el binario, el problema es que las direcciones de memoria están hardcodeadas, así que añadir o borrar bytes puede hacer que esas direcciones sean inválidas.

Por ejemplo, hacer un CALL o un JUMP (llamar a una función, o una parte de un bucle while/for o un switch), la dirección de memoria está escrita en el propio programa. Si tus modificaciones añadiesen un simple byte, esa dirección de memoria podría estar desplazada haciendo que todo el firmware crashee al poco de arrancar. Por tanto, o sabes exactamente qué byte estás modificando (por ejemplo cambiar el valor de una constante y ya está), o todo se fastidiará muy fácilmente.
Lo mismo con buffers y tal. Imagina que cambias el valor de una constante, y resulta que esa define el tamaño de un buffer de datos. Cuando el programa escriba en dicho buffer puede que haga un overrun y sobreescriba otras variables, rompiendo el firmware al poco tiempo.

Por ello, si consigues desensamblar y ensamblar, todo te sería mucho más sencillo ya que esas direcciones de memoria se recalcularían y no tendrías que preocuparte de cómo estaban antes.

El checksum es muchas veces ignorado, y si no lo es, calcularlo y escribirlo no es más difícil que flashear el firmware.

Alps escribió:necesitaría saber dónde se debe buscar específicas referencias en el código para modificar el comportamiento de la grabadora.


Eso no creo que lo consigas encontrar. Suelen ser documentos privados de la empresa que crea el firmware. Por otro lado, si consigues el datasheet de la CPU interna, en ese caso podrías descifrar (con mucho tiempo) el código desensamblado, y con ello entender la lógica del programa y por tanto saber qué editar.

Alps escribió:Desafortunadamente, no hay el datasheet en internet, sólo la más típicas características (pues, no CPU).
De todos modos, si consigo avanzar en el proyecto, seguro que iré a actualizar este thread. Gracias por tus sugerencias.
Saludos.


Es difícil encontrar información sobre algo tan específico y raro como los detalles técnicos de un producto teniendo en cuenta que más del 99% de la gente solo se interesa por las características normales del producto... pero como digo, si descubres el modelo de la CPU interna, buscar su datasheet debería de ser bastante sencillo ya que esas CPU's son muy genéricas.

Saludos!
Mi clave pública de correo electrónico: http://www.nakerium.com/nakerium.gpg (Si no sabes lo que es lee este artículo)
Click aquí para ver mi email.


Programo aplicaciones a la carta (con soporte de por vida, para ingeniería o informática) y doy asesoramiento en seguridad informática. Si quieres más información mándame un email o un mensaje privado.

Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados