Как поменять заставку windows ce

Обновлено: 04.07.2024


Задача тривиальна: необходимо изменить логотип при включении ГУ. О том, как это сделать имея физический доступ описано в разделе часто задаваемых вопросов на сайте вендора. Для тех, у кого физического доступа к SD flash нет —

Я сразу прошу прощения за качество фотографий, снимал на ключ зажигания :)



Перед выполнением всех операций необходимо приготовить флэшку и файл логотипа. Требования к файлу:
— наименование logo.bmp;
— формат bmp, 24bit.

Основная сложность заключается в получении доступа к файловому менеджеру операционной системы. Я нашел, как минимум, два пути, следуя по которым можно прийти к желаему результату.

Путь 1: Использовать нативный файловый менеджер для WinCE.
(К сожалению, данный способ мне не подошел, ввиду отсутствия стилуса при выполнении операции)

На ГУ:
1. Подключить флэшку к ГУ;
2. В меню "Приложения" -> "Файлы" -> "USB" -> переключиться на вкладку "Другое" -> Запустить файл CECMD.EXE;
3. На экране отобразится привычный интерфейс файлового менеджера Windows. С помощью приложения необходимо перенести файл logo.bmp из каталога flash storage в каталог SD storage.
4. Выключить зажигание;
5. Подождать 10 секунд;
6. Включить зажигание;
7. На экране должна отобразиться заветная фраза "Update logo success".

На настольном ПК:
1. Cкачать UPDATE.EXE;
2. Разместить исполняемый файл UPDATE.EXE в корневом каталоге флэшки;
3. Разместить файл логотипа logo.bmp в корневом каталоге флэшки;

На ГУ:
1. Подключить флэшку к ГУ;
2. В меню "Приложения" -> "Опции" -> "Система" -> "Обновить";
3. На экране отобразится диалоговое окно, сообщающее об ошибке. Нажатие на клавишу "Ок" в данном окне приведет Вас к оболочке WinCE.



4. Интерфейс для пользователей Windows очень привычен. Следуем в "My devices", копируем файл logo.bmp из каталога flash storage в каталог SD storage.
5. Выключить зажигание;
6. Подождать 10 секунд;
6. Включить зажигание;
7. На экране должна отобразиться заветная фраза "Update logo success".


В итоге, вместо рекламы дилера имеем свой логотип (ну или все то, что вы захотите там разместить)



Keysight DSOX1102G

Осциллограф должен иметь в своём арсенале любой уважающий себя энтузиаст-электронщик. Осциллографы, кратко говоря, позволяют вам изучать волны электрических сигналов в контуре, а цифровые осциллографы (digital storage oscilloscope, DSO) незаменимы тем, что могут найти редкие ошибки в сигнале, которые не распознает аналоговый осциллограф или мультиметр.

Тема моей статьи — DSOX1102G от компании Keysight Technologies (бывш. Agilent), из их недорогой линейки осциллографов, отличающихся неплохим соотношением цены к качеству по сравнению с продукцией конкурентов. Как и большинство их осциллографов, на этой модели работает встроенная ОС Windows Embedded CE 6.0 (также известная, как Windows CE или WinCE), но, как и в большинстве случаев применения WinCE, её интерфейс вы практически никогда не видите – он спрятан за специально сделанным интерфейсом для пользователя.

Этап 1: пробуждение

Когда в начале 2017 была запущена серия Keysight 1000-X, один из обзорщиков с Hackaday заметил, что способ сохранения данных на этих осциллографах иногда приводил к их падению и перезагрузке, и отметил, что перед загрузкой на экране на несколько секунд можно было увидеть указатель мыши. В его посте была гифка, где он сохраняет файл, вызывающий падение, и я заметил нечто странное на одном из кадров анимации – там можно было различить панель задач Windows сразу перед чёрным экраном с ошибкой. Интересненько.


Выиграв свой осциллограф благодаря конкурсу Scope Month от Keysight, пару месяцев я не думал об этом, пока не наткнулся на экран с отказом самостоятельно. В моём случае я обнаружил, что заголовок Windows CE был виден поверх обработчика отказов осциллографа; перетаскивание заголовка оставляло за собой след, и в итоге подвешивало WinCE. Такое случалось очень редко, поэтому, наткнувшись на отказы впоследствии, я просто позволил обработчику просканировать файловую систему и перезагрузить ОС.

Однако меня это заинтриговало, и я хотел узнать большое о том, что происходит с лежащей в основе системы WinCE. Я обнаружил, что USB-порт осциллографа довольно чувствителен к ошибкам, и простое шатание флэшки в порту может привести к аварийному сбою. Однако этого было недостаточно для сбора нужного количества информации, поскольку это был ненадёжный метод.

