การรันโค้ดระยะไกลผ่านข้อความ MIDI
(psi3.ru)เริ่มต้น
- เคยเป็นเจ้าของซินธิไซเซอร์ Yamaha PSR-E433 มานาน และด้วยความอยากรู้เกี่ยวกับโครงสร้างภายในจึงได้ถอดมันออกมา
- พบชิป "YAMAHA SWL01U" บนบอร์ดวงจรหลัก แต่ไม่พบข้อมูลที่เกี่ยวข้องบนอินเทอร์เน็ต
- ผ่านไปหลายเดือน จนพบคู่มือบริการของซินธิไซเซอร์ที่คล้ายกัน และได้ตรวจสอบคำอธิบายพินของชิปได้
- พยายามดึงข้อมูลชิปผ่านจุดทดสอบ JTAG และอินเทอร์เฟซ UART
การคัดลอกเฟิร์มแวร์
- พยายามอ่าน IDCODE ของชิปผ่านอินเทอร์เฟซ JTAG แต่ได้ค่า IDCODE ที่ไม่คาดคิด
- คาดว่าชิปเป็นคอร์ ARM7TDMI และลองสื่อสารกับชิปด้วย OpenOCD
- การเปลี่ยนแปลงกระแสไฟฟ้าชี้ให้เห็นว่าการสื่อสารกับคอร์ ARM7TDMI สำเร็จ
- ดึงเฟิร์มแวร์เพื่อเริ่มการวิเคราะห์
การวิศวกรรมย้อนกลับเฟิร์มแวร์
- เริ่มการวิศวกรรมย้อนกลับเฟิร์มแวร์ด้วย Ghidra
- พยายามทำความเข้าใจโครงสร้างระบบผ่านสตริงในเฟิร์มแวร์
- พบรายชื่อคำสั่งเชลล์ และจากนั้นเข้าใจการทำงานของระบบได้
Shellcode
- ค้นพบวิธีเข้าถึงหน่วยความจำของซินธิไซเซอร์ผ่านข้อความ MIDI
- ยืนยันได้ว่าสามารถฉีดโค้ดลงใน RAM และรันได้โดยใช้คำสั่งเขียนหน่วยความจำ
- สร้างโค้ดแอสเซมบลีขนาดเล็กที่พิมพ์สตริง "HeloWrld" บนจอ LCD แล้วรัน
Bad Apple
- ทำโปรเจกต์เพื่อแสดงวิดีโอ "Bad Apple" บนจอ LCD ของซินธิไซเซอร์ผ่าน MIDI
- เข้าถึงหน่วยความจำภายในซินธิไซเซอร์ผ่านข้อความ MIDI และใช้วิธีนี้เพื่อแสดงวิดีโอ
ลิงก์
- ให้ลิงก์ที่ครอบคลุมทั้งกระบวนการทั้งหมดของโปรเจกต์
โครงการนี้แสดงให้เห็นว่าการเข้าถึงหน่วยความจำภายในซินธิไซเซอร์ผ่านข้อความ MIDI ทำให้สามารถสร้างฟังก์ชันต่างๆ ได้หลายอย่าง และแสดงให้เห็นถึงศักยภาพในการใช้งานซินธิไซเซอร์ให้เกิดประโยชน์สูงสุด
ยังไม่มีความคิดเห็น