Форум программистов, компьютерный форум, киберфорум
Наши страницы
Электроника и радиотехника
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.66/2998: Рейтинг темы: голосов - 2998, средняя оценка - 4.66
DoriDim
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 240
1

Реверсинг прошивателя ST-Link

04.08.2011, 22:30. Просмотров 540742. Ответов 320
Метки нет (Все метки)

Для чего? Хочу вытащить из него полную прошивку, попробовать из огрызка Dyscovery сделать полноценный (ну почти) ST-Link. Естественно, есть аппаратные различия, но они преодолимы - приделать преобразователь уровней и по мелочи всего прочего.
Минут за 15 (код дольше писать ;), чем реверсить) выяснил, что STM8S-Dyscovery представляется как ST-Link v1.
Вопрос вот в чем - не занимаюсь ли я повторением того, что уже сделано ;)? И будет ли кому результат интересен.

UPD1. Прошивка вытащена, но она зашифрована. Ключ типа уже нашел, реверсирую алгоритм шифра. Схема полного ST-Link тоже похоже нашлась на одной из девборд от ST.
UPD2. Не поверите. Расшифровал :). Теперь надо STM32F103 надыбать (стремно на Дискавери проводить эксперименты :)) и попробовать. Если есть смелые люди с готовой платкой под это дело - обращайтесь, интересно потестить.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2011, 22:30
Ответы с готовыми решениями:

Реверсинг прошивки PIC16F726
Здравствуйте! В общем, суть проблемы. Нужно запрограммировать чип Microchip pic16f726. На сайте...

Реверсинг прошивки PIC12F629
Добрый вечер. Решил собрать миниробота на PIC12F629. Соответственно встал вопрос о прошивке. В...

JN5148-001-M03 (Jennic Wireless Microcontrollers). Реверсинг прошивки из бинарника
Имеется МК jn5148-001-m03 и написанная на с++ для него прошивка, хранящаяся в .bin файле. Задача:...

реверсинг
Реверсинг слышал это слово от друга, он кидал линки на англо-язычный сайт...

реверсинг exe
стазу извините естли запостил не туда.. вскрыл 7зипом... там архивы.. подскажите пожалуйста где...

320
DoriDim
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 240
05.08.2011, 14:40 2
Так, осталась еще одна часть - идентификационная и то, что не заменяется при прошивке - 0х4000 байт в начале флеша. Есть идеи, как достать?
Пока могу сказать, что можно перешить ST-Link на дискавери в полноценный, но вот склонировать с нуля - надо искать метод дампа этих начальных байт флеша.
0
Ymk
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,233
05.08.2011, 16:14 3
может, я не очень догнал, но... если вам известен алгоритм шифрования прошивки+ключ, вы можете сделать свою прошивку, которая сдампит любую память.
0
DoriDim
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 240
05.08.2011, 19:37 4
Цитата Сообщение от Ymk
может, я не очень догнал, но... если вам известен алгоритм шифрования прошивки+ключ, вы можете сделать свою прошивку, которая сдампит любую память.
Тоже склоняюсь к этому... К тому же там шифрование только в прошиваторе. В самом ST-Link прошивка некриптована.
Прошерстив инет, все больше убедился в полноценности встроенного ST-Link: в STM32VL-Dyscovery точно такой-же, но обрезаный с другой стороны :) программно тип 0x4a - JTAG Debugger, а в STM8 тип 0x53 - SWIM Debugger, а возможен и там, и там тип 0x4D - JTAG+SWIM Debugger.
Вот бы еще живого владельца ST-Link v1 найти, да попросить пару прог прогнать, было бы полегче.
0
Zhitizmjokov
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 550
05.08.2011, 20:19 5
У меня версия V1.J12.S3 JTAG+SWIM Debugger
0
DoriDim
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 240
05.08.2011, 21:02 6
Цитата Сообщение от Zhitizmjokov
У меня версия V1.J12.S3 JTAG+SWIM Debugger
Это, как я вижу по маркировке, именно ST-Link, так? И именно v1. Не возражаете, если я через пару дней закину программок на запустить? Только прочитать, не более. Может и удастся сделать народный отладчик для всех STM :).