Так начались мои поиски доступа к рабочему столу WinCE.

Этап 2: заглянем поглубже

Из-за своего любопытства однажды я решил посмотреть, сможет ли осциллограф считывать и записывать дискеты на 3,5" (или, как говорит молодёжь, распечатанную иконку сохранения) через USB-порт – и он смог! Однако я заметил одну странную проблему; осциллограф аварийно завершал работу, если я оставлял дисковод в USB-порту при включении. Эврика! Я нашёл способ надёжно вызывать аварийный отказ.

Тут, к несчастью, меня поджидало второе серьёзное препятствие. Этот отказ при загрузке происходил, только если в USB-порт было включено единственное устройство — дисковод. Отказа не было, если я использовал USB-хаб, в который включал дисковод. Это означало, что мне придётся очень быстро переключаться между дисководом и USB мышью с клавиатурой. Спешка с целью как можно быстрее вынуть дисковод и воткнуть комбинацию из клавиатуры и тачпада в USB в процессе загрузки была утомительной и раздражающей. Мне нужно было решение получше – железячное решение.



Специальный переключатель A/B для USB, сделанный мною для быстрой замены устройств

Использовав старый USB-кабель, дохлый USB-хаб и DPDT-переключатель, я создал переключатель USB A/B, чтобы упростить и ускорить процесс переключения между устройствами. При помощи этого метода мне удалось попытаться установить контакт с ОС WinCE на долю секунды, пока панель задач была видимой на экране, и до тех пор, пока обработчик отказов не сломал мне всю малину. При помощи магии, заключённой в замедленной съёмке моего Samsung Galaxy S9, я смог определить, что могу отправлять последовательности нажатий клавиш в WinCE и она их обрабатывает – даже на заставке системы! Я смог получить информацию о системе, вслепую нажимая клавиши, и потом изучая отклик при аварийном отказе ПО осциллографа. Тут я столкнулся со вторым препятствием.

Возможность очень краткого взаимодействия с WinCE – это хорошо, но она была бесполезной, поскольку я не мог взять над ней управление до тех пор, пока обработчик отказов перезагрузит систему. Обработчик крепко держался за ОС, и никакая долбёжка по клавиатуре и Ctrl+Alt+Delete не пускали меня обратно в WinCE.

Этап 3: ищем точку опоры

И снова моё периодически играющее любопытство пригодилось, когда я решил использовать свой старый Sony Clie PEG-NX73V (наладонник на PalmOS от 2003 года) в качестве USB-привода. У него была функция импорта данных, позволявшая перетаскивать файлы на карту памяти точно так же, как на съёмный диск.

Точно так же, как и в случае с USB-дисководом, произошёл отказ системы, когда я включил осциллограф, не вытащив PDA. Однако на этот раз обработчик отказов решил, что файловая система PDA – это повреждённый раздел прошивки, и предложил загрузить обновление прошивки с внешней USB-флэшки.


Это поведение не было регулярным, иногда ПО осциллографа всё равно загружалось, и появлялось очень странное окно из WinCE с ярко-голубым указателем мыши, оставлявшим следы на экране. Однако в этом странном состоянии мне удалось оттащить окно ПО осциллографа InfiniiVision в сторону, и я попытался потыкаться с ОС. Но ПО осциллографа вело себя очень агрессивно и возвращало себе фокус каждый раз после клика вне окна. После некоторой возни со странно раскрашенной ОС я смог обойти её. Я не мог просмотреть файловую систему, поскольку не получалось надолго забирать управление от окна ПО осциллографа, но я смог вызвать диалоговое окно свойств системы, где было написано, что осциллограф основан на Windows CE 6.00, и у него есть 100 Мб RAM.


Затем я решил порыться на форумах EEVblog, где люди активно пытаются хакнуть осциллограф, чтобы открыть дополнительные возможности. Там я обнаружил, что ПО ищет файл infiniiVisionStartupOverride.txt в корне USB-флэшки, и если находит, то пытается загрузить с неё ПО осциллографа. И хотя, судя по всему, на самом деле прошивка не загружала ПО с флэшки, этот процесс прервал запуск ПО осциллографа, и тогда уже никто не забирал у меня управление ОС. С этого момента всё стало интереснее – обработчик отказов открывал окно Проводника, и введя в поле для имени файла "*.*", я смог начать рыться в файловой системе осциллографа и USB-флэшки! Именно это мне и было нужно для получения контроля над WinCE. Однако, я встретил очередное препятствие: осциллограф перезагружался через 60 секунд, из-за чего у меня не было много времени на рытьё в операционной системе.



Запрос на обновление прошивки DSOX1102G с диалогом выбора файла с флэшки



Менеджер задач Windows CE показывает запущенные процессы на экране восстановления прошивки

Скопировав несколько инструментов Windows CE, например, Windows CE Task Manager, я заметил два интересных процесса, которые были запущены, когда обработчик отказов ещё был виден — recoverInfiniiVision.exe и processStartupFolder.exe; судя по всему, первый был обработчиком отказов, не дававший мне доступ к WinCE после аварийного отказа ПО осциллографа. Прибив второй процесс при помощи iTaskMgr (бесплатная версия менеджера задач WinCE не даёт убивать процессы) я смог удержать осциллограф от перезагрузок, а прибив первый, я увидел чистый рабочий стол WinCE – и вот я внутри! К несчастью, мне не удалось восстановить панель задач, из-за чего ориентироваться в ОС было довольно неудобно.

Я создал на рабочем столе новую папку, чтобы открыть Проводник, и, наконец, смог заняться изучением файловой системы осциллографа. Этому очень помогла программа Total Commander/CE, имеющая встроенный текстовый редактор, которого не было в данной версии WinCE.



Копаясь в файловой системе при помощи Total Commander/CE (пока никакой панели задач)

Этап 4: полный контроль

Теперь, сумев добраться до небесно-голубого рабочего стола, для полноценного ощущения WinCE я должен был восстановить панель задач. Погуглив, полазав по Stack Overflow, я накидал небольшую программу для этого. Открыв её из Проводника, я получил полную версию рабочего стола WinCE! Наконец у меня был полный контроль над базовой ОС!



Свобода – полноценный рабочий стол WinCE на осциллографе!

С этого момента я начал рыться в файловой системе и смотреть, какие интересные инструменты там можно найти. Интерпретатор командной строки не хотел запускаться, однако я покопался в реестре и нашёл ключ HKEY_LOCAL_MACHINE\Drivers\Console\OutputTo, значение которого было 0xFFFFFFFF. Поменяв его на 0, я сумел сделать Command Prompt видимым на рабочем столе, поэтому я сделал ещё одну небольшую программу, которая занималась именно этим.

Всё шло хорошо, я сделал командный файл со всеми командами, необходимыми для того, чтобы убивать ПО осциллографа, обработчик стартовой папки, обработчик отказов, восстанавливать панель задач и разрешать запуск Command Prompt. Однако для открытия меню обработчика отказов требовался мой PDA, а это означало, что другие не смогут воспроизвести такой эффект.

Покопавшись дальше, я обнаружил, что как только появлялась заставка и начинали мигать светодиоды на панели, WinCE начинала обрабатывать нажатия клавиш даже без устройства, ронявшего ПО. Нажатие win+U подвешивало осциллограф, поскольку этим я открывал меню Пуск и выбирал опцию Suspend (и у ОС не было возможности вернуть после этого контроль, поскольку у осциллографа была только кнопка выключения питания). Помня это, я переименовал свой файл в a.bat, чтобы его имя было проще набирать, и попытался запускать его при загрузке через win+R, команду \usb\a.bat и нажатия Enter. Но осциллограф в результате просто показывал заставку на экране, хотя в фоне WinCE была жива, и я просто не мог видеть, что там происходит. Оказывается, что обработчик отказов был необходимым компонентом для демонстрации рабочего стола ОС, и мне нужно было просто добавить в командный файл несколько строчек для запуска и последующей остановки обработчика отказов. Добавив эти последние штрихи, я смог (полуавтоматически) загружать осциллограф прямо до появления рабочего стола, используя только USB-флэшку, мышь и клавиатуру!

Этап 4: Да, на нём запускается DOOM!

Получив доступ к WinCE, я смог, наконец, ответить на вопрос: «Запускается ли на нём Doom?» И, как оказалось, реально запускается! После запуска осциллографа на это ушло полтора года, но до этой вехи я, наконец, дошёл.



Это не обман: на осциллографе Keysight 1000 X можно запустить Doom!



Doom II работает на моём осциллографе DSOX1102G! (3 кадра в секунду)



Запуск Doom в окошке размером 320×240 позволило выжать достаточно кадров в секунду для игры. Посмотрите, какая палитра цветов!

В следующей статье я ещё немного поиграюсь с этой легендарной видеоигрой на железяке, которая никогда не предназначалась для игр.


Doom в действии в разрешении 320×240, 256 цветов! На осциллографе!

Файлы для скачивания

Я выложил файлы, которые могут вам понадобиться для того, чтобы попробовать то же самое на своём осциллографе – но учтите, я не отвечаю за его превращение в кирпич или что-то ещё неприятное! Я проверял всё это только на своём DSOX1102G, но подозреваю, что другие модели серии 1000 X и другие осциллографы от Keysight, обладающие функцией восстановления прошивки, тоже могут сработать. Прошивка осциллографа сделана так, что вся WinCE запускается в оперативной памяти и не сохраняется после перезагрузки, поэтому все изменения в ОС, ломающие систему, не превратят осциллограф в кирпич (файлы с прошивкой лежат в директориях NAND-флэшки, которые нельзя открыть через Проводник, а можно лишь набрать по имени).

Флэшку необходимо будет отформатировать в FAT или FAT32, и распаковать в её корень zip-архив Scope Liberator. Инструкции содержатся в readme.txt.

Если вам интересен исходный код вспомогательных программ, которые возвращают панель задач и интерпретатор командной строки, я их тоже выложил.


Как и все интересные истории всё начинается со случайностей, и моя история не исключение. Началось все с того что в закромах полочного шкафа, был обнаружен непримечательный дивайс, с виду не подававших никаких признаков жизни. Дивайсом является PROLOGY iMAP-527MG, Портативная навигационная система GPS 5" TFT, когда-то давным давно используемая, пока морально не устарела и не отправилась смиренно терять заряд. С небольшими усилиями по поиску подходящего зарядного устройства, был возвращен к жизни и показывал следующие картины.

При запуске

При запуске

После запуска показывал геолокацию и карту дорог. Имелась возможность в главное меню, где были найдены настройки (аудио и виде), простой аудио\видео проигрыватель, калькулятор и даже карточная игра, что-то вроде косынки. Сохранить доказательство в тот момент и не думалось, так что поверьте на слово.

Ничего необычного, думалось мне, но при детальном осмотре была замечена следующая наклейка с надписью, которая меня и заинтересовала.

А именно: Windows Embedded CE 6.0

А именно: Windows Embedded CE 6.0

Windows. Данная надпись смутила меня и погрузила в раздумье, а как оно вообще работает, говоря простым языком. В ходе размышления, пришла мысль что это просто программа, автоматически запускаемая на необычной версии Windows (фантазии, так сказать, оказавшиеся реальностью).

Поиск

Я решил пойти дальше, найти подтверждения моей гипотезе. И как это полагается, обратился в интернет с данным вопросом: Как выйти из приложения ? / как получить доступ к windows в привычном виде ?.

В ходе исследования ОС Windows SE 6.0, разузнал, что её рабочее окружение похоже на старые версии Windows (по крайней мере оно мне их напоминало), что имеются способы да неё "достучаться".
Здесь должен добавить, что в настройках приложения карт (о которых говорилось выше), можно было выбирать режим подключения: как обычный cьемный накопитель или в режиме функции ActiveSync. По умолчанию стоял режим сьемного накопителя.

Первый способ на который я наткнулся было подключение iMap по USB к компьютеру, создание пустого explorer.exe, перемещение его в корневую папку накопителя навигатора(как там говорилось). С последующем перезапуском навигатора, в результате чего ожидалось увидеть рабочий стол Windows SE. Но этот способ не был бы первым, если бы все удалось с первого раза.

Проделав операцию и не получив результат, я все вернул в исходное состояние и отправился искать решение дальше.

Второй способ. На просторах неприглядных форумов заметил информацию о настройках реестра. Подумав - понял, что программа навигатор запускается сразу же при старте windows. Пойдя в глубь на очередном специализированном форуме была найдено полное описание всего реестра Windows SE, а также советы по его изменению.

Прочитав его, поиски сузились: Ветвь реестра: HKEY_LOCAL_MACHINE\init.

Далее для редактирования реестра, как я узнал, мне понадобилось установка нескольких специализированное программ.

Редактирование реестра, как я понял, требовало непросто подключение навигатора как съемного накопителя, а подключение в режиме синхронизации. Для этого в настройках навигатора выбирается режим ActiveSync. А на пк установлено специальное ПО ActiveSync 4.5 с офф сайта.

Вторая программа была Registery Workshop, непосредственно для редактирования реестра.
И собственно можно было начинать:

Вот он ключ от двери в WinSe

Перейдя в нужную ветку реестра, вычитав что в этом разделе можно добавлять свои ключи для запуска необходимых программ и значение к ним (например Launch=Explorer.exe, чтобы попасть сразу на рабочий стол ), но нельзя добавлять номера Launch до 20 и в промежутке от 20 до 60 включительно.

И все сошлось, как видим значение в ключе Launch70 было GPITGuinder.exe, логично было предположить что и была команда автозапуска программы навигатора.

Решение: изменение значение ключа Launch70 на explorer.exe.

Результат: После выполнения перезагрузки (выключение и включение посредством нажатия кнопки) в свет вышел долгожданный рабочий стол.

Читайте также: