Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cortex-M3 EFM32
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
gem
Здравствуйте уважаемые. Помоги решить данную задачу. Есть процессор Cortex-M3 ARM 7, на нем программа, которая включается по коду нажатиями на кнопки. Исходника самой программы нет, но есть слитая программа в бине.
Как найти в коде дизассемблированном строку, где этот код вводится. Как он может выглядеть в коде дизассемблера IDA. Смотрел по кнопкам на какие ноги процесса они идут. Такого вообще в коде нет. И возможно ли это ?
Помогите уважаемые гуру.

весь код такого плана.


Forger
Цитата(gem @ May 27 2018, 08:06) *
И возможно ли это ?
Возможно, но я вижу только два варианта:
1) реверс-инжениринг за очень космические деньги,
2) разработка прошивки с нуля, что тоже ни разу не бесплатно.

В подавляющем большинстве случаев выгоднее выбрать вариант 2.

Я не шучу!

Цитата
Как он может выглядеть в коде дизассемблера IDA. Смотрел по кнопкам на какие ноги процесса они идут. Такого вообще в коде нет.

На эти вопросы НИКТО не сумеет ответить, кроме разработчика прошивки. И то не факт ...
gem
Цитата(Forger @ May 27 2018, 10:58) *
Возможно, но я вижу только два варианта:
1) реверс-инжениринг за очень космические деньги,
2) разработка прошивки с нуля, что тоже ни разу не бесплатно.

В подавляющем большинстве случаев выгоднее выбрать вариант 2.

Я не шучу!


На эти вопросы НИКТО не сумеет ответить, кроме разработчика прошивки. И то не факт ...

Допустим второй вариант, цена вопроса приблизительно от и до.
Forger
Цитата(gem @ May 27 2018, 14:08) *
Допустим второй вариант, цена вопроса приблизительно от и до.

Составляйте ТЗ и создавайте тему в этом разделе:
https://electronix.ru/forum/index.php?showforum=24
Эдди
Есть еще третий вариант: найти автора прошивки и предложить ему заплатить за исходники.
Всяко дешевле будет, чем другие два варианта!
Arlleex
Некогда когда-то, брал бинарник, прошивал его в STM32 и по нему отлаживался (как-то). Хотел поправить кое-что в прошивке ST-Link, который по сети слитый гуляет. Но не помню как отлаживал, если честно. Да и не добился нужного результата по причине отсутствия времени (а потом и желания).
Мысли вслух.
1. По схеме понять, с каких GPIO считываются показания нажатий кнопок.
2. Найти все места, где происходит обращение к нужному регистру GPIO в пространстве ввода/вывода и анализировать программное окружение каждого из них.
3. Отлаживаться в железе через аппаратный отладчик, поставив условную точку останова по изменению данных подозреваемой переменной состояния нажатия кнопки (она по-любому где-то будет).
4. Profit?

P.S. Можете на Си накатать простейшую программу, скомпилировать ее, слинковать ее в .bin и потренироваться на простом примере. Там суть и поймете (при наличии светлой головы, конечно же).
Forger
Цитата(Эдди @ May 27 2018, 14:25) *
Всяко дешевле будет, чем другие два варианта!

Не факт!
Например, если речь идет про крупно серийное изделие, то никто вам не продаст исходники.
С другой стороны, если голая прошивка ТС досталась просто так, то велика вероятность, что и исходники вообще "валяются" на каком-нить гитхабе ))




gem
Купить у автора, не вариант. Да еще знать бы автора. Потому как кто продает и автор, я думаю разные люди. Проще и дешевле готовое изделие купить. Вопрос, а ради чего ?) чтобы пароль поменять ?) Сомневаюсь что есть исходник в паблике, но ход мыслей понял.
gem
Цитата(Эдди @ May 27 2018, 12:25) *
Есть еще третий вариант: найти автора прошивки и предложить ему заплатить за исходники.
Всяко дешевле будет, чем другие два варианта!

Найти бы его автора sm.gif А так я вижу что все теже на манеже, может и автор найдется.
Forger
Цитата(gem @ May 27 2018, 16:02) *
А так я вижу что все теже на манеже, может и автор найдется.

А что это за девайс такой, что прошивка есть, а исходников нем?
mantech
Цитата(Forger @ May 27 2018, 16:15) *
А что это за девайс такой, что прошивка есть, а исходников нем?


Да обычная контрактная разработка, есть железо, есть прошивка. За исходники, т.е. за возможность допиливать под себя, как правило требуют заметно больше денег, либо это оговаривается отдельно при заказе контрактной разработки.

