Перейти к содержанию
    

Реверс прошивки MSP430F67791A

20 минут назад, Aries сказал:

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

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

Да и IAR-у никто не мешает в каких-то случаях оставить в коде MOV #0, R15 не заменяя её на более короткий CLR R15. Например - для выравнивания сегмента (чтобы не лепить дополнительную NOP или по каким иным соображениям).

А тем более - не известно каким компилятором транслировался исходный код, который вы пытаетесь дизассемблировать. Почему думаете, что это был IAR? И откуда знаете каких правил оптимизации придерживался тот инструмент? Может он вообще никогда не производил оптимизацию MOV #0, Rx в CLR Rx ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 минут назад, jcxz сказал:

...который вы пытаетесь дизассемблировать.
Почему думаете, что это был IAR? И откуда знаете каких правил оптимизации придерживался тот инструмент?
Может он вообще никогда не производил оптимизацию MOV #0, Rx в CLR Rx ?

Задача была получить код один в один, но из ассемблера, для возможности внесения изменений.
С этим я справился. Но такие моменты мне не давали покоя. Не знаю на чём написан исходник,
по слухам C# да это и не важно.
Всех благодарю за участие. 👍
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, Aries сказал:

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

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

1. Строился перемещаемый код, и в данном месте шло занесение в R15 результата перемещаемого выражения.

2. 32-битный вариант MOV #0, R15 не был заменён на 16-битный для выравнивания последующего адреса (после этой инструкции), на который откуда-то мог осуществляться переход. Так как переход на выровненный (на границу строки кеша) адрес может занимать меньше тактов.

3. (параноидальный) Компилятор таким образом подписывал код, внося в него скрытую инфу.  :crazy:

4. Проявление некоего бага компилятора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, jcxz сказал:

Такое невозможно в общем случае...  :crazy:

И тем не менее, HEX был получен один в один, правда с ухищрениями о которых уже говорил.
ASM  позволил проводить модификацию кода. А насчёт паранойи - не думаю, там это решено
несколько иначе, для чего и было нужно собрать именно "близнеца".
Ещё раз спасибо всем не равнодушным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/14/2023 at 12:01 PM, jcxz said:

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

1. Строился перемещаемый код, и в данном месте шло занесение в R15 результата перемещаемого выражения.

2. 32-битный вариант MOV #0, R15 не был заменён на 16-битный для выравнивания последующего адреса (после этой инструкции), на который откуда-то мог осуществляться переход. Так как переход на выровненный (на границу строки кеша) адрес может занимать меньше тактов.

3. (параноидальный) Компилятор таким образом подписывал код, внося в него скрытую инфу.  :crazy:

4. Проявление некоего бага компилятора.

ASM - вещь вполне конкретная, по сути те же машинные коды, только выраженные буквами.
Что написал, то и должен получить, так что кажись доводы 1 по 4 как бы некатят ниразу...

IDA - полна косяков, однако это никого не смущает, ибо не для того она как бы создана.
IAR - тоже со своими тараканами, но не особо их там по теме ASM, это к С скорее относится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/16/2023 at 10:43 AM, girts said:

ASM - вещь вполне конкретная, по сути те же машинные коды, только выраженные буквами.
Что написал, то и должен получить, так что кажись доводы 1 по 4 как бы некатят ниразу...

Да ладно! :wink:  А вы когда-нить что-нить писали на ассемблере? И вообще - писали какую-нить программу на чём угодно? А хоть однажды смотрели файлы листингов?

Что такое "компоновщик" - знаете? Как он работает? Как выполняет линковку на заданные адреса? Что такое "перемещаемый код"? Как это работает? знаете?

Что означают двоеточия в строках с "3F40...." в моём первом сообщении в этой теме (строках, взятых из листингов, кстати) - догадываетесь? нет? :biggrin:

PS: Советую почитать учебники по этим вопросам.

Изменено пользователем haker_fox
Нарушение правил 2.1.а.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 14.03.2023 в 12:12, jcxz сказал:

Да и IAR-у никто не мешает в каких-то случаях оставить в коде MOV #0, R15 не заменяя её на более короткий CLR R15.

Могу ли я как то указать IAR_у когда ему это следует делать а когда нет ?
Если да, пните в нужном направлении. 

IAR.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Obam сказал:

Не давайте задействовать регистры-генераторы констант (-;

А как в приведённом примере он их задействует ? 🤷‍♂️

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Obam сказал:

А вот те команды, что из одного слова, там R2, R3 и задействованы.

Серьёзно ? 
Ну так как же заставить IAR не делать это ???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/16/2023 at 11:40 AM, jcxz said:

PS: Советую почитать учебники по этим вопросам, прежде чем нести чушь.

Да и вам того же!

Попроще надо быть, товарищь! И счастье вам улыбнётся.
Всё горе то от ума... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Модератор: @jcxz, @girts, переходы на личности заканчиваем. Охлаждаем пыл, и продолжаем конструктивную беседу. Либо начинаем получать предупреждения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пояснение уважаемому модератору - 
На предупреждения - фиолетово. Это просто нормальная дискуссия и обмен мнениями, просто с отсылкой к литературе, что впрочем, всегда полезно, и не только тем, кто себя считает всезнающими гуру.

По теме - если бы топикстартер загланул бы в файл дефиниции того же MCP430 в IDA (msp430.py) то увидел бы такой абзац - 

    # replace some instructions by simplified mnemonics ("emulated" in TI terms)
    def simplify(self):
        # source mnemonic mapped to a list of matches:
        #   match function, new mnemonic, new operand

в котором чуть дальше заголовка - 

            self.itype_mov: [
                # mov #0, dst -> clr dst
                [ lambda: is_imm(self.cmd.Op1, 0), self.itype_clr, 2 ],

ну и так далее...
Впрочем, на этом теме и можно поставить большую такую жирную точку, ибо вопрос по сути исчерпан...

 

Модератор: обсуждая действия модератора публично, Вы нарушаете правило 3.7 данного форума. Выше же я предупредил начинающуюся дискуссию по выяснению отношений. Такие выяснения возникают на форуме периодически и приводят к замусореванию тем, что никому не выгодно.

 

Я: если констатация факта, что "на предуприждение фиолетово" как то противоречит с пунктом правил 3.7 данного форума, то уж будьте добры разьяснить свою аргументацию, чтоб впредь мы, простые смертные, не оскверняли сиё прекрасное место общения гуру своими неподобающими сентенциями. 

Изменено пользователем girts

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, girts сказал:

...если бы топикстартер загланул бы в файл дефиниции того же MCP430 в IDA...

Не ну может я тупой, может. Только причём тут IDA ? Разговор ведь про IAR.
Чуть выше скрин из него же, на котором видно, что в тексте asm_а команды
одни а в окне его же дизассма одни из 2х байт одни из 4х байт.
Как влиять на это ???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...