Início
- Eu tinha um sintetizador Yamaha PSR-E433 há bastante tempo e, por curiosidade sobre a estrutura interna, acabei desmontando-o.
- Descobri o chip "YAMAHA SWL01U" na placa principal, mas não encontrei informações sobre ele on-line.
- Meses depois, encontrei o manual de serviço de um sintetizador semelhante e consegui consultar a descrição dos pinos do chip.
- Tentei obter informações do chip por meio do ponto de teste JTAG e da interface UART.
Dump de firmware
- Tentei ler o IDCODE via interface JTAG, mas veio um IDCODE inesperado.
- Supondo ser um núcleo ARM7TDMI, tentei me comunicar com o chip usando o OpenOCD.
- Confirmei que a comunicação com o núcleo ARM7TDMI estava funcionando observando mudanças de corrente.
- Fiz o dump do firmware e comecei a análise.
Engenharia reversa de firmware
- Comecei a fazer engenharia reversa do firmware usando o Ghidra.
- Tentei compreender a estrutura do sistema por meio das strings do firmware.
- Encontrei uma lista de comandos de shell e, com ela, entendi como o sistema funcionava.
Shellcode
- Descobri uma forma de acessar a memória do sintetizador através de mensagens MIDI.
- Confirmamos que era possível injetar código na RAM e executá-lo usando o comando de escrita de memória.
- Criei e executei um pequeno código assembly que imprime a string "HeloWrld" no LCD.
Bad Apple
- Desenvolvi um projeto para exibir o vídeo "Bad Apple" no LCD do sintetizador via MIDI.
- Acessei a memória interna do sintetizador por meio de mensagens MIDI e, com isso, exibi o vídeo.
Links
- Foi fornecido um link com todo o processo e materiais relacionados ao projeto.
Este projeto mostra que, ao acessar a memória interna do sintetizador via mensagens MIDI, é possível implementar uma variedade de funcionalidades, abrindo a possibilidade de explorar todo o potencial do instrumento.
Ainda não há comentários.