ЗЫ. Реверсировать можно, если есть опыт и куча времени, но если там автор решил чуток подзапутать, то проще новую прогу писать, как уже было сказано..
VladislavS
Что-то мне кажется, что спрашивать тут как на...ть нашего коллегу разработчика это как минимум неэтично, а как максимум противозаконно.
Arlleex
Цитата(VladislavS @ May 27 2018, 19:19) *
Что-то мне кажется, что спрашивать тут как на...ть нашего коллегу разработчика это как минимум неэтично, а как максимум противозаконно.

Что-то мне кажется, что, судя по вопросам ТС, у него не получится свершить подобного рода злодеяние biggrin.gif
Даже если устройство и не сильно сложное, время для реверса нужно много + никаких гарантий, естественно. Ну а по деньгам - 300-400 тысяч, ТС, если предложите, возможно пару человек и заинтересуются (именно реверсом) laughing.gif
gem
Интересно, давайте развивать. Дальше кто больше ?) Где коллега тут и кто его решил на.....ть так я и не понял. Я может знания проверяю и ищю себе хорошего программиста sm.gif
Никаких гарантий и цена 300-400 sm.gif) Сами в это верите?
HardEgor
Цитата(Forger @ May 27 2018, 17:58) *
1) реверс-инжениринг за очень космические деньги,

Откуда там космические деньги?
Есть схема, есть прошивка, и есть два простых варианта - сравнение с набранным кодом или какое-то ветвление при нажатии кнопок.
В первом варианте несколько часов работы, во втором день-два в самом худшем случае.
Вероятность попасть на третий вариант, самомодифицирующийся код - минимальна.
Forger
Цитата(HardEgor @ May 27 2018, 19:42) *
Откуда там космические деньги?

Вот и нашелся автор прошивки laughing.gif

gem
Да мне тоже интересно откуда такие ?) Автор где ?))
Forger
Цитата(gem @ May 27 2018, 19:56) *
Автор где ?))
Автор поста #15 заявляет, что тут все просто )))
Так смело может заявлять только тот, кто, либо очень хорошо знаком с этой прошивкой, либо не в курсе, что прошивка - прошивке рознь: примитивный проект на голом С (или даже ASM) или толстый проект на С++.
Современные компиляторы если и работают для облегчения жизни колупателей прошивок, то в самую самую последнюю очередь biggrin.gif
VladislavS
Особенно если ещё на высоком уровне оптимизации пройдётся по коду, то и автор не узнает свою программу sm.gif
Forger
Цитата(VladislavS @ May 27 2018, 21:12) *
Особенно если ещё на высоком уровне оптимизации пройдётся по коду, то и автор не узнает свою программу sm.gif

Разве что по названию файла прошивки ))
HardEgor
Цитата(Forger @ May 28 2018, 00:21) *
Так смело может заявлять только тот, кто, либо очень хорошо знаком с этой прошивкой, либо не в курсе, что прошивка - прошивке рознь: примитивный проект на голом С (или даже ASM) или толстый проект на С++.

Если вы ни разу не занимались разбором прошивок, то ничем не могу помочь.
На каком бы языке не писалось, процессор выполняет инструкции последовательно. Поэтому разобраться в обработке нажатия кнопок не составляет труда, и не стоит космических денег - надо просто иметь усидчивость и знать систему команд и сам процессор.
На голом си в общем-то пишется подавляющее большинство программ для Cortex-M3, так что встретить что-то другое еще надо постараться.
Я уже писал что представляет самую большую сложность.
Forger
Цитата(HardEgor @ May 27 2018, 22:23) *
Если вы ни разу не занимались разбором прошивок, то ничем не могу помочь.

Вообще, начнем с того, что разбор чужих прошивок - криминал, а разбор своих - клиника.
Я не имею отношения к криминалу и не планирую.
Может быть именно поэтому впервые слышу о подобной деятельности - "разбор прошивок" wacko.gif
Ну, понимаю - доводить до ума чужой "супер" код, когда из проекта сбежали программеры или накодили всякого Г, что сами же не сумели совладать со своим творением...


Цитата
На каком бы языке не писалось, процессор выполняет инструкции последовательно. Поэтому разобраться в обработке нажатия кнопок не составляет труда, и не стоит космических денег

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

Цитата
надо просто иметь усидчивость и знать систему команд и сам процессор.

Вы выбрали себе направление деятельности, похоже, что-то стало получаться. Поздравляю! Новый уровень "мастерства" достигнут.
Ну, так помогите ТС, коли так уверены, что все так просто wink.gif

Цитата
На голом си в общем-то пишется подавляющее большинство программ для Cortex-M3, так что встретить что-то другое еще надо постараться.

