реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Перевод дизассемблера обратно в исходник
Марк_Я
сообщение Jun 19 2018, 10:33
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 178
Регистрация: 19-09-07
Из: М.О. г.Фрязино
Пользователь №: 30 656



Цитата(k155la3 @ Jun 17 2018, 17:40) *
Поэтому я начинаю "разбор" с них.

Разбор обычно начинают с КОМАНД, а не с полей констант. Тем более, что таблицы констант в ассемблере PIC18 могут быть оформлены и как табличное чтение и как функция команды retlw <const>. Если последний вариант дизассемблируется достаточно очевидно (там нечего искать, достаточно начального адреса стандартного блока с retlw), то вариант с табличным чтением программного флеша совершенно неопределенное занятие без разбора адресующего эту таблицу кода. Ибо при побайтной упаковке таблицы во флеш эта таблица ничем от исполняемого кода внешне не отличается.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jun 19 2018, 12:14
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Под "разбором" с литералами-константами подразумевал следующее.
После получения "сырого" листинга disasm первоочередная задача - сократить его длину, убирая "бредо-код", соответствующий различным данным.
Самое простое - это просмотреть дамп бинарника в символьном виде и диапазоны адресов, которые явно не являются кодом, например строки для LCD,
определить в исходнике асм как DB. Если использовать IDA - значительную часть этой работы выполняется (полу)автоматически.
Процесс творческий и итерационный. У каждого процессора - свои ньюансы.
Go to the top of the page
 
+Quote Post
Марк_Я
сообщение Jun 19 2018, 14:45
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 178
Регистрация: 19-09-07
Из: М.О. г.Фрязино
Пользователь №: 30 656



Цитата(k155la3 @ Jun 19 2018, 15:14) *
например строки для LCD,
определить в исходнике асм как DB.

Извините, но Вы - жертва стереотипов.
С чего Вы взяли, что строки для LCD будут обязательно определены как DB?
Элементарно и целесообразно их определять как DW.
Но дело даже не в этом. Я не понимаю чем поможет восстановлению исходника отделение полей констант. Ну отделили, и что?
И LCD может быть графическим, и упаковка графики не иметь формата экрана, а состоять из примитивов...
Опять же главное в восстановлении исходника - восстановление глобального алгоритма, а так же выделение основных функций этого алгоритма.
Поэтому начинать надо с выделения main, то есть участка общей инициализации и главного цикла (суперлупа). И из функций вызываемых этим циклом развернуть остальной код.
А где будут константы, - укажут команды табличного чтения. Это элементарно и определяется В САМОМ КОНЦЕ реверсинжиниринга.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jun 19 2018, 18:21
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Марк_Я @ Jun 19 2018, 17:45) *
Извините, но Вы - жертва стереотипов.
Не исключаю. Позволю себя процитировать sm.gif
Цитата
Процесс творческий и итерационный. У каждого процессора - свои ньюансы.
Поскольку Вы хорошо знаете платформу (PIC), а я - нет (последние 5 лет "сижу" на MSP430) - Вы правы.
Да и ТС выкладывать прошивку не пожелал . . .
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th April 2024 - 04:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016