Aries 3 16 ноября, 2023 Опубликовано 16 ноября, 2023 (изменено) · Жалоба Приветствую друзья. Это снова я со своими, может быть, дурацкими вопросами. Разбирая прошивку очередного устройства, наткнулся на такой фрагмент: В первой строке слева - байты в окне редактора IAR справа - в окне его же дизассемблера. Слева ниже ассемблерная команда которая получается из этого кода, справа - код который генерирует тот же IAR. Как видно отличие в одном байте, в оригинале FF а я получаю 00. Всё бы ничего, но это важно при подсчёте CRC. Ткните носом, где почитать, почему так получается ? Или объясните по простому, никак не пойму. Изменено 16 ноября, 2023 пользователем Aries Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 16 ноября, 2023 Опубликовано 16 ноября, 2023 · Жалоба Вероятно, эти байты не влияют на результат и эта версия этого компилятора решила использовать нули. "Он художник, он так видит". Оставьте DC8, а команду припишите рядом в комментариях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 16 ноября, 2023 Опубликовано 16 ноября, 2023 · Жалоба 1 час назад, Aries сказал: В первой строке слева - байты в окне редактора IAR справа - в окне его же дизассемблера. Слева ниже ассемблерная команда которая получается из этого кода, справа - код который генерирует тот же IAR. Как видно отличие в одном байте, в оригинале FF а я получаю 00. Вы рассматриваете две разные команды, по разным адресам (4F06 и 4F0C). И почему думаете, что их байты должны быть одинаковыми? Почему дизассемблер показывает их одинаковым мнемокодом - это нужно смотреть в мануал как кодируется данная команда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 16 ноября, 2023 Опубликовано 16 ноября, 2023 (изменено) · Жалоба 1 час назад, Сергей Борщ сказал: ..."Он художник, он так видит". Оставьте DC8, а команду припишите рядом в комментариях. Собственно я так и сделал. 42 минуты назад, jcxz сказал: Вы рассматриваете две разные команды, по разным адресам (4F06 и 4F0C). И почему думаете, что их байты должны быть одинаковыми? Почему дизассемблер показывает их одинаковым мнемокодом - это нужно смотреть в мануал как кодируется данная команда. Почему же разные ? Команды одинаковые. Адреса могут быть любыми, результат тот же. Видимо среда в которой разрабатывался оригинал, в bit.b #0FEh второй байт оставлял не затрагивая, а вот IAR его обнуляет. Отсюда и разница, другого объяснения я не нахожу. В коде много подобных мест, приходится делать вставки типа DC8.... что не украшает листинг. Изменено 16 ноября, 2023 пользователем Aries Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 16 ноября, 2023 Опубликовано 16 ноября, 2023 · Жалоба 49 минут назад, Aries сказал: Почему же разные ? Команды одинаковые. Адреса могут быть любыми, результат тот же. Внимательно смотрим на выложенный вами же скриншот: и сравниваем адреса, выделенные красными рамками. 49 минут назад, Aries сказал: Адреса могут быть любыми, результат тот же. Не факт. Содержимое команды может зависеть от адреса её расположения. В ARM это - обычное дело; вполне возможно, что в MSP430 - тоже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 16 ноября, 2023 Опубликовано 16 ноября, 2023 · Жалоба 50 минут назад, Aries сказал: Видимо среда в которой разрабатывался оригинал, в bit.b #0FEh второй байт оставлял не затрагивая, а вот IAR его обнуляет. Отсюда и разница, другого объяснения я не нахожу. Если вы привели дизасм какого-то кода, сделанного сторонним инструментом, не IAR (а в IAR только дизассемблируете его), то ещё можно предположить, что тот сторонний инструмент вставил в код свою скрытую цифровую подпись. Что вы и видите. Вставки такие могут делаться с помощью неиспользуемых полей в командах или с помощью команд, имеющих разный код (одинакового размера), но производящих одинаковый результат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 16 ноября, 2023 Опубликовано 16 ноября, 2023 · Жалоба 11 минут назад, jcxz сказал: Если вы привели дизасм какого-то кода, сделанного сторонним инструментом, не IAR (а в IAR только дизассемблируете его), то ещё можно предположить, что тот сторонний инструмент вставил в код свою скрытую цифровую подпись. Что вы и видите. Вставки такие могут делаться с помощью неиспользуемых полей в командах или с помощью команд, имеющих разный код (одинакового размера), но производящих одинаковый результат. Я вставил в IAR кусочек дампа, как он есть DC8..., именно так байты лежат в памяти флеша и увидел то, что увидел. Но, если в IARe набрать сей кусок кода в мнемокоде, то код будет выглядеть чуть иначе, а именно 00FE а не FFFE И это не зависит от адресов по которым расположен этот код. Уж не знаю как там в ARMax не знаком с ними так близко. В другом дизасме скажем IDA оригинальный кусок кода видится аналогично тому, как видит его IAR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 16 ноября, 2023 Опубликовано 16 ноября, 2023 · Жалоба 1 час назад, Aries сказал: Я вставил в IAR кусочек дампа, как он есть DC8..., именно так байты лежат в памяти флеша и увидел то, что увидел. Но, если в IARe набрать сей кусок кода в мнемокоде, то код будет выглядеть чуть иначе, а именно 00FE а не FFFE Вместо тысячи слов, открываем наконец-то мануал MSP430. Находим картинку: Смотрим на поле B/W (которое, можно предположить, что означает указатель размера операндов - byte/word). В вашем коде он стоит в положении 'byte' (6-й бит 0xF2 == 1). Что также видно по мнемонике дизасма: 'bit.b'. Соответственно - старший байт 2-го слова инструкции не используется. И может быть любым. Поэтому дизасм его и не показывает. И да - этот неиспользуемый байт мог использоваться для цифровой подписи кода тем инструментом, коим этот код был сгенерён. Ну или туда мог быть просто засунут мусор. PS: Если вы занимаетесь реверсом каких-то прошивок, то книга, описывающая формат команд целевого МК (MSP430), должна быть вашей настольной книгой. Имхо. И таких вопросов у вас вообще не должно возникать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 16 ноября, 2023 Опубликовано 16 ноября, 2023 · Жалоба 55 минут назад, jcxz сказал: ...И таких вопросов у вас вообще не должно возникать. Уж простите великодушно, книга есть конечно же. Но только вопрос таки был не в том почему, а в том - как. Как получить в IARe такой код, вот что меня изначально заставило задать вопрос на форуме. Но так понимаю, зря спрашивал. Что же, спасибо за то, что потратили на меня время. Всем удачи. 👍 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться