Autor Tópico: Firmware MT13x9: Log de Descobertas  (Lida 271727 vezes)

0 Membros e 1 Visitante estão vendo este tópico.

Offline ygor.almeida

  • Novato Prolixo
  • **
  • Mensagens: 73
  • Aprovação: +1/-0
  • My Name is Neo
    • Ver Perfil
    • eXtremeMods
Re: Firmware: log de descobertas
« Responder #150 Online: Agosto 05, 2007, 02:32:35 pm »
 :dashhead1:
Agora esse tópico pra mim parece grego  >:D

Porque eu fugi das aulas de programação e lógica no colegial ?  :dashhead1: :dashhead1: :rtfm:
Bom que tal mudar isso pra Patching MediaTek FirmWare From A to Z !

Quer saber qual vai ser a "surpresa" do suposto engenheiro da Proview ?? Um emprego pro Ryan pra trabalhar com FirmWare de DivX  >:D ::) :P

www.eXtremeMods.com.br
Hardware IT News & OverClock

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #151 Online: Agosto 05, 2007, 02:51:50 pm »

Porque eu fugi das aulas de programação e lógica no colegial ?  :dashhead1: :dashhead1: :rtfm:

Não é tãoooo difícil. Já vi gente muito boa dizer no MT13x9 (acho que foi até o New Age) que nunca havia mexido com Assembly até querer hacker seu DivX player. E acabou se tornando fera!

Eu nunca tive aulas de programação. Levo uma certa vantagem por ser autodidata em eletrônica (assembly usa muitos conceitos difíceis para quem não entende eletrônica) e em Delphi (que uso para tornar mais fáceis certas contas, verificações e manipulações tediosas).

Bom que tal mudar isso pra Patching MediaTek FirmWare From A to Z !

No futuro, a informação aqui poderá ser condensada em documentos no meu site. Este tópico funciona como um diário onde eu vou colocando informação, mesmo que não tenha utilidade prática imediata.

Quer saber qual vai ser a "surpresa" do suposto engenheiro da Proview ?? Um emprego pro Ryan pra trabalhar com FirmWare de DivX  >:D ::) :P

Eu não acho que seja nada "para mim" e sim para a "comunidade". Pode ser inclusive a queda do preço do Proview que aconteceu ontem, para R$109.

Se fosse algo para mim teria sido falado em particular, por e-mail.
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

FORUM.RYAN.COM.BR

Re: Firmware: log de descobertas
« Responder #151 Online: Agosto 05, 2007, 02:51:50 pm »

Offline eneris

  • Novato Prolixo
  • **
  • Mensagens: 85
  • Aprovação: +2/-0
  • The Cranberries em Recife Outubro/2010 Eu Vou!
    • Ver Perfil
    • ENERIS Online :: No Need To Argue
Re: Firmware: log de descobertas
« Responder #152 Online: Agosto 05, 2007, 03:45:13 pm »
É como disse Ryan no post acima, eu tambem quando via este enorme quantidade de numero e letras achava que era pior que grego (inclusive eu disse isso em um topico neste mesmo forum), mas foi quando eu comprei o Philips 5965 e revirei a internet inteira procurando um firmware pra ele pela mesma razão de todos: as legendas divx, como nao encontrei nenhum firmware eu mesmo comecei a pesquisar sobre firmware mediatek, dai encontrei o forum do nosso amigo Jmaraujo, o site do Ryan e do grupo mtk do yahoo, montei meu cabo de dados (pra mim foi mais facil pois ja conserto aparelhos eletronicos) e entrei no mundo dos firmware mediatek, e continuo aprendendo, e eu tambem nao entendia uma linha de assembly.
The Cranberries - em Recife Outubro/2010
Estarei la colado! Ta perto.

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #153 Online: Agosto 06, 2007, 02:34:05 pm »
Como localizar Sub_Style

Este método é experimental.

Existem duas maneiras. Uma relativamente rápida, fácil de implementar em um script (já implementei na nova versão do mtk ModTooolbox) e outra tortuosa, que ainda requer julgamento humano.


Método 1

Para este método, precisamos de duas coisas:

  • O número da janela de exibição das legendas (verifique no mtkWindows)
  • O offset de OSD_textColor na BTT

Se você não sabe o offset de OSD_textColor, procure a seguinte string:

EF 70 ? D2 ? 12

Esta string ocorre uma vez e leva a um código semelhante a este:
(o propósito original desta string é localizar Dir_DispDirline)

B1:A4EC EF          mov     A, R7
B1:A4ED 70 07       jnz     DIR_FB_HasParent?
B1:A4EF D2 45       setb    RAM_28.5
B1:A4F1 12 78 FB    lcall   Dir_Disp_Dirline
B1:A4F4 80 05       sjmp    DIR_FB_SetColor
B1:A4F6             ; ---------------------------------------------------------------------------
B1:A4F6
B1:A4F6             DIR_FB_HasParent?:            ; CODE XREF: DIR_FileBrowser+6Cj
B1:A4F6 C2 45       clr     RAM_28.5
B1:A4F8 12 78 FB    lcall   Dir_Disp_Dirline
B1:A4FB
B1:A4FB             DIR_FB_SetColor:              ; CODE XREF: DIR_FileBrowser+55j
B1:A4FB                                           ; DIR_FileBrowser+73j
B1:A4FB 90 FD 86    mov     DPTR, #XRAM_FD86
B1:A4FE E0          movx    A, @DPTR
B1:A4FF 54 F7       anl     A, #0xF7
B1:A501 F0          movx    @DPTR, A
B1:A502 90 FC 07    mov     DPTR, #XRAM_FC07      ; OSD_Colors
B1:A505 74 02       mov     A, #2
B1:A507 F0          movx    @DPTR, A
B1:A508 A3          inc     DPTR
B1:A509 04          inc     A
B1:A50A F0          movx    @DPTR, A
B1:A50B E4          clr     A
B1:A50C FB          mov     R3, A
B1:A50D FD          mov     R5, A
B1:A50E 7F 10       mov     R7, #0x10
B1:A510 12 1D E0    lcall   OSD_TextColor_B1BS
B1:A513 E4          clr     A
B1:A514 90 FB 98    mov     DPTR, #XRAM_FB98
B1:A517 F0          movx    @DPTR, A


O endereço destacado em vermelho é o que queremos.

Agora procure por:

'7F' + <Número da janela de legenda> + '12' +<offset OSD_textColor>

Se o número da janela de legendas for 12 e o offset for '1D E0' teremos a seguinte string:

7F 12 12 1D E0

Que equivale a:

mov     R7, #0x12
lcall   OSD_TextColor

As ocorrências desta string no firmware estão nas rotinas SubStyle primária e secundária apenas.

Este método localiza a SubStyle de

Proview DVP-858 (ambas)
Lenoxx DV-406
Philips DVP5960 (apenas primária)
Philips DVP5965 (apenas primária)

Mas não funciona com

Philips DVP5980
Philips DVP5100
Philips DVP5140
Philips DVP3040

Problema: Alguns firmwares Philips não chamam OSD_TextColor carregando R7 com o número da janela de legendas explicitamente. O número é carregado, mas indiretamente, vindo de um endereço XRAM.

Existe um método tortuoso, que envolve localizar a rotina OSD_textInit, mas falarei sobre isso depois
« Última modificação: Agosto 06, 2007, 02:37:44 pm por Jefferson »
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Responder #154 Online: Agosto 06, 2007, 06:35:58 pm »
Alguns Scripts IDA

Uma coisa que me aborrece terrivelmente é que depois de localizar rotinas em um determinado firmware, é preciso fazer todas as identificações em todos os outros fimrwares compatíveis, incluindo outras versões do mesmo firmware, por isso decidi aprender a fazer alguns scripts do IDA para automatizar as tarefas, assim toda vez que eu abrir um firmware posso rapidamente incluir nele uma parte do que já aprendi com outros.
Não sei se fiz alguma coisa errada mas estou recebendo uma mensagem "Variable 'SEARCH_DOWN' is undefined" por parte do IDA (tanto no 4.8 como no 5.0)

Offline eneris

  • Novato Prolixo
  • **
  • Mensagens: 85
  • Aprovação: +2/-0
  • The Cranberries em Recife Outubro/2010 Eu Vou!
    • Ver Perfil
    • ENERIS Online :: No Need To Argue
