TV Logo Changer

También existen estos adaptadores.
USB-Audio-Converter.jpg
De cualquier forma, la versión que subí ya puede trabajar en equipos con problemas de audio.
No es importante escuchar los procesos, fue solo algo que se me ocurrió. :)
 
Si leíste el tema te podrás haber dado cuenta que este programa no "saca" archivos binarios, solo cambia el logotipo.
El archivo binario que se obtiene es uno modificado con el nuevo logotipo, y ese archivo debe ser previamente extraído.

Si quieres obtener una copia del firmware, usa un programador como el RT809H y podrás hacerlo sin problemas.
 
Fast TV Logo Changer v1.0.0

Versión simplificada y rápida de las versiones anteriores.
Esta aplicación está en inglés y fue escrita en C#, así que ya no requiere del Runtime de VB6, pero sí .Net > 4.0
Cuenta con lo básico para el cambio del logotipo en volcados de memorias SPI Flash de TV chinas.
Igualmente soporta los archivos gráficos comunes para insertar el logotipo, pero solo guarda en formato JPG.

Fast_TV_Logo_Changer_v1.0.0.jpg

TV_Logo_Changer_Changing.jpg

Esta aplicación no creo que llegue a tener muchas actualizaciones, ya que como está funciona bastante bien.
Tal vez lleguen a darse correcciones y ciertas mejoras, pero no más. (El tiempo y los comentarios lo podrían cambiar)
No cuenta con archivo de ayuda ya que se supone que sabrán utilizar el programa por las versiones anteriores.
Cualquier error que encuentren les pido que por favor lo notifiquen en este mismo tema.

Espero que les sea de utilidad a las personas que lo requieren en el idioma inglés.

Actualización v1.1.0:
Ahora todos los procesos se realizan en memoria.
Esto incrementó la velocidad en el procesamiento de imágenes.
 

Adjuntos

  • Fast TV Logo Changer v1.0.0.rar
    87.5 KB · Visitas: 47
  • Fast TV Logo Changer v1.1.0.rar
    87.8 KB · Visitas: 77
Esta aplicación no creo que llegue a tener muchas actualizaciones, ya que como está funciona bastante bien.
Tal vez lleguen a darse correcciones y ciertas mejoras, pero no más. (El tiempo y los comentarios lo podrían cambiar)
Me decidí a implementar una actualización que desde hace tiempo la tenía pensada y hasta creo que llegué a comentar que, adaptaría esta aplicación para poder realizar la comprobación de más de una firma gráfica en el volcado.
Y esto es porque existen algunos volcados que pueden llegar a tener varios gráficos insertados, (he encontrado hasta 7 gráficos).
En lo que respecta sobre mi experiencia en este tema, el primer gráfico conforme a su posición dentro del volcado, es el principal, o sea, el que carga el sistema para ser mostrado como logotipo, y el resto, si es que los llega a tener, tan solo sirven para labores de menú y tal vez otras cosas.
Y esto se podría considerar así, ya que su tamaño es muy pequeño, por ejemplo; de 160 x 90 píxeles, lo cual no es apto para ser el logotipo a mostrar al inicio.
Sin embargo, me he encontrado con volcados multi imagen que sí tienen el tamaño adecuado para ser considerados como logotipo inicial.
Y esos televisores por medio del modo de servicio dan la posibilidad de cambiarlo, ya que los logotipos son de varias marcas y también suelen tener el cambio del tipo de control remoto.
Son raros, pero existen.

Debido a esta circunstancia nació la idea que mi aplicación también pudiera modificar el resto de archivos gráficos, pero dado el hecho de que era la primera vez que me enfrentaba ante este tipo de aplicación, y que se requiere de bastante programación para poder realizar el proceso de forma satisfactoria, para tan solo poder obtener un solo gráfico, comprobarlo e insertarlo como un archivo nuevo y cumpliendo con su compatibilidad, hacerlo con más, digamos, unos 8, pues resultaría algo drásticamente complicado.

Con la migración de este proyecto a .Net, se abrieron otras posibilidades, incluso me olvidé de las API GDI+, ya que en .Net son nativas.
De hecho, de muchísimas más que en VB6 se tienen que implementar de forma externa por medio de librerías.
Así que, primero me dí a la tarea de implementar una clase que pudiera recopilar las firmas gráficas y me retornara los offsets encontrados en un array del tipo long.
Tarea realizada con éxito y que incluso acelera el proceso de verificación en un 90%

Una muestra de lo que llevo hasta ahora con esta nueva versión:
LogoChanger12.png

