3P by neo 2달전 | ★ favorite | 댓글과 토론

시작

  • Yamaha PSR-E433 신디사이저를 오랫동안 소유하고 있었으며, 내부 구조에 대한 호기심으로 분해하게 됨.
  • 메인 회로 보드에서 "YAMAHA SWL01U" 칩을 발견했으나, 온라인에서 관련 정보를 찾을 수 없었음.
  • 몇 달 후, 유사한 신디사이저의 서비스 매뉴얼을 발견하고, 칩의 핀 설명을 확인하게 됨.
  • JTAG 테스트 포인트와 UART 인터페이스를 통해 칩의 정보를 얻으려 시도함.

펌웨어 덤프

  • JTAG 인터페이스를 통해 칩의 IDCODE를 읽어보려 했으나, 예상치 못한 IDCODE가 나옴.
  • ARM7TDMI 코어로 추정하고 OpenOCD를 사용하여 칩과 통신을 시도함.
  • 전류 변화를 통해 ARM7TDMI 코어와의 통신이 성공적임을 확인함.
  • 펌웨어를 덤프하여 분석을 시작함.

펌웨어 리버싱

  • Ghidra를 사용하여 펌웨어를 리버싱하기 시작함.
  • 펌웨어의 문자열을 통해 시스템의 구조를 이해하려고 시도함.
  • 쉘 명령어 목록을 발견하고, 이를 통해 시스템의 작동 방식을 이해함.

쉘코드

  • MIDI 메시지를 통해 신디사이저의 메모리에 접근할 수 있는 방법을 발견함.
  • 메모리 쓰기 명령을 사용하여 RAM에 코드를 주입하고 실행할 수 있음을 확인함.
  • "HeloWrld" 문자열을 LCD에 출력하는 간단한 어셈블리 코드를 작성하여 실행함.

Bad Apple

  • MIDI를 통해 신디사이저의 LCD에 "Bad Apple" 영상을 출력하는 프로젝트를 진행함.
  • MIDI 메시지를 통해 신디사이저의 내부 메모리에 접근하고, 이를 통해 영상을 출력함.

링크

  • 프로젝트의 전체 과정과 관련된 링크를 제공함.

이 프로젝트는 MIDI 메시지를 통해 신디사이저의 내부 메모리에 접근하고, 이를 통해 다양한 기능을 구현할 수 있음을 보여줌. 이를 통해 신디사이저의 잠재력을 최대한 활용할 수 있는 가능성을 제시함.