Нда, ну тут вообще без комментариев cranky.gif
jcxz
Цитата(HardEgor @ May 27 2018, 19:42) *
Есть схема, есть прошивка, и есть два простых варианта - сравнение с набранным кодом или какое-то ветвление при нажатии кнопок.
В первом варианте несколько часов работы, во втором день-два в самом худшем случае.
Вероятность попасть на третий вариант, самомодифицирующийся код - минимальна.

А как Вам вероятность попасть на несколько десятков КБ кода, расшифровываемых и выполняемых в ОЗУ чем-нить типа AES по введённому с кнопок ключу? laughing.gif
Или даже несколько таких итераций (расшифровываемых в ОЗУ оверлейных кусков кода по разным веткам алгоритма)?
Не боитесь сесть в лужу не на день-два, а на гораздо больше? smile3009.gif

Цитата(HardEgor @ May 27 2018, 22:23) *
Если вы ни разу не занимались разбором прошивок, то ничем не могу помочь.
На каком бы языке не писалось, процессор выполняет инструкции последовательно. Поэтому разобраться в обработке нажатия кнопок не составляет труда, и не стоит космических денег - надо просто иметь усидчивость и знать систему команд и сам процессор.

Ну так объясните нам, как "обработка нажатий кнопок" поможет Вам угадать ключ, если прошивка зашифрована? Раз уж вы занимались, а мы - нет... laughing.gif
HardEgor
Цитата(Forger @ May 28 2018, 02:49) *
Вообще, начнем с того, что разбор чужих прошивок - криминал, а разбор своих - клиника.

Т.е. аргументы кончились, началось навешивание ярлыков sm.gif

Цитата(jcxz @ May 28 2018, 03:04) *
А как Вам вероятность попасть на несколько десятков КБ кода, расшифровываемых и выполняемых в ОЗУ чем-нить типа AES по введённому с кнопок ключу?
Или даже несколько таких итераций (расшифровываемых в ОЗУ оверлейных кусков кода по разным веткам алгоритма)?
Не боитесь сесть в лужу не на день-два, а на гораздо больше?

Вы наверное не внимательно читали тему, я писал что самомодифицирующийся код - отдельная проблема, но решаемая - эмуляторов сейчас под все платформы хватает, но и времени больше потребует.

Цитата(jcxz @ May 28 2018, 03:04) *
Ну так объясните нам, как "обработка нажатий кнопок" поможет Вам угадать ключ, если прошивка зашифрована? Раз уж вы занимались, а мы - нет... laughing.gif

Если зашифрована - никак. Но таких прошивок слишком мало, хотя наверняка представляют самый большой интерес sm.gif
Forger
Цитата(HardEgor @ May 28 2018, 05:47) *
Т.е. аргументы кончились, началось навешивание ярлыков sm.gif

Значит, я попал в самую точку. Рекламируете свои услуги?
esaulenka
Господа, вопрос не в тему. У нас тут технический форум, или бесплатный сеанс психоанализа (пациенты - HardEgor и топикстартер?).

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

В первом сообщении даже картинка IDA есть. И там видно, что а) IDA самостоятельно распознала почти весь (или вообще весь) код и б) программа довольно-таки линейная, высокой оптимизацией компилятора автор не пользовался.
Но нет, мы будем сидеть на попе ровно и строчить послания "там может быть оооочень сложно, лучше за это не браться".
Может. Но для этого надо поднять жопу и заняться анализом, причём не анализом кофейной гущи.
Forger
Цитата(esaulenka @ May 28 2018, 09:39) *
Господа, вопрос не в тему.

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

Самые полезные и информативные ответы как обычно прозвучали в самом начале, а далее идет треп, по теме или нет. Ничего нового. laughing.gif
Если хотите помочь, то пишите сразу в личку ТС, ведь прошивку/схему сюда никто выкладывать не будет.
А иначе - подключайтесь к ... "анализу кофейной гущи" wink.gif
HardEgor
Цитата(Forger @ May 28 2018, 12:10) *
Значит, я попал в самую точку. Рекламируете свои услуги?

Настаиваете на необходимости рекламировать?
Спешу вас опечалить - меня это не интересует, только в качестве развлечения или личной необходимости.
Forger
Цитата(HardEgor @ May 28 2018, 09:51) *
Спешу вас опечалить - меня это не интересует, только в качестве развлечения или личной необходимости.

Если эта деятельность для Вас не профессиональная, то предположу, что в виде хобби Вам пару раз все же удалось расколупать готовые прошивки, поправив там что-то для изменения функционала.
Ну и появилась естественная уверенность, что все возможно sm.gif Но еще раз повторюсь: прошивка прошивке - рознь!

Более того, до сих пор от ТС не прозвучало подробностей: что за изделие, сама прошивка и схема. И именно с этого нужно начинать. Пока этого нет, так и будем часать языками (говорю за себя) sm.gif
gem
Мнения разделились значит, прошивка уже в расшифрованном виде. В том и дело что все вокруг да около, советов никто не дал. Можно или нельзя, сложно, дорого, криминал sm.gif)
Если бы понимал и мог все анилизировать сам, я бы не писал наверное сюда. Возможно знающий человек подсказал бы куда рыть.
Forger
Цитата(gem @ May 28 2018, 10:33) *
Мнения разделились значит, прошивка уже в расшифрованном виде. В том и дело что все вокруг да около, советов никто не дал.
Где прошивка? Схема? Описание как что работает и что нужно получить?
jcxz
Цитата(esaulenka @ May 28 2018, 09:39) *
Особенно с учётом того, что исходный бинарник не зашифрован и (видимо) более-менее свободно распространяется?

Это как Вы определили? Поделитесь. Или обладаете экстрасенсорными способностями?
По вышеприведённой картинке такой вывод сделать нельзя.

Цитата(esaulenka @ May 28 2018, 09:39) *
В первом сообщении даже картинка IDA есть. И там видно, что а) IDA самостоятельно распознала почти весь (или вообще весь) код и б) программа довольно-таки линейная, высокой оптимизацией компилятора автор не пользовался.

Да Вы просто гений высасывания из пальца! biggrin.gif
Автор привёл скриншот каких-то кусков чего-то, непонятно к чему относящихся. Это может быть вообще фрагмент бутлоадера даже, а не основной прошивки.
А основная прошивка лежит рядом и выглядит массивом бессмысленных чисел для IDA, так как зашифрована.

Цитата(esaulenka @ May 28 2018, 09:39) *
Но нет, мы будем сидеть на попе ровно и строчить послания "там может быть оооочень сложно, лучше за это не браться".
Может. Но для этого надо поднять жопу и заняться анализом, причём не анализом кофейной гущи.

Так последуйте своему совету и займитесь!
Rst7
QUOTE (gem @ May 27 2018, 14:08) *
Допустим второй вариант, цена вопроса приблизительно от и до.


Да ладно Вам, нафига с нуля проектировать. Схему прибора, его руководство по эксплуатации и прилюдные заверения, что Ваши намерения чисты, как слеза ребенка, в студию - и я Вам найду эти кнопки за пару сотен мертвых президентов на кофе.
gem
Цитата(Rst7 @ May 28 2018, 13:35) *
Да ладно Вам, нафига с нуля проектировать. Схему прибора, его руководство по эксплуатации и прилюдные заверения, что Ваши намерения чисты, как слеза ребенка, в студию - и я Вам найду эти кнопки за пару сотен мертвых президентов на кофе.

sm.gif круто помогли, спасибо за советы кто участвовал. Видимо нет тут спецов. Одни барыги laughing.gif
esaulenka
Цитата(jcxz @ May 28 2018, 12:45) *
Да Вы просто гений высасывания из пальца! biggrin.gif
Автор привёл скриншот каких-то кусков чего-то, непонятно к чему относящихся. Это может быть вообще фрагмент бутлоадера даже, а не основной прошивки.

Адреса на скриншоте 0x8AXX. Конечно же, все всегда так делают - загрузчик ровно посредине флешки.

Цитата(jcxz @ May 28 2018, 12:45) *
А основная прошивка лежит рядом и выглядит массивом бессмысленных чисел для IDA, так как зашифрована.

Почему-то эти бессмысленные числа сами собой преобразовались в команды, а из тех сложились функции. Чудеса...

Цитата(jcxz @ May 28 2018, 12:45) *
Так последуйте своему совету и займитесь!

Спасибо за мнение. Пожалуй, с Вами диалог можно прекращать.

Цитата(gem @ May 29 2018, 20:59) *
sm.gif круто помогли, спасибо за советы кто участвовал. Видимо нет тут спецов. Одни барыги laughing.gif

Бесплатный совет раз. Почитайте тему, почитайте другие сообщения авторов.
Если 200$ за не очень простую работу - это "барыга-барыга", разговор можно сворачивать. Потому что без всякого шифрования может быть изрядный геморрой. Например, ключ хранится вместе с остальными 100500 настройками, доступ к нему через хитромудрый модуль чтения этих самых настроек. Или нажатия кнпок через 3 буфера прокидываются.

Бесплатный совет два. Если денег нет, займитесь самообразованием. Вот недавно была статья "реверс для самых маленьких" https://habr.com/company/inforion/blog/412561/ с упором как раз в микроконтроллеры.
HardEgor
Цитата(gem @ May 28 2018, 14:33) *
Возможно знающий человек подсказал бы куда рыть.

Попробуйте вот эту статью часть 1 и часть2 почитать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.