EIKA 0 11 октября, 2020 Опубликовано 11 октября, 2020 (изменено) · Жалоба Я нарисовал в теории, но с учетом того как эти кнопки называются и что делают в коде. Вероятность достоверности 99% и более. Потому, что вариантов других нет. Плата пока НЕ осмотрена. Я лишь говорю о том, что шифта нет на мембране / резине. Даже если шифт есть на PCB, его придется коротить перемычкой. Валкодер уже мимо кассы, так как его нет в кеймаппинге, да и он не нужен. Тем временем добрый человек нашел единственный кусок кода, который вызывает бутстрап (отдается код возврата 0x1C8). v8 = 0; do { if ( *(KeyMapping + 5) | (*(KeyMapping + 6) << 8) | (*(KeyMapping + 7) << 16) | (*(KeyMapping + 8) << 24) && (*(*(KeyMapping + 1) | (*(KeyMapping + 2) << 8) | (*(KeyMapping + 3) << 16) | (*(KeyMapping + 4) << 24)) - 0x34) <= 2u ) { ++v8; } v9 = *(KeyMapping + 9); KeyMapping += 9; } while ( v9 != 255 ); if ( v8 == 3 ) { DebugPrintf("Request to launch Bootstrap.bin received.\r\n"); return 0x1C8; } По этому коду видно, что bootstrap.bin вызовется когда v8 будет равно 3. А случится это когда вот это условие выполнится 3 раза: if ( *(KeyMapping + 5) | (*(KeyMapping + 6) << 8) | (*(KeyMapping + 7) << 16) | (*(KeyMapping + 8) << 24) && (*(*(KeyMapping + 1) | (*(KeyMapping + 2) << 8) | (*(KeyMapping + 3) << 16) | (*(KeyMapping + 4) << 24)) - 0x34) <= 2u ) Итого, в уравнении остается одна-две неизвестных: 1. Это байт из "карты клавиатуры KeyMapping" (который указывается через +, например, +5, +6, +8). А откуда брать содержимое байта, не понятно. 2. И это некий адрес в памяти 0x34. Который, видимо, "железный". Ответив на эти вопросы можно будет получить названия кнопок, которые вводят в бутстрап. Есть тут местные гении? Ну, ребят, давайте напряжемся и получим суперпри$$$! Изменено 11 октября, 2020 пользователем EIKA Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oymyacon 0 11 октября, 2020 Опубликовано 11 октября, 2020 · Жалоба 3 hours ago, EIKA said: Так тут USB же реализован в WinCE, бутлоадер то как ее распознает? Никакого обычного PC там нет. Это какой-то OMAP ARM + WinCE. Более того, клавиатура не распознается даже в WinCE на рабочем приборе. Вопрос был прост: Вы пробовали или нет? Отговорки можете придумывать только самому себе у Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 11 октября, 2020 Опубликовано 11 октября, 2020 · Жалоба 6 часов назад, EIKA сказал: Доступ ко второму аналогичному прибору как может помочь? да почти никак, раз первый прибор пытается грузится и останавливается, то стартовый бутлоадер живой вот если затереть первичный бутлоадер, то все сильно было бы сложнее - из второго прибора надо было бы извлечь SoM, аккуратно сдуть флешку с фирмварью, слить с нее полный дамп, потом на окирпиченном, аналогично сдуть флеш и накатить в нее содержимое живого прибора в вашем случае ищем магическую комбинацию, по которой бутлоадер принимает решение об апдейте с юсб флешки если функция возвращает 255, то я бы квалифицировал, как "нет нажатия" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EIKA 0 11 октября, 2020 Опубликовано 11 октября, 2020 · Жалоба 2 hours ago, Oymyacon said: Вопрос был прост: Вы пробовали или нет? Отговорки можете придумывать только самому себе у Какие отговорки, я написал, что поддержки клавиатуры нет даже в работающем приборе! Нет в этом устройстве драйвера клавиатуры даже в Windows! Что непонятного? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 33 11 октября, 2020 Опубликовано 11 октября, 2020 · Жалоба В юзермануале вообще то такое есть. Quote If the Site Master is not functioning as expected, perform a preset. All the current settings and applied calibration factors will be cleared. The next step if a preset does not resolve the issue is a Factory Reset. This can be performed at power on by holding down the ESC key and pressing the power button, or through the Preset (9) menu. Т.е ESC как то завязан на сброс параметров. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 11 октября, 2020 Опубликовано 11 октября, 2020 · Жалоба 6 часов назад, EIKA сказал: Итого, в уравнении остается одна-две неизвестных: 1. Это байт из "карты клавиатуры KeyMapping" (который указывается через +, например, +5, +6, +8). А откуда брать содержимое байта, не понятно. 2. И это некий адрес в памяти 0x34. Который, видимо, "железный". покрутил бинарники в Ida, ничего умного не нашел в spl.exe есть вхождение main(), ближе к концу которого делается вызов TestForSecretKeypresses() в которой есть заветная ветка с завершением LDR R0, =aRequestToLaunc BL DebugPrintfMOV R0, #0x1C8 // тот самый код LDMFD SP!, {R4-R6,PC} а при возвращение в main() анализ кода возврата LDRH R3, [SP,#0x78+var_26] TST R3, #4 MOV R5, R0 BNE loc_86004C50 и двигается на выход из main() из странного - нет сторонних вызовов опроса кнопок. судя по коду использован порт самого omap (gpio5) и вероятно клавиатура устроена матрицей кнопок (извращения в виде отдельных кнопок через резисторы и АЦП откидываю, как и использование отдельного i2c контроллера кнопок тоже). тогда обычно делают стандартно - порт или часть порта на выход, и часть пинов на вход. далее гоняют уровень на отдельных выводах и смотрят что на входах. отсюда можно вычислить в каком "перекрестье" нажали кнопку. антидребезг и фантомы по вкусу. есть еще пара загадочных функций TestBootstrapKeys() те же сдвиги и сравнение и GetKeysDown() которая еще куда-то стучится по i2c и похоже "адрес в памяти 0х34" это просто константа в TestForSecretKeypresses() SUB R2, R2, #0x34 ЗЫ там под кузовом WinCE 5.0, а жизнь usb hid началась вроде как с 6.0.. т.ч. не должна работать клавиатура ни в мелкой венде, ни в т.б. загрузчике Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 33 11 октября, 2020 Опубликовано 11 октября, 2020 · Жалоба 21 minutes ago, Jury093 said: покрутил бинарники в Ida, ничего умного не нашел А с какими параметрами бинарник в Иду грузили чтобы сегменты кода-данных правильно проинитились? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EIKA 0 11 октября, 2020 Опубликовано 11 октября, 2020 (изменено) · Жалоба 1 hour ago, khach said: Т.е ESC как то завязан на сброс параметров. Спасибо за оттвет. Но это чутка другое. Это запрос режима Reset, когда стираются файлы калибровки тач-скрина и прочее. Как это было 15 лет назад во времена КПК. У меня проблема глубже. И я забыл об этом написать, моя вина. При обновлении прошивки, которая выполнялась минут 10, не нашелся файл SM-L (насколько я понял, это образ WinCE). Хотя на флешке, с которой выполнялся апгрейл, он есть и он целый, и у него верная CRC. По какой-то причине СайтМастер не смог его подцепить. То есть, апгрейд что-то там делал минут 10, а потом написал следующее: Таким образом, как я подозреваю, у меня на флешке сейчас СайтМастера нет образа ОС. А бутлоадер выполняет нормальный старт. ОС в устройстве Windows Embedded CE 6.0 Core. Изменено 11 октября, 2020 пользователем EIKA Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EIKA 0 11 октября, 2020 Опубликовано 11 октября, 2020 · Жалоба Factory Reset нормально вызывается через ESC + Power On, но висит с тем же экраном Loading OS..., но внизу с припиской Applying Factory Reset. 12 минут так висело, выключил, так как явно эта функция тоже не работает и желает чтобы была ОС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 33 11 октября, 2020 Опубликовано 11 октября, 2020 · Жалоба Предполагалось в дизасмленном бутлоадере найти функцию которая ESC + Power On обрабатывает и поискать там другие возможности- выход в дебаг, принудительный апгрейд фирмвари итд. Скорее всего перехват клавиатуры после включения для всех возможных сценариев будет в одном месте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EIKA 0 12 октября, 2020 Опубликовано 12 октября, 2020 · Жалоба 5 hours ago, khach said: Предполагалось в дизасмленном бутлоадере найти функцию которая ESC + Power On обрабатывает и поискать там другие возможности- выход в дебаг, принудительный апгрейд фирмвари итд. Скорее всего перехват клавиатуры после включения для всех возможных сценариев будет в одном месте. В этом случае полностью согласен. Код, видимо, этот. Но ясности с клавишами он не добавляет: do { if ( v12[5] | (v12[6] << 8) | (v12[7] << 16) | (v12[8] << 24) ) { ++v14; if ( !v13 ) v11 = 1; } v15 = v12[9]; v12 += 9; v13 = v15; } while ( v15 != 255 ); v16 = v14 == 1; if ( !v11 ) v16 = 0; if ( v16 ) { DebugPrintf("Factory Reset requested. \r\n"); return 27; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 33 12 октября, 2020 Опубликовано 12 октября, 2020 · Жалоба 3 hours ago, EIKA said: DebugPrintf("Factory Reset requested. \r\n"); Кстати, неплохо бы посмотреть все что выводит DebugPrint - иногда там прямо видно консоль бутлоадера. Конечно прийдется раскручивать прибор чтобы добраться до последовательного порта DebugPrint-а. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EIKA 0 12 октября, 2020 Опубликовано 12 октября, 2020 · Жалоба А оно не в файл пишет что ли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 12 октября, 2020 Опубликовано 12 октября, 2020 (изменено) · Жалоба 14 часов назад, khach сказал: А с какими параметрами бинарник в Иду грузили чтобы сегменты кода-данных правильно проинитились? параметры не задаю, выбирают тип PE, меняю процессор на ARM, выбираю spl.exe и autoanalize, далее софт сам все раскладывает так выглядит фрагмент keymapping .data:860074CC KeyMapping DCB 0, 0xB8, 0x71, 0, 0x86, 0, 0, 0, 0, 3, 0xBC, 0x71 .data:860074CC ; DATA XREF: .text:off_8600008Co .data:860074CC ; .text:off_86000110o ... .data:860074CC DCB 0, 0x86, 0, 0, 0, 0, 4, 0xC4, 0x71, 0, 0x86, 0, 0 .data:860074CC DCB 0, 0, 5, 0x60, 0x67, 0, 0x86, 0, 0, 0, 0, 6, 0x68 .data:860074CC DCB 0x67, 0, 0x86, 0, 0, 0, 0, 0x10, 0xCC, 0x71, 0, 0x86 да, по клавиатуре/мыше, в аттаче, достоверность непонятна, т.к. имя документа латиницей на русском.. Изменено 12 октября, 2020 пользователем Jury093 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 33 12 октября, 2020 Опубликовано 12 октября, 2020 · Жалоба 30 minutes ago, Jury093 said: выбираю spl.exe Этот файл у меня автоматом грузится как ARM ELF ( ida 7.0) а вот хотелось бы загрузить на анализ bootstrap.bin. Ну и поищите в интернете, может для этого анализатора найдется фото платы с процессором и распиновка армовского JTAG. Тогда отладичком может получится по коду полазить или хотя бы полную копию флеша без выпаивания снять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться