Мне всегда нравилось находить новые способы использования старых устройств, даже если мне требовалось время, чтобы обойти безопасность и разработать для них что-то полезное. Если по моим прошлым статьям я давал смартфонам новую жизнь на Android 2.3, то на Android 1.5 всё стало понятно - у устройства появилась возможность стать не просто звонилкой, а полноценным смартфоном, ну в данном случае такой необычный аппарат как электронный переводчик - все интереснее, ведь по сути это дешевая альтернатива легендарным аппаратам типа HP Jornada! Недавно я потратил 1500 рублей на конвертер Ectaco для Windows CE, обошёл встроенную оболочку, написал программу для настройки реестра и даже портировал туда эмулятор NES. Хотите узнать больше об этом процессе? Так что добро пожаловать в разрез!
❯ Предисловие
В мире существует такой интересный класс устройств, как портативные клавиатурные мини-компьютеры – HPC. Главные особенности таких устройств по сравнению с традиционными органайзерами – это полноценная QWERTY-клавиатура, возможность запуска специального программного обеспечения, а иногда и интересные процессоры с весьма необычной архитектурой. Совсем недавно я написал статью о том, как я купил два таких HPC — HP 620LX и HP Jornada 680, восстановил 620LX — и теперь устройство полностью функционально!
но буду до конца честен: оба эти устройства были куплены на самом дне рынка и не полностью работоспособны. Каждая порция стоила 3000 рублей, всего 6000 рублей - для меня очень существенная сумма. Ценник на рабочий экземпляр начинается от 5-6 тысяч рублей, и не всегда в комплекте идет база и дата-кабель. Некоторые читатели скажут, что это всего лишь несколько центов, но для меня сейчас это действительно реальные деньги, и в чате после публикации статьи многие писали, что тоже хотели бы получить подобное оборудование, но шансов нет. Заплатите эту сумму. Тогда я подумал, что стоит поискать альтернативу jornada, которая будет намного дешевле.
Однако с чего начать поиски? Ведь вы хотите компактное устройство с необычным процессором, очевидно, что EEEPC (который, кстати, на вторичном рынке продается за 500 рублей) сюда не подойдет. Коммуникаторы под управлением Windows Mobile тоже довольно дешевы — можно найти некоторые модели HTC или Glofiish за 500-1000 рублей, но это все равно сдвижные чехлы, а хочется форм-фактор ноутбука (кстати, в «ноутбуке» «Компьютер») — это Toshiba Portege G910, который я всегда хотел приобрести). Потом подписчик из Казахстана прислал мне целую коробку вкусностей, в том числе и блокноты Citizen Digital!
Меня очень заинтересовало это устройство, хотя у него был всего лишь простой монохромный ЖК-дисплей, и мне захотелось самому написать о нем что-нибудь. Да, даже в пинг-понге или шутере, где корабль находится на один пиксель влево, а астероид — на один пиксель вправо. Но я понимаю, что в этой конкретной модели вся прошивка находится в ПЗУ (защищенном, физически прошитом один раз на заводе) и самостоятельно написать что-либо для этой модели я не смогу. Поэтому я отправился на барахолку со своим «органайзером» в поисках устройства, которое можно было бы подключать к ПК через USB: мало ли, по крайней мере некоторые модели могут поддерживать настройку в стиле инженерного калькулятора.
Но нет, поиски не увенчались успехом. Но в какой-то момент интернет-барахолка показала мне объявления о продаже электронных переводчиков Ectaco, тоже в разделе «Офис», как и органайзер. Все будет хорошо - ну да, цветной дисплей, ну да, выглядит отлично, но я даже не представляю, какой процессор и операционная система в таком устройстве. Пока я не открыл фото, не присмотрелся к очень знакомому интерфейсу и не увидел это...
Да! Вы все правильно понимаете, на WIndows CE работают переводчики. Если у вас там установлен WinCE, то у вас как минимум много оперативной памяти (не менее 64 МБ), монитор с разрешением 240х320 и достаточно мощный процессор (не менее 150-200 МГц). Далее я захотел разобраться с проблемой, с которой столкнулся, и начал гуглить мануал, чтобы узнать, какие пункты доступны в меню и можно ли через них получить доступ к оболочке WinCE (как на Навигаторе). Из чтения маны понятно, что не может, но я узнал, что для работы устройства обязательно нужна SD-флешка, идущая в комплекте с устройством, иначе устройство зависает на белом экране.
Это также привело к определенным идеям. Устройство либо целиком загружается с SD-карты, либо запускает оттуда программы, позволяющие запускать explorer.exe и удалять из памяти стандартное ПО. Начал искать в сети образ родной флешки. Нашёл на ютубе инструкцию как восстановить такой переводчик, автор видео загрузил архив в облако, скачал и начал копать - там же на устройстве была полная системная папка с отдельными exe файлами для каждой программы!
зайдите в облако, скачайте и начинайте копать - там есть полная системная папка с отдельными exe-файлами для каждой программы, показанной на устройстве!
Именно тогда я понял, что мне нужно убрать устройство! Кроме того, на интернет-барахолках вы также можете найти переводчики других марок, которые могут работать для других систем. Также было бы интересно взломать их (возможно, в Linux!) и попытаться что-нибудь с ними сделать, но я пока не могу себе этого позволить.
когда устройство попало ко мне в руки, я понял, что деньги потрачены не зря: оно компактное (даже меньше, чем iPhone 14 Pro Max), помещается в карман летних шорт, имеет QWERTY-клавиатуру и DPAD (очень полезно для игр).) полезно), еще есть резистивный тачскрин и очень крутой корпус с металлической рамкой дисплея. Вернувшись домой, я сразу же начала ее собирать: такую красивую вещь ни в коем случае нельзя выбрасывать, я верю, что она сможет найти себе новое применение!
Здесь важно отметить, что оборудование Ectaco было лучшим в то время и было дорогим. 15 000 рублей — это большие деньги в 2009 году, это была цена нового Rover Communicator, Xperia X10 или, например, Mio/Glofiish, выпущенного годом позже. Неудивительно, что эти устройства основаны на хорошем железе и проверенной WinCE!
❯ Что под капотом?
Конечно, прежде чем смотреть программное обеспечение, вам необходимо знать, на каком оборудовании работают наши переводчики. Разобрать агрегат несложно, но конструкция очень сложная и требует ухода. Вынули флешку, открутили крышку батарейного отсека и отсоединили аккумулятор. В моем аппарате он был заменен кем-то на новый (родной уже "все»):
Далее откручиваем 4 винта на задней крышке и освобождаем фиксаторы — сама задняя крышка легко снимается. Затем вам нужно будет открутить винты, которые удерживают динамик на месте, и отложить заднюю крышку в сторону. Видим, как выглядит материнская плата (точнее, две):
Извините за качество фотографий в стадии разборки, мой S8 был куплен на самом дне рынка для использования в качестве фотоаппарата и он уже "устал" и был поврежден модуль автофокуса.
Сверху находится материнская плата с процессором, оперативной и флэш-памятью. То есть по сути это SoM (система на модуле), но не общего назначения, а разработанная Ectaco под свои нужды. Существует множество моделей трансляторов, и, возможно, компания изменила конфигурацию оперативной памяти/процессора и т д., оставив шасси прежним. Для дальнейшей разборки стоит отклеить черную наклейку, чтобы не повредить шлейф дисплея, открутить три винта, удерживающие верхнюю пластину, и снять приваренные к пластику корпуса крепления противовеса. Теперь нужно аккуратно вставить шлицевую отвертку, как показано ниже, и прижать ее к пластиковой проставке между верхним и нижним разъемами платы:
Не тяните пальцами за другие части печатной платы. Он настолько тонкий, что согнуть/сломать его не составит труда!
Теперь верхнюю пластину можно снять. Будьте осторожны с кабелем дисплея — он очень хрупкий и может случайно порваться:
Теперь мы можем поближе рассмотреть материнскую плату нашего устройства. Процессор представляет собой чипсет NXP LH7A404-N0F000B3. Это ядро ARM922T (ARM9TDMI, ARMv4), работающее на частоте до 200 МГц. Вполне неплохо, на уровне раннего Intel StrongARM (XScale)! В качестве оперативной памяти используются два банка Samsung K4M56163LG по 32 МБ каждый. По идее объём оперативной памяти можно расширить до 128Мб, как я это сделал в своей статье об обновлении коммуникаторов QTek! Тестовые точки дисплея подписаны, скорее всего, с использованием стандартной TTL-RGB-матрицы (но замену найти сложно).
На задней стороне платы находится флэш-чип NAND в корпусе TSOP Legacy. Это стандартная флэшка Samsung небольшой емкости, но, скорее всего, она содержит только загрузчик — сама система загружается с SD-карты в оперативную память.
Обратите внимание: Японский микронетбук из 2009: смотрим на один из самых миниатюрных x86-лэптопов в нулевых.
Приятно знать, что все контрольные точки на плате подписаны там, где мы видим хотя бы один UART. Это значительно улучшает возможность дооснащения устройства в дальнейшем, единственное, что следует отметить, это то, что консоль ядра Windows CE не висит на этом UART, иначе оно не сможет открыть COM-порт и «удалить» войдите из него в терминал Linux! Именно такая проблема у меня с моим навигатором с WinCE (в SiRF Atlas IV UART всего два, один для GPS модуля, т.е чип надо снимать и припаивать непосредственно к шаре, а второй GPS модуль) системный журнал).Материнская плата содержит зарядное устройство/редуктор, кодек AC97, разъемы и другие модули, необходимые для работы устройства!
❯ Обходим оболочку
итак, теперь, когда мы включаем устройство, оно показывает нам главное меню и встроенную программу-переводчик, а также мультимедийные приложения и игры. Неплохо, но явно недостаточно, да и нет отдельной кнопки или сенсорной последовательности для выхода в explorer.exe, как во многих моделях Навигатора.
Так как я уже знал, что вся система загружается на рамдиск с SD-карты, я сразу понял, что нужно покопаться во флэшке. Вытаскиваем SD-карту и вставляем ее в картридер, и видим следующую картину:
да, мы видим два потенциальных вектора атаки: первый — это system.bin, который представляет собой настоящий «необработанный» образ, используемый для загрузки в оперативную память, и папку System/App, содержащую системные приложения. Я отложил просмотр system.bin и решил начать с самого простого подхода - попробовать заменить exe-файл программы в System/App. Я открываю лаунчер в IDA Pro, который представляет собой меню устройства, и проверяю, проверяются ли какие-либо подписи перед запуском программы. К счастью, ничего не получилось: оказалось, что я действительно перевернул, но не лаунчер, а анимацию запуска, как я потом узнал. Сам лаунчер находится в system.bin, но в прошивке другого аппарата лаунчер находится на флэшке.
Кроме того, в папке лаунчера имеется файл, содержащий пункты меню и описания соответствующих программ. Добавил туда проект, который запускает \Windows\explorer.exe - и всё заработало - устройство дошло до рабочего стола! Но нам нужен способ автоматизировать весь процесс и, самое главное, закрыть родную оболочку (она занимает оперативную память и вы можете случайно переключиться на нее в панели задач).
Мы подошли к столу!
итак: если анимация запуска запускается лаунчером, и нет проверки подписи, то все просто, нужно просто написать небольшую программу для запуска explorer.exe и добавить родное меню. Примерно за 30 минут я написал следующий дрянной код (помимо этого я еще написал итератор для окон Windows, чтобы найти имя класса окна запуска):
int WinMain(HINSTANCE inst, HINSTANCE prevInst, LPWSTR cmdLine, int nShowCmd)
{
// запускаем браузер
Информация PROCESS_INFORMATION;
CreateProcess(L"\\Windows\\explorer.exe", 0, 0, 0, 0, 0, 0, 0, 0, &info);
// Завершаем лаунчер
HWND hwnd = FindWindowW(L"NSGL_WINDOW", 0);
если (hwnd)
{
Идентификатор процесса DWORD;
GetWindowThreadProcessId(hwnd, &procId);
HANDLE proc = OpenProcess (PROCESS_TERMINATE, false, procId);
завершитьПроцесс (процесс, 0);
closehandle(процедура);
}
}
этого кода достаточно, чтобы полностью загрузить систему и полностью "выкинуть" стандартную оболочку из памяти :) Но есть важный нюанс: хоть здесь и используется WinCE 5.0 - достаточно новая система, скомпилированы только бинарники для PocketPC 2003. Работает нормально в VS2005/VS2008, иначе система жалуется на отсутствие библиотек. Имейте это в виду, если хотите кого-то такого же красивого!
однако, поскольку система загружается на виртуальный диск каждый раз при загрузке устройства, системный реестр сбрасывается после завершения работы. Поэтому я добавляю в программу исправленный реестр, как только устройство загружается, и копирую dll-файлы, которые нужны другим программам для работы в Windows/
Неверный DbgMessageBox(wchar_t* str)
{
MessageBox(0, str, L"Ошибка", MB_OK);
}
void PatchRegistryKeyI (путь wchar_t*, ключ wchar_t*, значение DWORD)
{
HKEY Гонконг;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, путь, 0, KEY_READ | KEY_WRITE | KEY_SET_VALUE, &hk) != ERROR_SUCCESS)
{
DbgMessageBox(L"Невозможно открыть путь к реестру");
возвращаться;
}
if(RegSetValueExW(hk, key, 0, REG_DWORD, (BYTE*)&val, sizeof(val)) != ERROR_SUCCESS)
{
DbgMessageBox(L"Невозможно исправить подраздел реестра");
возвращаться;
}
RegCloseKey(hk);
}
Неверная регистрация патча()
{
PatchRegistryKeyI(L"Диспетчер ресурсов", L"ViewAll", 1);
PatchRegistryKeyI(L"Проводник", L"ShowExt", 1);
PatchRegistryKeyI(L"Explorer", L"ShowSys", 1);
PatchRegistryKeyI(L"Проводник", L"Расширенная панель управления", 1);
PatchRegistryKeyI(L"\\SOFTWARE\\Microsoft\\Shell\\OnTop", L"Default", 1);
}
недействительный CopyDlls()
{
constwchar_t* searchPath = L"\\Карта памяти\\Dll\\";
constwchar_t* searchPattern = L"\\Карта памяти\\Dll\\*.*";
WIN32_FIND_DATAW Найти данные;
обработка findFile = FindFirstFileW(searchPattern, &findData);
в то время как (найтиФайл! = INVALID_HANDLE_VALUE)
{
wchar_t srcPath[255];
wchar_t dstPath[255];
wsprintfW((LPWSTR)&srcPath, L"%s%s", searchPath, &findData.cFileName);
wsprintfW((LPWSTR)&dstPath, L"\\Windows\\%s", findData.cFileName);
CopyFileW((LPCWSTR)&srcPath, (LPCWSTR)&dstPath, true);
findFile = FindNextFile(findFile, &findData)? Найти файл: INVALID_HANDLE_VALUE;
}
}
второй вектор атаки — это образ system.bin, который я исследовал позже. Я открыл образ системы в шестнадцатеричном редакторе и увидел, что первый мегабайт просто заполнен нулями, без каких-либо данных. Может это защита для любителей распаковывать РОМы. Я сделал текстовый поиск по сигнатуре CE (часть заголовка изображения) и сразу нашел начало файла: подпись образа CE можно определить по 4 байтам, из которых первые два байта произвольные (я не не знаю, что они означают), последние два (00 EA) являются постоянными. Последовательность символов ECE также может считаться сигнатурой.
удалите лишние мегабайты и с помощью программы dumpromx распакуйте образ устройства. Получаем готовый комплект документов. Позже это помогло мне понять, как работают драйверы в Windows CE. При необходимости вы можете напрямую отредактировать ветку реестра (файл .hv) и заменить программу/библиотеку на свою!
дампромкс -d nk1/nk0.bin
Среди авторских прав программы я нашел имя Вячеслава Боярышникова, который занимался работой над этим устройством в 2008-2009 годах. Отдельное спасибо ему и компании Ectaco за то, что не стали ставить спицы на колеса и сделали процесс модификации максимально простым и приятным: стандартный корпус я обошёл в первый же день. Серьезно, это проблема современных устройств с заблокированным загрузчиком. Хабр — отличный ресурс, может кто-то знает о нем и включил в статью? :) Возможно, ему было бы интересно посмотреть, что случилось с устройством, которое он разработал спустя столько лет.
После этого мы имеем полный доступ к Windows и это сразу максимально удобно - панель задач не скрывается и системные файлы видны в проводнике. Сейчас у меня на флэшку скопировано много разных программ, но как они будут работать, посмотрим позже.
❯ Так что с ним можно сделать теперь?
Хотя устройство работает под управлением Windows (даже CE), для него не так уж много программного обеспечения. Многие программы в HP Jornada и других HPC начала 2000-х годов были скомпилированы для устройств с процессорами SH3 или просто не оптимизированы под разрешение дисплея нашего транслятора, а в отличие от десктопной Windows, CE имеет большое наличие проблем с совместимостью.
Вроде бы - ой, ну есть Windows Mobile на базе того же CE и ее ПО должно хорошо работать с переводчиком, но все конечно не так просто. Особенно, когда вопрос касается игр! Большинство эмуляторов здесь не работают, поскольку им требуется библиотека GX, которой нет в CE. Поэтому я решил сам портировать эмулятор, который будет использовать GDI для отрисовки картинок.
За основу я взял NES Wave от китайской копии телефона Nokia TV E71, отказался от платформозависимого кода и реализовал рендерер с обработкой кнопок для CE. Но вот в чем дело: производительность не так уж и хороша.
Я тогда искал возможности вывести изображение прямо на монитор - и через DirectrDraw (он почему-то есть в дистрибутиве Windows, но без драйвера), и через ExtEscape, и пробовал инвертировать драйвер дисплея, но увы... Что слева медленный GDI - в этом вся суть скорости симуляции из-за преобразования покадрового формата пикселей (5551 Windows в собственный 565). Мое самое большое достижение – это выступление. Не толстый.
Хотя у QTek S110 с PXA272, разогнанным до 208 МГц, вообще нет проблем с переносом эмулятора, поскольку он имеет прямой доступ к фреймбуферу через GX!
Думаю, основная проблема — это отсутствие сетевого стека в системе. К сожалению, здесь нет подключения к Интернету, но, к сожалению, это была бы отличная машина для проверки почты и работы в терминале, благо у нее есть порт Putty!
Но определенное количество полезного программного обеспечения для устройства все же имеется. Например, пресловутый текстовый редактор.
И игроки есть. Кроме того, как плеер устройство работает весьма неплохо. Дополнительно есть TCPMP — если вы хотите смотреть видеоконтент на своем ретро-устройстве, можете попробовать Watch Movies.
И конечно, есть все родные HPC-игры из 2000-х! Раньше они продавались на отдельных дисках!
В настоящее время я активно переношу профили KVM (JVM для J2ME) и MIDP на Windows CE. Если мне это удастся, WinCE будет поддерживать Java-игры!
❯ Заключение
Вот несколько интересных материалов для электронного перевода, которые мы сегодня представили. Очень многообещающее устройство, и если бы у него был прямой доступ к фреймбуферу, оно могло бы стать отличной машиной для ретро-игр. Что вы думаете об идее превратить профильные устройства во что-то совершенно иное? Пишите свои мысли в комментариях!
Я также сейчас ищу оборудование для будущего контента, и вы, мои читатели, можете помочь. Сначала активно ищу дата-кабель для HP Jornada. У меня было все необходимое для создания игры и ознакомления вас с опытом в отдельных статьях и видеороликах, но не было самого главного — дата-кабелей для установки и отладки нашей демо! Так что, если у кого-то оно есть, было бы здорово, если бы вы им поделились.
Я также сейчас ищу телефон Motorola на платформе MAGX или EZX (Linux). К ним относятся RAZR V8 и RAZR V9, EM30 и несколько других устройств. Они отлично подходят для моддинга, и с их помощью вы сможете создавать крутой контент!
У меня есть Telegram-канал «Фан-клуб ерунды», где я публикую свои мысли по поводу ремонта, модификаций и программирования техники за последние несколько лет. Подпишитесь, чтобы не пропустить ничего интересного каждую неделю!
Статья написана при поддержке Time Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропускать новые статьи каждую неделю!
[Мой] Гаджет для опроса Купить Органайзер-переводчик Хорошие вещи Windows Ноутбук Нетбук Программирование C++ Видео Без звука Длинный пост 137Больше интересных статей здесь: Гаджеты.
Источник статьи: Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM.