Изучаване на фърмуера на примера на SCX-3200 версия 7, блог без корекции от Mo-skin

Безплатен фърмуер

Изучаване на фърмуера на примера на SCX-3200 версия 7

По широко търсене на читатели пиша поредица от статии за формата на фърмуера на принтера.

Нека започнем, може би, с най-простия, почти от началото на фърмуера на едно устройство. SCX-3200. Започвайки с версия 8, производителят започна да използва криптиране, тук е проста gzip компресия. И така, имаме нужда от:

примера

примера

версия

Лирично отклонение: 2 основни части на фърмуера - буутлоудъра и ядрото. Буутлоудърът проверява контролната сума на фърмуера, разопакова и стартира ядрото. Тук е принудителният режим и отстраняването на грешки. Ядрото е основната работна програма на принтера, която изпълнява функциите за печат, взаимодействие с компютър, мрежови протоколи и всички други работни процеси на устройството.

Сега е време да стартирате Devel Studio. Добавете бутон към формуляра и създайте събитие „Щракване“ за него

примера

версия

От този момент нататък започва програмирането. Напишете следния код:

Компилираме и стартираме (F9 ), натискаме единствения бутон. Ако пътищата до файловете са изписани правилно и не възникнат грешки, виждаме съобщението „OK“. Появилият се файл ‘D:\kernel.hd ’ е нашето разопаковано ядро.

Можете да търсите серийния номер в него.

примера

Усмихваме се и си представяме как това знание преди няколко години можеше да ви обогати значително.

Сега нека заредим ядрото в IMU и да го разглобим малко. Изберете ARMB процесор (big endian):

примера

версия

По-нататък в менютоОпции ->Общи ->Анализ ->Опции на ядрото 1 квадратче за отметкаПреминаване на окончателния анализ ->ОК ->Повторно анализиране на програмата Пушене за няколко минути. Докато тече процесът на анализ на кода, ще ви кажа, че на Ида не може да се вярва на 100%, понякога тя погрешно приема данни за код и обратното. И доста често той мисли за ненужни конструкции, което усложнява разбирането на кода. По-добре е да стартирате изследваните функции в емулатора и да видите какво се случва с регистрите и паметта. Но въпреки това общата картина може да се разбере много по-бързо с помощта на Ида.

версия

Серийният номер се чете от фърмуера по време на изпълнение 0x400C768C и се предава чрез R0 към функцията sub_400DBF70, която го проверява и записва в R0 = 0, ако съвпада.

ROM:400C769C CMP R0, #0 Тук, сравняването на R0 с нула всъщност е мястото, където можете да направите мулти-хардуерен фърмуер, като промените няколко байта.

Това е всичко за сега, следете ни. Ако не разбирате всичко по-горе, тогава няма смисъл да навлизате в тази тема - по-нататък е още по-трудно.

3 мнения относно „Изучаване на фърмуера на примера на SCX-3200 версия 7“

Гори, скъпи Мо-скин! Има опция да опитате да разопаковате фърмуера от 3010, успях да разопаковам ядрото, сега го изучавам. Ако вземем част от 1C-0015CAF6 от файла R1XRM_ES_020002.brn и го пуснем през gzip, получаваме ядро, в което има много интересни неща. Например, това, че в ядрото се споменава факс, скенер, мрежа, цветни касети и т.н., предполага, че това е пън от определен цветен MFP.