Re: Firmware: log de descobertas
« Responder #155 Online: Agosto 06, 2007, 06:54:10 pm »
Jmaraujo você tentou com a nova versão do IDA? Eu vinha recebendo esta mensagem na versão 5.0, dai baixei a nova versão ontem, e testei, e o problema se foi.
Tente aí com a versão 5.1 e veja se o problema não é sanado.
The Cranberries - em Recife Outubro/2010
Estarei la colado! Ta perto.

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Responder #156 Online: Agosto 06, 2007, 07:18:07 pm »
Jmaraujo você tentou com a nova versão do IDA? Eu vinha recebendo esta mensagem na versão 5.0, dai baixei a nova versão ontem, e testei, e o problema se foi.
Tente aí com a versão 5.1 e veja se o problema não é sanado.
Obrigado pela dica, Eneris. Vou testar sim.

Eu até que intentei adicionar "#define SEARCH_DOWN     0x01            // search forward" e "#include "idc.idc"" mas não funcionou.

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #157 Online: Agosto 07, 2007, 12:04:43 am »
Jmaraujo você tentou com a nova versão do IDA? Eu vinha recebendo esta mensagem na versão 5.0, dai baixei a nova versão ontem, e testei, e o problema se foi.
Tente aí com a versão 5.1 e veja se o problema não é sanado.

Eu uso a 5.0.

Eu não sei se faz alguma diferença, mas meus scripts foram baseados e incluídos no MT1389_misc.idc do Farox.

Editado:

Se insistir em não funcionar, substitua toda ocorrência de SEARCH_DOWN por 0x01. SEARCH_DOWN é apenas uma constante com função de mnenônico, para você não ter que lembrar que procurar adiante é "1".



« Última modificação: Agosto 07, 2007, 12:13:38 am por Jefferson »
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #158 Online: Agosto 09, 2007, 03:21:28 am »
Localizando SHOW_ZOOM_MSG

O método que utilizei até agora no mtk ModToolbox foi explicado por mim aqui. Mas esse método é completamente dependente de análise humana e tedioso demais, por isso eu desenvolvi um novo, muito simples, que já foi implantado na próxima versão do mtk ModToolbox.


Basta procurar por:

D3 94 00 40 ? 90 ?? e0 b4 03 1b 90 ?? 74 01

Que encontrará algo assim:

B2:C31B             Show_ZOOM_MSG:                ; CODE XREF: BankSw_485_B2_C2AA+2Dj
B2:C31B 90 FB 8A    mov     DPTR, #XRAM_FB8A
B2:C31E E0          movx    A, @DPTR
B2:C31F D3          setb    C
B2:C320 94 00       subb    A, #0
B2:C322 40 3D       jc      B2_C361
B2:C324 90 FC AB    mov     DPTR, #XRAM_FCAB      ; Tipo de mídia em execução 3=ISO
B2:C327 E0          movx    A, @DPTR
B2:C328 B4 03 1B    cjne    A, #3, Show_ZOOM_MSG_DVD
B2:C32B 90 FB FC    mov     DPTR, #XRAM_FBFC      ; Aqui é exibida a mensagem do ZOOM para ISO
B2:C32E 74 01       mov     A, #1
B2:C330 F0          movx    @DPTR, A
B2:C331 A3          inc     DPTR
B2:C332 74 FB       mov     A, #0xFB ; '¹'
B2:C334 F0          movx    @DPTR, A
B2:C335 A3          inc     DPTR
B2:C336 74 8A       mov     A, #0x8A ; 'è'
B2:C338 F0          movx    @DPTR, A
B2:C339 7B FF       mov     R3, #0xFF             ; Tempo de exibição. "FF": permanente
B2:C33B 7D 29       mov     R5, #0x29 ; ')'       ; 0x0229 é o código da mensagem de ZOOM. Depende do Language Code.
B2:C33D 7C 02       mov     R4, #2
B2:C33F 7F 15       mov     R7, #0x15             ; Os valores em R6 e R7 determinam onde a mensagem será exibida
B2:C33F                                           ; Consulte a aba "OSD Messages Positions" do mtkWindows
B2:C341 7E 00       mov     R6, #0
B2:C343 02 1E 40    ljmp    OSD_DispMsg2_B2_BS
B2:C346             ; ---------------------------------------------------------------------------
B2:C346
B2:C346             Show_ZOOM_MSG_DVD:            ; CODE XREF: BankSw_485_B2_C2AA+7Ej
B2:C346 90 FB FC    mov     DPTR, #XRAM_FBFC      ; Aqui é exibida a mensagem do ZOOM para DVD-Video
B2:C349 74 01       mov     A, #1
B2:C34B F0          movx    @DPTR, A
B2:C34C A3          inc     DPTR
B2:C34D 74 FB       mov     A, #0xFB ; '¹'
B2:C34F F0          movx    @DPTR, A
B2:C350 A3          inc     DPTR
B2:C351 74 8A       mov     A, #0x8A ; 'è'
B2:C353 F0          movx    @DPTR, A
B2:C354 7B FF       mov     R3, #0xFF
B2:C356 7D 29       mov     R5, #0x29 ; ')'
B2:C358 7C 02       mov     R4, #2
B2:C35A 7F 08       mov     R7, #8
B2:C35C 7E 00       mov     R6, #0
B2:C35E 12 1E 40    lcall   OSD_DispMsg2_B2_BS
B2:C361
B2:C361             B2_C361:                      ; CODE XREF: BankSw_485_B2_C2AA+78j
B2:C361 22          ret


