my504 2 19 июня, 2018 Опубликовано 19 июня, 2018 · Жалоба Поэтому я начинаю "разбор" с них. Разбор обычно начинают с КОМАНД, а не с полей констант. Тем более, что таблицы констант в ассемблере PIC18 могут быть оформлены и как табличное чтение и как функция команды retlw <const>. Если последний вариант дизассемблируется достаточно очевидно (там нечего искать, достаточно начального адреса стандартного блока с retlw), то вариант с табличным чтением программного флеша совершенно неопределенное занятие без разбора адресующего эту таблицу кода. Ибо при побайтной упаковке таблицы во флеш эта таблица ничем от исполняемого кода внешне не отличается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 19 июня, 2018 Опубликовано 19 июня, 2018 · Жалоба Под "разбором" с литералами-константами подразумевал следующее. После получения "сырого" листинга disasm первоочередная задача - сократить его длину, убирая "бредо-код", соответствующий различным данным. Самое простое - это просмотреть дамп бинарника в символьном виде и диапазоны адресов, которые явно не являются кодом, например строки для LCD, определить в исходнике асм как DB. Если использовать IDA - значительную часть этой работы выполняется (полу)автоматически. Процесс творческий и итерационный. У каждого процессора - свои ньюансы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 19 июня, 2018 Опубликовано 19 июня, 2018 · Жалоба например строки для LCD, определить в исходнике асм как DB. Извините, но Вы - жертва стереотипов. С чего Вы взяли, что строки для LCD будут обязательно определены как DB? Элементарно и целесообразно их определять как DW. Но дело даже не в этом. Я не понимаю чем поможет восстановлению исходника отделение полей констант. Ну отделили, и что? И LCD может быть графическим, и упаковка графики не иметь формата экрана, а состоять из примитивов... Опять же главное в восстановлении исходника - восстановление глобального алгоритма, а так же выделение основных функций этого алгоритма. Поэтому начинать надо с выделения main, то есть участка общей инициализации и главного цикла (суперлупа). И из функций вызываемых этим циклом развернуть остальной код. А где будут константы, - укажут команды табличного чтения. Это элементарно и определяется В САМОМ КОНЦЕ реверсинжиниринга. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 19 июня, 2018 Опубликовано 19 июня, 2018 · Жалоба Извините, но Вы - жертва стереотипов.Не исключаю. Позволю себя процитировать :) Процесс творческий и итерационный. У каждого процессора - свои ньюансы.Поскольку Вы хорошо знаете платформу (PIC), а я - нет (последние 5 лет "сижу" на MSP430) - Вы правы. Да и ТС выкладывать прошивку не пожелал . . . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться