Pull to refresh

Comments 8

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

изучайте чужие прошивки только если вы имеете на это право

Вы лично подписывали какие-то соглашения отбирающие у вас это право? (Если да то в замен на что?)

"Потому что могу!" - И это очень популярный и вполне обоснованный ответ.

Правда как по мне, для этих целей лучше подходит IDA (если бюджет позволяет) или Ghidra (если не боимся запускать код от АНБ). Прямо из последнего - пришлось придумать и вычитать BOOTROM на одном из чипов из Великой Поднебесной Империи, чтобы окончательно убедиться в том, что загрузить его с разделов BOOT на eMMC невозможно. Увы, это действительно так. А очень и очень жаль.

"Потому что могу!"

Э, нет...

Если такая возможность прямо не прописана в законодательстве, можно и влететь...

Пример (надеюсь, сможете понять без перевода):

...

Стаття 25. Вільне використання комп’ютерних програм

1. Без дозволу суб’єктів авторського права на комп’ютерну програму  і безоплатно законний користувач комп’ютерної програми має право:...

2) декомпілювати комп’ютерну програму (перетворити її з об’єктного коду у вихідний текст) з метою одержання інформації, необхідної для досягнення її взаємодії з іншою незалежно розробленою комп’ютерною програмою, з дотриманням таких умов:

...

т.е. декомпиляция допускается только с определенной целью и с определенніми условиями.

Ну, мой случай вполне подпадает под исключения. Беда в том, что таких исключений нет в статьях главы 28 УК РФ. Впрочем, как обычно - суровые законы с выборочным применением.

Таки причём тут C++? Опять хештеги путаете?

Ghidra корректно идентифицирует векторы прерываний в отличии от IDA Pro, по крайней мере, под MSP430. Так же, она неплохо конвертирует дизасм листинг в С-псевдокод, который вместе с графом преходов по вызовам помогает увидеть полную структуру программы.

Отличная статья, очень атмосферная сразу вспоминаются времена, когда сидишь над хекс файлом и пытаешься из пары строк ассемблера вытащить логику программы. согласен, что дизасм остаётся полезным навыком, особенно с  кастомными MCU без дебаггера и нормальных доков. По поводу инструментов IDA и Ghidra хороши, но иногда в таких случаях выручает Capstone или тот же Radare2 они позволяют автоматизировать хотя бы базовые вещи вроде поиска векторов прерывов или определения областей. Пару раз сталкивался с ситуацией, когда клонированные китайские STM8 имели мелкие, но критичные отличия в поведении периферии. Поэтому если планируешь переносить логику на более современный контроллер, лучше сразу тестить под эмулятором или хотя бы на стенде. Короче статья хороша, это тот самый сок, который учит думать, а не просто нажимать F5

IDA и Ghidra хороши, но иногда в таких случаях выручает Capstone или тот же Radare2 они позволяют автоматизировать хотя бы базовые вещи вроде поиска векторов прерывов

Ghidra с векторами нормально работает по умолчанию. А вот инстументов, которые могли бы очистить дизасм листинг от мусора я не встречал. Все руками перебирать. А иногда надо, например, собрать прошивку обратно вместо патчинга хекса. Вам такие инструменты встречались?

Sign up to leave a comment.

Articles