Com esse método, não é necessário saber o número da mensagem de ZOOM.


Funciona com:

  • Philips DVP5980
  • Philips DVP5100
  • Philips DVP3040K
  • Philips DVP5960
  • Philips DVP5965
  • Philips DVP5140
  • Lenoxx DV406
  • Proview DVP-858

Não funciona com:

  • Philips PET 725
  • JTEC MTK7000
Mas é incerto se mesmo o método antigo funciona com esses últimos.

« Última modificação: Agosto 09, 2007, 03:23:44 am por Jefferson »
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #159 Online: Agosto 09, 2007, 04:08:21 pm »
Proview DVP-858 - Volume/MUTE em DivX
Isto foi publicado por mim originalmente no HTFORUM em 17/06/07


Quando você muda o tamanho ou a posição da janela de exibição de legendas (0x13), pode provocar o sumiço do controle do volume em DivX (0x1F). Isso é provocado por sobreposição das janelas.

Encontrar uma posição favorável para a janela 0x1F pode ser complicado. Eu não consegui encontrar uma outra posição vertical onde ela ficasse visível, mesmo trocando de lugar com a janela 0x13.

Porém eu encontrei uma alternativa: redirecionar a mensagem de volume/mute para outra janela. Testei com sucesso as janelas 0x00 e 0x06. Baseado no documento "Patching_HU3899_from_A_to_Z.txt" do Borus.

A 0x00 é a janela usada para exibir as mensagens "Carregando", "abrir", "fechar", etc.



A janela 0x06 é a usada para exibir que legenda ou trilha de áudio está sendo usada:



Note que a mensagem de volume assume os atributos de cor da janela onde é exibida.

Como fazer a mudança:

Com um editor hexadecimal, procure pelo padrão:
02 30 00 00 06 00 00 00 00 02 30 00 00 1F

E mude "1F" para a janela onde você quer colocar a mensagem de volume.

Por exemplo, para as janelas 0x00 e 0x06, respectivamente:
02 30 00 00 06 00 00 00 00 02 30 00 00 00
02 30 00 00 06 00 00 00 00 02 30 00 00 06

Essa mudança redireciona TUDO o que seria exibido na janela 0x1F para a janela de sua escolha.

Você também pode redirecionar para a janela 0x04 (transparente), que fica logo acima da 0x06 e ainda não sei para que é usada no firmware. A 0x02 é onde é exibido o tempo decorrido.
« Última modificação: Agosto 09, 2007, 04:12:20 pm por Jefferson »
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

FORUM.RYAN.COM.BR

Re: Firmware: log de descobertas
« Responder #159 Online: Agosto 09, 2007, 04:08:21 pm »