PS. Подпаял JTAG к дискавери, флешку, как и следовало ожидать, напрямую не читает, редиска :). А вот в ОЗУ писать/читать дает. Счас ваять буду прожку, чтоб скопировать кусочек флеша в ОЗУ.
0
Zhitizmjokov
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 550
05.08.2011, 21:24 7
да, это фирмовый ст-линк.
шлите...
0
DoriDim
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 240
05.08.2011, 21:44 8
Даблфолт при чтении флеша... Надо курить устройство защиты.
0
Zhitizmjokov
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 550
05.08.2011, 22:04 9
я думаю нужно мутить заглушку которая бы имитировала оригинальный на поддельном и потом через оригинальный прошивальщик перешивать или просто записать логи при прошивке девайса
0
DoriDim
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 240
05.08.2011, 22:21 10
Цитата Сообщение от Zhitizmjokov
я думаю нужно мутить заглушку которая бы имитировала оригинальный на поддельном и потом через оригинальный прошивальщик перешивать или просто записать логи при прошивке девайса
Нет, к сожалению первые 0х3С00 никак не перешиваются. Похоже там зашита логика DFU, и ее еще не правили. Структура прошивки такова:
1. 0х8000000 - 0х8003С00 - ХЗЧ. Предположительно DFU-код, никак не переписывается.
2. 0х8003С00 - 0х8004000 - конфигурационный блок.
3. 0х8004000 - ... - зависит от версии и типа отладчика
4. 0х800D000 - присутствует только в v1, не зависит от типа отладчика.
Есть в наличии 3,4 и частично 2. Надо узнать только блок 1.
0
Ymk
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,233
05.08.2011, 22:51 11
Цитата Сообщение от DoriDim
Даблфолт при чтении флеша... Надо курить устройство защиты.
чтение в данном случае - это из запущенной внутри программы? или через jtag?
0
DoriDim
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 240
05.08.2011, 22:55 12
Цитата Сообщение от Ymk
Цитата Сообщение от DoriDim
Даблфолт при чтении флеша... Надо курить устройство защиты.
чтение в данном случае - это из запущенной внутри программы? или через jtag?
Из запущеной в SROM программы. Как я прочитал уже - не будет работать. Надо пытаться писать во флеш подсадного, только код флеша считается доверенным.
0
miyvir
0 / 0 / 0
Регистрация: 27.06.2010
Сообщений: 405
05.08.2011, 23:11 13
Мне кажется, что гораздо полезнее было-бы зареверсить USB транспорт ST-Link-а, протокол отладчика, чтоб написать свою версию пришивки (часть работы уже сделана в проекте http://www.versaloon.som ) и/или реализовать свой gdb сервер.
0
DoriDim
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 240
05.08.2011, 23:21 14
Цитата Сообщение от miyvir
Мне кажется, что гораздо полезнее было-бы зареверсить USB транспорт ST-Link-а, протокол отладчика, чтоб написать свою версию пришивки (часть работы уже сделана в проекте http://www.versaloon.som ) и/или реализовать свой gdb сервер.
Транспорт там примитивный - на основе SCSI команд. Вот что я нашел, пока гуглил: http://code.google.som/p/arm-utilities/ - там многое сделано со стороны поддержки STM32, STM8 - в versaloon и OpenOCD. Но пореверсить можно, вы правы.

ЗЫ. Будет немного свободного времени - сделаю прокси для STLinkUSBDryver.dll - тогда можно будет более полно увидеть, что же происходит в процессе.
0
DoriDim
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 240
06.08.2011, 11:09 15
Хе, вы не поверите... В первом блоке находится... диск FAT16 :). Или его эмуляция, что более вероятно - должно же что-то отрабатывать команды DFU и передачу управления на отладчик (что тоже кстати делается через SCSI-команду). Так что содержимое 2.5к из 16ти доподлинно известно, осталось достать остатки.
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
06.08.2011, 13:03 16
В первом блоке находится... диск FAT16 :)
Он тоже прикидывается флешкой, когда его подключаешь? А можно там ярлычки переделать? На EE например :)
0
DoriDim
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 240
06.08.2011, 13:14 17
Цитата Сообщение от dsodir
Он тоже прикидывается флешкой, когда его подключаешь? А можно там ярлычки переделать? На EE например :)
Флешка - это его основной режим. Через него осуществляется прошивка, отладка и прочее. Вообще на мой взгляд сомнительная практика, но работает. Ярлыки поменять в самопальном можно будет элементарно, оригинальный флешер эту область не проверяет. В оригинальном теоретически тоже можно, но для этого надо снять дамп, чтоб знать где менять.
0
kiovos
0 / 0 / 0
Регистрация: 24.08.2010
Сообщений: 353
06.08.2011, 15:24 18
DoriDim, если получится - это будет просто шикарно! Как-раз раздобыл дискавери stm8l. Еще есть отладочная плата тыц (сам брал за 22$). Ну я думаю вы понимаете, для чего мне все это нужно: хочу отладчик, для платы с ebay!
0
DoriDim
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 240
06.08.2011, 15:57 19
У меня сейчас две задачи:
1. Переписать конфигурационную область, чтоб прошиватор сам принял урезаный ST-Link за полный. Пишу прогу для дампа этой части, запись вроде ясно как сделать - этот вариант выглядит самым реальным.
2. Закинуть "подсадного", чтоб по одному из вызовов дампил память. Как - пока непонятно. Скорее всего изучу оригинальный файл прошивки чтоб найти кончик, за который точно дернут. Если удастся - будет полный клон. Пока вариант из далекого будущего :).
Сдамплеными файлами готов поделиться при условии, что все наковыренное не будет использовано в коммерческих целях и будет доступно всем желающим (короче копилефт :)).
0
Shurup
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 37
16.09.2011, 13:20 20
DoriDim, ну что заглох проект ?
0
16.09.2011, 13:20
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2011, 13:20

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

Реверсинг платы на STM32F103RB
Получил на изучение данную плату, на ней установлен процессор ARM STM32F103RBT6 на этом информация...

Перехват функций, реверсинг
Всем доброго времени суток, есть программа(exe), в которой есть пользовательская(не WinAPI)...

FLUKE 983. Реверсинг обмена по RS-232
добрый день. проблема в следующем. имеется прибор, подключенный через rs232 к компу. при запуске...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.