ಎಂಬೆಡೆಡ್ ಸಿಸ್ಟಮ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವ ಮತ್ತು ತನ್ನ ಬಿಡುವಿನ ವೇಳೆಯಲ್ಲಿ BOSS (BEAM-ಆಧಾರಿತ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ವಿತ್ ಸೆಕ್ಯುರಿಟಿ) ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವ ಅನ್ನಾ ಆಂಟೊನೆಂಕೊ, ಯಮಹಾ PSR-E433 ಮ್ಯೂಸಿಕ್ ಸಿಂಥಸೈಜರ್ನ ರಿವರ್ಸ್ ಎಂಜಿನಿಯರಿಂಗ್ ಫಲಿತಾಂಶಗಳನ್ನು ಪ್ರಕಟಿಸಿದರು. ನಡೆಸಿದ ಕೆಲಸದ ಸಮಯದಲ್ಲಿ, ಸಿಂಥಸೈಜರ್ನಲ್ಲಿ ಅಸ್ಪಷ್ಟವಾದ ಶೆಲ್ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಗುರುತಿಸಲಾಗಿದೆ, ಇದು ಫರ್ಮ್ವೇರ್ ಮಟ್ಟದಲ್ಲಿ ಅದರ ಕೋಡ್ನ ಮರಣದಂಡನೆಯನ್ನು ಸಂಘಟಿಸಲು ಸಾಧ್ಯವಾಗಿಸಿತು. SysEx ಸಂದೇಶಗಳನ್ನು ಹೊಂದಿರುವ MIDI ಪ್ಯಾಕೆಟ್ಗಳನ್ನು ಕಳುಹಿಸುವ ಮೂಲಕ ಶೆಲ್ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲಾಗುತ್ತದೆ, ಸಿಂಥಸೈಜರ್ USB ಮೂಲಕ ಸಂಪರ್ಕಗೊಂಡಾಗ ಅದನ್ನು ರವಾನಿಸಬಹುದು. ರಿವರ್ಸ್ ಇಂಜಿನಿಯರಿಂಗ್ ಸಮಯದಲ್ಲಿ ಪಡೆದ ಚಿಪ್ ಮತ್ತು ಫರ್ಮ್ವೇರ್ ಬಗ್ಗೆ ಮಾಹಿತಿ, ಹಾಗೆಯೇ ಕೋಡ್ ಉದಾಹರಣೆಗಳು ಮತ್ತು ಡೀಬಗ್ ಮಾಡುವ ಡಂಪ್ಗಳನ್ನು GitHub ನಲ್ಲಿ ಪೋಸ್ಟ್ ಮಾಡಲಾಗಿದೆ.
ರಿವರ್ಸ್ ಎಂಜಿನಿಯರಿಂಗ್ನಲ್ಲಿ ಆಸಕ್ತಿಯು ಹಲವಾರು ವರ್ಷಗಳ ಹಿಂದೆ ಹುಟ್ಟಿಕೊಂಡಿತು, ಅನ್ನಾ ಸಿಂಥಸೈಜರ್ನ ಒಳಭಾಗವನ್ನು ಧೂಳಿನಿಂದ ಸ್ವಚ್ಛಗೊಳಿಸಲು ನಿರ್ಧರಿಸಿದ ನಂತರ ಮತ್ತು ಅದೇ ಸಮಯದಲ್ಲಿ ಸಾಧನದ ಒಳಭಾಗವನ್ನು ನೋಡುವ ಬಯಕೆಗೆ ಸಂಬಂಧಿಸಿದ ತನ್ನ ಕುತೂಹಲವನ್ನು ಪೂರೈಸಿದಳು. ಬೋರ್ಡ್ YAMAHA SWL01U ಚಿಪ್ ಅನ್ನು ಹೊಂದಿದ್ದು, ಅದರ ಬಗ್ಗೆ ವಿವರವಾದ ಮಾಹಿತಿಯನ್ನು ಇಂಟರ್ನೆಟ್ನಲ್ಲಿ ಕಂಡುಹಿಡಿಯಲಾಗಲಿಲ್ಲ. ಒಂದೆರಡು ತಿಂಗಳ ಹಿಂದೆ, ಅಣ್ಣಾ ಇದೇ ರೀತಿಯ ಸಿಂಥಸೈಜರ್ ಮಾದರಿಯ ಕೈಪಿಡಿಯನ್ನು ನೋಡಿದರು, ಇದರಲ್ಲಿ ಈ ಚಿಪ್ನ ಪಿನ್ಔಟ್ ಇತ್ತು. ಅಣ್ಣಾ ಮತ್ತೊಮ್ಮೆ ಸಾಧನವನ್ನು ಡಿಸ್ಅಸೆಂಬಲ್ ಮಾಡಿದರು ಮತ್ತು JTAG ಡೀಬಗ್ ಇಂಟರ್ಫೇಸ್ ಮತ್ತು UART ಪೋರ್ಟ್ಗಾಗಿ ಬೋರ್ಡ್ನಲ್ಲಿ ಲಭ್ಯವಿರುವ ಪಿನ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರಯೋಗಗಳನ್ನು ಪ್ರಾರಂಭಿಸಿದರು.