Esto es a modo de prueba, ensayo y error, y lo que se muestra son los offsets obtenidos.
De igual forma puedo saber cuántos gráficos tiene el volcado, o si no los contiene.
Y este proceso es extremadamente rápido, un pestañeo y los obtengo.
Lo que prosigue ahora es trabajar con arrays de objetos, que en VB6 es muy sencillo, y aunque en .Net ya eso no es nativo, se puede implementar de otra forma que finalmente genera los mismos resultados.
Voy a limitar la aplicación por ahora a solo 4 gráficos. ¿Por qué? Por los siguientes motivos:
1.- Estoy realizando pruebas y ocupando un formulario creado previamente.
2.- Cada PictureBox ingresado se tiene que duplicar, lo que cada vez incrementaría el tamaño del formulario.
Aunque ya tengo solución para eso, lo dejaré para más adelante si todo marcha bien.
3.- La sobrecarga de memoria se vería muy involucrada si cargo muchos controles y cada uno de ellos contiene datos que conforman varios arrays del tipo byte y long.
Así que hasta que logre poder lidiar con esto sin repercusiones de RAM, probaré solo con 4 imágenes.
Y bueno, hay muchas cosas que no comento porque seguramente más de uno no entendería, pero que uno como programador sí tiene en cuenta.
Por ejemplo: ¿Qué hacer ahora con cada botón e información de cada gráfico?
Bueno, pues esa es una de las cosas en las que ya estoy pensando para no crear un formulario inmenso y repetido. 🤓

Este es el avance de la nueva versión, le dedico el tiempo que tengo porque tengo muchos proyectos, ya sea de clientes y freeware que me absorben mucho, aparte de estar en el taller viendo que las cosas se hagan bien, etc.
Espero terminarlo pronto para poder compartirlo.

Offsets.png

Si quieren comprobar los offsets obtenidos, les adjunto el volcado con los 7 gráficos insertados.
Código:
7 graphic signatures have been found.
Init Offset 1: 2690F0
Init Offset 2: 27AF08
Init Offset 3: 27B0A4
Init Offset 4: 27BBC6
Init Offset 5: 286898
Init Offset 6: 286A34
Init Offset 7: 287817
Dentro también encontrarán los gráficos que se deben obtener.
La labor manual será encontrar el final correcto de cada gráfico y extraerlo, cosa que mi aplicación realizará de forma automática.
 

Adjuntos

  • MultiGraphic_Dump.rar
    2.6 MB · Visitas: 76
Sugerencias:

- Cada vez que obtienes una imagen, genera un thumbnails del mismo (ahorras RAM).

- Al presionar en ese thumb o en un botón, recién ahí cargas la imagen completa.

- Crea de forma dinámica los cuadros de las imágenes, así no tienes ya precargado cosas innecesarias.

- Crea una clase o librería que sea genérica para cualquier imagen, que solo reciba el offset, y luego sola obtenga tal imagen (te ahorras reimplentar para cada cuadro y cada imagen).
 
- Cada vez que obtienes una imagen, genera un thumbnails del mismo (ahorras RAM).
Sí, de hecho cada imagen que se muestra en la ventana principal es un thumbnail.
- Al presionar en ese thumb o en un botón, recién ahí cargas la imagen completa.
Eso también ha sido siempre así y al hacer click se muestra en pantalla completa.
- Crea de forma dinámica los cuadros de las imágenes, así no tienes ya precargado cosas innecesarias.
Ahora la creación y manipulación de objetos la realizo de esa forma porque lo hago con arrays.
- Crea una clase o librería que sea genérica para cualquier imagen, que solo reciba el offset, y luego sola obtenga tal imagen (te ahorras reimplementar para cada cuadro y cada imagen).
Sí, eso fue lo que hice y lo comenté arriba.
Esta clase encuentra todas las firmas gráficas y retorna los offsets encontrados en un array.
Otra función se encarga de retornar los offsets finales tras haber encontrado una imagen válida.
Así que solo tengo dos arreglos del tipo long para los offsets y los búfers de los streams son liberados de inmediato.
Para la carga de la imagen en pantalla completa, tan solo leo sus offsets correspondientes, cargo los datos en memoria y proceso el stream para crear una imagen, y cuando se cierra de igual forma se limpia el búfer usado para liberar memoria.

En sí esto de la memoria ya lo tengo resuelto, ahora voy por objetividad de referencia sobre los controles de usuario.
 
Avances de la versión 1.2.0

