|
как считать программу с AVR?, AVR->HEX->ASM? |
|
|
|
Dec 24 2007, 09:21
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(coolibin @ Dec 24 2007, 12:04)  Я, извиняюсь, залочен это типа запрет на считывание? Да если LOCK bits установлены то флеш не прочитать будет. Цитата(coolibin @ Dec 24 2007, 12:04)  А счиывать программатором через avreal32? Ну это смотря какой у вас программатор. Обычно тем софтом, которым шьете можно и обратно прочитать.
|
|
|
|
|
Jan 9 2008, 14:53
|
Местный
  
Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101

|
Цитата(coolibin @ Jan 9 2008, 11:00)  А почему он не заменяет константы на имена портов? и где находится сегмент данных(.dseg)? имхо, если известны данные легче разбиратся с программой))) А откуда он узнает, как Вы привыкли называть 38-ю ячейку памяти? В редактор, "найти - заменить все"... Потом дебаггер, точки входа 0-й адрес или другие, в зависимости от fuses "BLB" контроллера. И вперёд.
Сообщение отредактировал Maik-vs - Jan 9 2008, 14:56
|
|
|
|
|
Jan 10 2008, 07:50
|
Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228

|
Цитата(Maik-vs @ Jan 9 2008, 16:53)  А откуда он узнает, как Вы привыкли называть 38-ю ячейку памяти? ... Например, значение PORTD для atmega16 известно, он(ReAVR) мог бы и подставить! Цитата(KRS @ Jan 10 2008, 09:22)  Так для этого и нужна IDA, там можно все это сделать, и навигация по коду будет очень удобная, перекресные ссылки... А .dseg? .dseq IDA покажет?
Сообщение отредактировал coolibin - Jan 10 2008, 07:46
--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
|
|
|
|
|
Jan 10 2008, 10:38
|
Местный
  
Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101

|
Цитата(coolibin @ Jan 10 2008, 10:50)  Например, значение PORTD для atmega16 известно, он(ReAVR) мог бы и подставить! А .dseg? .dseq IDA покажет? Ну, если будет знать, что это для меги16, то таки да. Вы знаете, замена констант - это 2% от всей работы. Вам же надо понять алгоритм, да? А понятных названий для регистров нет, для ячеек памяти нет; где массив, где переменная? Программа писалась на С или ассемблере или ещё на чём? Всё это нужно сделать головой и руками в процессе копания в коде. И никакая IDA Вам тут не поможет. Так что успехов в труде.
|
|
|
|
|
Jan 11 2008, 09:40
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(coolibin @ Jan 11 2008, 11:28)  Ладно, с константами согласен можно и ручками, а вот данные, строки текста, например, ох как помогают в разборе программы, а ReAVR их походу не распознает(((( Вам надо разобраться с IDA, даже там где она не распознает строки, Вы можете указать тип данных...
|
|
|
|
|
Jan 11 2008, 13:13
|
Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228

|
После дизассемблирования в ReAVR в коде присутсвует много непонятных блоков, например:
.dw 0xFFFF ; pc=0x0180(0x0300) .dw 0xFFFF ; pc=0x0181(0x0302) adiw r26,k13 ld r16,X sbiw r26,k13 ret ;----------------------* ; pc=0x186(0x30C) ; .dw 0xFFFF ; pc=0x0186(0x030C) .dw 0xFFFF ; pc=0x0187(0x030E) adiw r26,k12 ld r16,X ldi r17,k0A mul r16,r17 mov r16,r0 mov r17,r1 sbiw r26,k12 ret
...интересно, что это такое?
--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
|
|
|
|
|
Jan 11 2008, 21:43
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(coolibin @ Jan 11 2008, 15:13)  После дизассемблирования в ReAVR в коде присутсвует много непонятных блоков, например: ...интересно, что это такое? Это могут быть пустые места, заполненные по умолчанию значением 0xFFFF или блоки данных, инкапсулированные в код. Вообще то процесс дизассемблирования является итерационным и в общем случае многопроходным. IDA многие вещи делает автоматически или, по крайней мере, полуавтоматически. ReAVR же, при кажущейся своей простоте, требует гораздо больше работы руками, именно в плане определения блоков данных. Не говоря уже о том, что он не подставляет символические имена регистров внутренней периферии. Если программа на Ваш взгляд достаточно большая, то не поленитесь потратить время на изучение IDA. Окупится сторицей.
|
|
|
|
|
Jan 12 2008, 07:27
|
Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228

|
Цитата(IgorKossak @ Jan 11 2008, 23:43)  Это могут быть пустые места, заполненные по умолчанию значением 0xFFFF или блоки данных, инкапсулированные в код. Вообще то процесс дизассемблирования является итерационным и в общем случае многопроходным. IDA многие вещи делает автоматически или, по крайней мере, полуавтоматически. ReAVR же, при кажущейся своей простоте, требует гораздо больше работы руками, именно в плане определения блоков данных. Не говоря уже о том, что он не подставляет символические имена регистров внутренней периферии. Если программа на Ваш взгляд достаточно большая, то не поленитесь потратить время на изучение IDA. Окупится сторицей. Спасибо!
--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
|
|
|
|
|
Jan 15 2008, 21:53
|
Группа: Новичок
Сообщений: 4
Регистрация: 4-01-08
Пользователь №: 33 826

|
Цитата(coolibin @ Jan 9 2008, 12:00)  А почему он не заменяет константы на имена портов? и где находится сегмент данных(.dseg)? имхо, если известны данные легче разбиратся с программой))) Все он заменяет, просто с прогой надо было разобраться. в папке C:\Program Files\ja tools\ReAVR\ior лежат файлы с описанием регистров самых распространенных контроллеров (по их образцу не сложно сделать свой файл под другой контроллер). Просто после того как вы послали НЕХ-файл в программу нужно залесть в меню Disas Settings->IO registers->Load list from file и указать пусть в папку ...ReAVR\ior где лежат эти описния регистров...
|
|
|
|
|
Jan 17 2008, 13:55
|
Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228

|
Цитата(m16 @ Jan 10 2008, 11:59)  http://ida470.narod.ru/ правда старенькая , но для авра выше крыши я ,конечно, извиняюсь, но в списке нет atmega8! почему? есть только atmega8_L
--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
|
|
|
|
|
Jan 17 2008, 14:06
|
Местный
  
Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064

|
Цитата(coolibin @ Jan 17 2008, 17:55)  я ,конечно, извиняюсь, но в списке нет atmega8! почему? есть только atmega8_L по командам и внутренностям разницы нет. Бери что есть, только вот в файл avr.cfg погляди, там могли чего нить не дописать.
|
|
|
|
|
Jan 19 2008, 16:56
|

Группа: Новичок
Сообщений: 5
Регистрация: 29-12-07
Пользователь №: 33 735

|
К вопросу о IDA. Это, пожалуй, лучший на сегоднешний день инструмент обратного проектирования. Сам сидел еще на старой IDA 4.17 честно купленной австрийскими боссами в далеком 2001-м. Ломал BIOSы всяческих hand-held терминалов и переписывал их под свою специфику. Идой можно делать все, но надо привыкнуть к интерфейсу. Сейчас на thepiratebay.org есть ссылка на торрент с самой последней версией IDA 5.2.0.908. "Лекарство" в комплекте. Скачал, попробовал на AVR'овских прошивках - работает волшебно! Разумеется, процесс итерационный, надо уметь и ручками работать. Особенно поразило автоматическое построение блок-схемы алгоритма программы. Дерзайте! ;-)
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|