OpenOCD ಡೀಬಗ್ಗರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು, JTAG ಮತ್ತು ಪ್ರಯೋಗಗಳಿಗೆ ಸಂಪರ್ಕಿಸುವಾಗ, ಬೋರ್ಡ್ ARM7TDMI ಪ್ರೊಸೆಸರ್ ಕೋರ್ನೊಂದಿಗೆ ಚಿಪ್ ಅನ್ನು ಬಳಸುತ್ತದೆ ಎಂದು ಕಂಡುಬಂದಿದೆ. ಡೀಬಗರ್ನಲ್ಲಿ ಮೆಮೊರಿ ಲೇಔಟ್ ಅನ್ನು ಅಧ್ಯಯನ ಮಾಡಿದ ನಂತರ, ನಾವು ರಾಮ್ ಮತ್ತು ಫ್ಲ್ಯಾಶ್ ಮೆಮೊರಿಯಲ್ಲಿರುವ ಫರ್ಮ್ವೇರ್ನ ವಿಷಯಗಳನ್ನು ಅನ್ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಯಿತು. ಫರ್ಮ್ವೇರ್ ಚಿತ್ರಗಳನ್ನು ನಂತರ ಘಿದ್ರಾ ರಿವರ್ಸ್ ಎಂಜಿನಿಯರಿಂಗ್ ಪ್ಯಾಕೇಜ್ ಬಳಸಿ ವಿಶ್ಲೇಷಿಸಲಾಯಿತು.
ಫರ್ಮ್ವೇರ್ನಿಂದ ಹೊರತೆಗೆಯಲಾದ ಸ್ಟ್ರಿಂಗ್ ಡೇಟಾವನ್ನು ವೀಕ್ಷಿಸುವಾಗ, ಶೆಲ್ ಆಜ್ಞೆಗಳನ್ನು ಹೋಲುವ ಸಾಲುಗಳ ಸೆಟ್ ("ಸಹಾಯ", "ಮಾಹಿತಿ", "ver", "ಲಾಗ್ಔಟ್", ಇತ್ಯಾದಿ) ಗಮನಕ್ಕೆ ಬಂದಿತು. ಈ ಸಾಲುಗಳಿಗೆ ಪಾಯಿಂಟರ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿದಾಗ, ಲಾಗಿನ್ ಇಂಟರ್ಫೇಸ್ ಮತ್ತು ಕಮಾಂಡ್ ಶೆಲ್ ಅನ್ನು ನೆನಪಿಸುವ ಕಮಾಂಡ್ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಕಾರ್ಯಗಳನ್ನು ಕರೆಯುವ ಕೋಡ್ ಅನ್ನು ಬಹಿರಂಗಪಡಿಸಲಾಯಿತು. ಶೆಲ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, "ಲಾಗಿನ್" ಆಜ್ಞೆಯನ್ನು ಒದಗಿಸಲಾಗಿದೆ ಎಂದು ಸಹ ಬಹಿರಂಗಪಡಿಸಲಾಯಿತು, ಅದಕ್ಕೆ ನೀವು ಪಾಸ್ವರ್ಡ್ "#0000" ಅನ್ನು ರವಾನಿಸಬೇಕಾಗುತ್ತದೆ. ಶೂನ್ಯ shell_run_command(char* command_input) {if (shell_login_state == 0) {if (shell_compare_command(command_input, "login") == 0) {shell_ask_passwd(); // ಮುದ್ರಿತ "passwd? " shell_login_state = 1; } } ಬೇರೆ ವೇಳೆ (shell_login_state == 1) { if (shell_compare_command(command_input, "#0000") == 0) {shell_login_ok(); // "ಲಾಗಿನ್ ಸರಿ" shell_login_state = 2 ಅನ್ನು ಮುದ್ರಿಸುತ್ತದೆ; } ಬೇರೆ { shell_print("Passwd ದೋಷ\r"); shell_login_state = 0; } } ಬೇರೆ {// ವಾಸ್ತವವಾಗಿ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಿ } }
ಫರ್ಮ್ವೇರ್ನ ಹೆಚ್ಚಿನ ಪರೀಕ್ಷೆಯು ಆದೇಶಗಳನ್ನು ಬ್ಯಾಚ್ಗಳಲ್ಲಿ ಸಂಸ್ಕರಿಸಲಾಗುತ್ತದೆ ಎಂದು ತೋರಿಸಿದೆ, ಯಾವಾಗಲೂ ಅದೇ 8 ಬೈಟ್ಗಳ ಡೇಟಾದಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಮತ್ತು 0xf7 ಕೋಡ್ನೊಂದಿಗೆ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ. ಸಿಂಥಸೈಜರ್ನೊಂದಿಗಿನ ಬಾಹ್ಯ ಸಂವಾದವನ್ನು MIDI ಮೂಲಕ ಮಾತ್ರ ಕೈಗೊಳ್ಳಲಾಗುತ್ತದೆ ಮತ್ತು MIDI ವಿವರಣೆಯು ವಿಶೇಷ ಸೇವಾ ಪ್ರಕಾರದ SysEx ಸಂದೇಶಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ, ಆಜ್ಞೆಗಳನ್ನು ರವಾನಿಸಲು ಇದನ್ನು ಬಳಸಬಹುದು ಎಂದು ಭಾವಿಸಲಾಗಿದೆ. ಶೆಲ್ನಿಂದ ಪಾರ್ಸ್ ಮಾಡಲಾದ SysEx ಸಂದೇಶಗಳು ಮತ್ತು ಪ್ಯಾಕೆಟ್ಗಳು 0xf0 ಎಂಬ ಒಂದೇ ಕೋಡ್ನೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಯಿತು, ನಂತರ ತಯಾರಕರ ID 0x43 (ಯಮಹಾ) ಊಹೆಯನ್ನು ಮತ್ತಷ್ಟು ಬಲಪಡಿಸುತ್ತದೆ.
ಊಹೆಯನ್ನು ಪರೀಕ್ಷಿಸಲು, ಪೈಥಾನ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬರೆಯಲಾಗಿದೆ ಅದು ಇನ್ಪುಟ್ ಡೇಟಾವನ್ನು MIDI ಪ್ರೋಟೋಕಾಲ್ ಪ್ಯಾಕೆಟ್ಗಳಿಗೆ ಅನುವಾದಿಸುತ್ತದೆ. ಮತ್ತು ವಿಧಾನವು ಕೆಲಸ ಮಾಡಿದೆ: ಪಾಸ್ಡಬ್ಲ್ಯೂಡಿ ಲಾಗಿನ್ ಮಾಡುವುದೇ? #0000 ಲಾಗಿನ್ ಸರಿ > ಸಹಾಯ ಲಾಗೌಟ್ ಸಹಾಯ ? info ver stack perf-on perf-off perf-disp d dp d xxxxx d/s xxxxx m ವಿಳಾಸ ಡೇಟಾ m/b ವಿಳಾಸ ಡೇಟಾ m/w ವಿಳಾಸ DATA m/l ADDRESS DATA > info Develop433Name Develop3341 PSR-opum 3341 ಡೇಟಾ ಮತ್ತು ಸಮಯವನ್ನು ಮಾಡಿ ಮೇ 16 2012 19:00:57 ಜೆ/ಇ ಇಂಗ್ಲೀಷ್ > ಆಯ್ಕೆಮಾಡಿ
"ಸಹಾಯ" ಆಜ್ಞೆಯನ್ನು ಕಳುಹಿಸುವಾಗ ತೋರಿಸಲಾದ ಪ್ರಾಂಪ್ಟ್ ಇತರ ವಿಷಯಗಳ ಜೊತೆಗೆ, ಮೆಮೊರಿಯ ವಿಷಯಗಳನ್ನು ಬದಲಾಯಿಸುವ ಆಜ್ಞೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಈ ಆಜ್ಞೆಗಳನ್ನು ಬಳಸಿಕೊಂಡು, ಅನಿಯಂತ್ರಿತ ಕೋಡ್ ಅನ್ನು ಮೆಮೊರಿಗೆ ಲೋಡ್ ಮಾಡಲು ಮತ್ತು ಅದಕ್ಕೆ ನಿಯಂತ್ರಣವನ್ನು ವರ್ಗಾಯಿಸಲು ಸಾಧ್ಯವಾಯಿತು, ಕಮಾಂಡ್ ಪ್ರೊಸೆಸಿಂಗ್ ಮುಗಿದ ನಂತರ ಹಿಂತಿರುಗಲು ಬಳಸುವ ಸ್ಟಾಕ್ನಲ್ಲಿ ಪಾಯಿಂಟರ್ ಅನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ಪ್ರಯೋಗವಾಗಿ, ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಲ್ಲಿ ಬರೆಯಲಾದ ಸರಳ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬಳಕೆಯಾಗದ ಮೆಮೊರಿ ಪ್ರದೇಶದಲ್ಲಿ ಇರಿಸಲಾಯಿತು, ಅದು ಸ್ಟ್ರಿಂಗ್ "HeloWrld" ಅನ್ನು 8-ಅಕ್ಷರಗಳ LCD ಡಿಸ್ಪ್ಲೇ ಸೂಚಕಕ್ಕೆ ಔಟ್ಪುಟ್ ಮಾಡುತ್ತದೆ. ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಸಾಮಾನ್ಯ MIDI ಫೈಲ್ ಆಗಿ ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲಾಗಿದೆ, ಅದನ್ನು ಸಾಧನಕ್ಕೆ ವರ್ಗಾಯಿಸಬೇಕಾಗಿದೆ.

ಇದರ ನಂತರ, ಎಲ್ಸಿಡಿ ಡಿಸ್ಪ್ಲೇನಲ್ಲಿ ಗ್ರಾಫಿಕ್ಸ್ ಔಟ್ಪುಟ್ನ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಅಧ್ಯಯನ ಮಾಡುವ ಕೆಲಸ ಪ್ರಾರಂಭವಾಯಿತು, ಬಾಹ್ಯ ಸಾಧನದಲ್ಲಿ ಬ್ಯಾಡ್ ಆಪಲ್ ವೀಡಿಯೊದ ಪ್ಲೇಬ್ಯಾಕ್ನೊಂದಿಗೆ ಸಿಂಕ್ರೊನಸ್ ಆಗಿ ಅನಿಯಂತ್ರಿತ ಪಿಕ್ಸೆಲ್ ವಿಷಯವನ್ನು ಅಕ್ಷರ ಪ್ರದೇಶಕ್ಕೆ ಔಟ್ಪುಟ್ ಮಾಡುವ ಕೋಡ್ ತಯಾರಿಕೆಯಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ (ಪ್ರದರ್ಶನದೊಂದಿಗೆ ವೀಡಿಯೊ )


ಮೂಲ: opennet.ru