.- Muy bajo consumo de RAM, ya que trabajé todo por procesos independientes que se liberan inmediatamente después de su uso.
.- Como mencioné anteriormente, la aplicación la limitaré a 4 imágenes por ahora.
.- Ya logré cargar las imágenes por separado, obtener su información y guardar cada una con un solo botón.
Ahora falta procesar y modificar cada una de forma independiente dentro del archivo, pero eso ya es otra historia.
Poco a poco pero voy avanzando.
Créanme que, no ha nada sencillo trabajar con varios offsets y buffers, generar gráficos y obtener su información, y más cuando un solo botón se encarga de realizar todo el proceso por selección.
TVLC12_1stFase.png

TVLC12_1stFase_2.png
 
¿Podrías colocar el post donde explica cómo extraer ese firmware que se necesita para crear lo del cambio de logo?
 
Última edición por un moderador:
Tengo el siguiente logo. ¿Existe alguna forma de ver su estructura para poder crear un script para cambiar los logos?
.



Y si comienzas a leer desde aquí (haz click) porque seguro se indicó más de 5 veces !!!!



Salu2.-
Eso vi de primero y no está, pero busqué otro tema debajo y creo tener una pequeña idea de cómo hacerlo. Gracias.
 

Adjuntos

  • plugins.rar
    56.4 KB · Visitas: 22
Última edición por un moderador:
Tengo el siguiente logo. ¿Existe alguna forma de ver su estructura para poder crear un script para cambiar los logos?
Comúnmente los archivos pak eran de vídeo juegos y básicamente son archivos .zip con extensión .pak
Los que adjuntas tienen otra cabecera y ni siquiera son reconocidos por 7-Zip que descomprime varios tipos de archivos.
Tampoco fue reconocido por UniExtractor, así que no se puede hacer nada desconociendo el formato del archivo.

Header.jpg

7-Zip.jpg

UniExtractor.jpg
 
Comúnmente los archivos pak eran de vídeo juegos y básicamente son archivos .zip con extensión .pak
Los que adjuntas tienen otra cabecera y ni siquiera son reconocidos por 7-Zip que descomprime varios tipos de archivos.
Tampoco fue reconocido por UniExtractor, así que no se puede hacer nada desconociendo el formato del archivo.

Ver el archivo adjunto 306848

Ver el archivo adjunto 306847

Ver el archivo adjunto 306846
Muchas gracias por tomarte el tiempo de responder.
E
ste en un archivo que me envía directamente el proveedor para el sistema operativo Web Os, sucede que las tarjetas vienen con otra marca pero cuando amerito cambiarles el logo porque se averió la main y se necesita el cambio, ellos me envían ya el otro logo y yo solo debo colocar esto en una memoria USB.
Ojo, no es Mstar es Realtek.
T
e quería comentar algo adicional; Tampoco he podido desempaquetar los SW (aquí los conocemos como software, o sistema operativo del TV), que ellos envían.
E
ste sí es Mstar, te adjunto el link Descarga aqui! (main JUC7.820.00259094)
Este es el que no he podido ingresar ni en recovery, no sé si viene bloqueado.
C
uando usted disponga de tiempo, espero le pueda echar una ojeada.
Gracias por tu ayuda.
 
Última edición por un moderador:
Este sí es Mstar, te adjunto el link Descarga aqui! (main JUC7.820.00259094)
Este es el que no he podido ingresar ni en recovery, no sé si viene bloqueado.
C
uando usted disponga de tiempo, espero le pueda echar una ojeada.
Ese tipo de firmware y tarjeta, no suelen ser Mstar.
El problema con los firmware .pkg es que algunos vienen encriptados, como en este caso.
Por el momento no se han podido desencriptar, ni conseguir las claves.
 
Cuando se realiza la actualización desde el menú del televisor, sí hay que estar conectado a Internet.
Si tienes el archivo no se requiere conexión y se realiza desde una memoria USB.
Ya tras instalado sí se requerirá conexión pero es opcional porque se puede saltar el paso de selección de red.
 
Buenas, estimado, disculpe la molestia.
S
i quiero enviar un comando a una consola, por ejemplo: (Enter), enviaría un VBNullString, una cadena vacía y la repito unas 30 veces y con esto logro que se active el modo debug, esto es para Mstar pero, ¿cómo podría hacer con Realtek? ¿Cómo sería comando?
Y
a que veo que el comando es escape, no un enter, que sería mas fácil.
 
Última edición por un moderador:
Atrás
Arriba