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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> как считать программу с AVR?, AVR->HEX->ASM?
coolibin
сообщение Dec 24 2007, 08:16
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



можно ли превратить код записаный в АТмега8 обратно в ASM? и, если да, то как это сделать?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
KRS
сообщение Dec 24 2007, 08:21
Сообщение #2


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

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



Цитата(coolibin @ Dec 24 2007, 11:16) *
можно ли превратить код записаный в АТмега8 обратно в ASM? и, если да, то как это сделать?

Если не залочен - считать программатором и загрузить полученный файл в аврстудию или IDA тоже умеет авр дизассемблировать
Go to the top of the page
 
+Quote Post
coolibin
сообщение Dec 24 2007, 09:04
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Я, извиняюсь, залочен это типа запрет на считывание? А счиывать программатором через avreal32?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
KRS
сообщение Dec 24 2007, 09:21
Сообщение #4


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

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



Цитата(coolibin @ Dec 24 2007, 12:04) *
Я, извиняюсь, залочен это типа запрет на считывание?

Да если LOCK bits установлены то флеш не прочитать будет.
Цитата(coolibin @ Dec 24 2007, 12:04) *
А счиывать программатором через avreal32?

Ну это смотря какой у вас программатор. Обычно тем софтом, которым шьете можно и обратно прочитать.
Go to the top of the page
 
+Quote Post
Itch
сообщение Dec 24 2007, 09:36
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



Совсем недавно возникла такая задача. Попробовал IDA - ужаснулся. Обилие совершенно непонятных настроек, нелогичная навигация по коду (ScrollBar работает непонятно как), половина кода вообще не была сконвертирована, а осталась как .dw ...
Вобщем, не смог даже сохранить нормально файл ассемблированый.
Дальше нашел программу ReAVR - все просто и понятно, так что рекомендую!
Go to the top of the page
 
+Quote Post
coolibin
сообщение Dec 24 2007, 10:12
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Спасибо!


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jan 9 2008, 08:00
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



А почему он не заменяет константы на имена портов? и где находится сегмент данных(.dseg)? имхо, если известны данные легче разбиратся с программой)))


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Jan 9 2008, 14:53
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Цитата(coolibin @ Jan 9 2008, 11:00) *
А почему он не заменяет константы на имена портов? и где находится сегмент данных(.dseg)? имхо, если известны данные легче разбиратся с программой)))

А откуда он узнает, как Вы привыкли называть 38-ю ячейку памяти? smile.gif
В редактор, "найти - заменить все"...
Потом дебаггер, точки входа 0-й адрес или другие, в зависимости от fuses "BLB" контроллера. И вперёд. smile3046.gif

Сообщение отредактировал Maik-vs - Jan 9 2008, 14:56
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 10 2008, 07:22
Сообщение #9


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

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



Цитата(coolibin @ Jan 9 2008, 11:00) *
А почему он не заменяет константы на имена портов? и где находится сегмент данных(.dseg)? имхо, если известны данные легче разбиратся с программой)))

Так для этого и нужна IDA, там можно все это сделать, и навигация по коду будет очень удобная, перекресные ссылки...
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jan 10 2008, 07:50
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Цитата(Maik-vs @ Jan 9 2008, 16:53) *
А откуда он узнает, как Вы привыкли называть 38-ю ячейку памяти? smile.gif
...

Например, значение PORTD для atmega16 известно, он(ReAVR) мог бы и подставить!

Цитата(KRS @ Jan 10 2008, 09:22) *
Так для этого и нужна IDA, там можно все это сделать, и навигация по коду будет очень удобная, перекресные ссылки...


А .dseg? .dseq IDA покажет?

Сообщение отредактировал coolibin - Jan 10 2008, 07:46


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jan 10 2008, 09:23
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



а где скачать IDA? а то я скачал, а она для мобилок(


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
m16
сообщение Jan 10 2008, 09:59
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 27-01-05
Пользователь №: 2 225



http://ida470.narod.ru/ правда старенькая , но для авра выше крыши
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Jan 10 2008, 10:38
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Цитата(coolibin @ Jan 10 2008, 10:50) *
Например, значение PORTD для atmega16 известно, он(ReAVR) мог бы и подставить!
А .dseg? .dseq IDA покажет?


Ну, если будет знать, что это для меги16, то таки да.
Вы знаете, замена констант - это 2% от всей работы. Вам же надо понять алгоритм, да? А понятных названий для регистров нет, для ячеек памяти нет; где массив, где переменная? Программа писалась на С или ассемблере или ещё на чём? Всё это нужно сделать головой и руками в процессе копания в коде. И никакая IDA Вам тут не поможет. Так что успехов в труде.
Go to the top of the page
 
+Quote Post
Itch
сообщение Jan 10 2008, 14:43
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



Не всегда нужно разобраться в алгоритме, часто просто надо поменять какую-нибудь константу. В моем случае надо было самодельный AVR JTAG заставить работать с нестандартным кварцем. Нашел где записывается регистр UBRR, нашел таблицу значений битрейтов, поменял - и все работает! smile.gif
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jan 11 2008, 08:28
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Ладно, с константами согласен можно и ручками, а вот данные, строки текста, например, ох как помогают в разборе программы, а ReAVR их походу не распознает((((


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 11 2008, 09:40
Сообщение #16


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

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



Цитата(coolibin @ Jan 11 2008, 11:28) *
Ладно, с константами согласен можно и ручками, а вот данные, строки текста, например, ох как помогают в разборе программы, а ReAVR их походу не распознает((((

Вам надо разобраться с IDA, даже там где она не распознает строки, Вы можете указать тип данных...
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jan 11 2008, 13:13
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 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

...интересно, что это такое?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 11 2008, 21:43
Сообщение #18


Шаман
******

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



Цитата(coolibin @ Jan 11 2008, 15:13) *
После дизассемблирования в ReAVR в коде присутсвует много непонятных блоков, например:
...интересно, что это такое?

Это могут быть пустые места, заполненные по умолчанию значением 0xFFFF или блоки данных, инкапсулированные в код.
Вообще то процесс дизассемблирования является итерационным и в общем случае многопроходным.
IDA многие вещи делает автоматически или, по крайней мере, полуавтоматически.
ReAVR же, при кажущейся своей простоте, требует гораздо больше работы руками, именно в плане определения блоков данных. Не говоря уже о том, что он не подставляет символические имена регистров внутренней периферии.
Если программа на Ваш взгляд достаточно большая, то не поленитесь потратить время на изучение IDA. Окупится сторицей.
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jan 12 2008, 07:27
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Цитата(IgorKossak @ Jan 11 2008, 23:43) *
Это могут быть пустые места, заполненные по умолчанию значением 0xFFFF или блоки данных, инкапсулированные в код.
Вообще то процесс дизассемблирования является итерационным и в общем случае многопроходным.
IDA многие вещи делает автоматически или, по крайней мере, полуавтоматически.
ReAVR же, при кажущейся своей простоте, требует гораздо больше работы руками, именно в плане определения блоков данных. Не говоря уже о том, что он не подставляет символические имена регистров внутренней периферии.
Если программа на Ваш взгляд достаточно большая, то не поленитесь потратить время на изучение IDA. Окупится сторицей.

Спасибо! wink.gif


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
ishvedov
сообщение Jan 15 2008, 21:53
Сообщение #20





Группа: Новичок
Сообщений: 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 где лежат эти описния регистров...
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jan 17 2008, 13:55
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Цитата(m16 @ Jan 10 2008, 11:59) *
http://ida470.narod.ru/ правда старенькая , но для авра выше крыши

я ,конечно, извиняюсь, но в списке нет atmega8! почему? есть только atmega8_L


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 17 2008, 13:59
Сообщение #22


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

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



Цитата(coolibin @ Jan 17 2008, 16:55) *
я ,конечно, извиняюсь, но в списке нет atmega8! почему? есть только atmega8_L

Да это одно и тоже! с точки зрения программы ничем не отличается!
(отличается потреблением, макс частотой кварца...)
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Jan 17 2008, 14:06
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



Цитата(coolibin @ Jan 17 2008, 17:55) *
я ,конечно, извиняюсь, но в списке нет atmega8! почему? есть только atmega8_L

по командам и внутренностям разницы нет. Бери что есть, только вот в файл avr.cfg погляди, там могли чего нить не дописать.
Go to the top of the page
 
+Quote Post
LoneWolf
сообщение Jan 19 2008, 16:56
Сообщение #24





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



К вопросу о IDA. Это, пожалуй, лучший на сегоднешний день инструмент обратного проектирования. Сам сидел еще на старой IDA 4.17 честно купленной австрийскими боссами в далеком 2001-м. Ломал BIOSы всяческих hand-held терминалов и переписывал их под свою специфику. Идой можно делать все, но надо привыкнуть к интерфейсу. Сейчас на thepiratebay.org есть ссылка на торрент с самой последней версией IDA 5.2.0.908. "Лекарство" в комплекте. Скачал, попробовал на AVR'овских прошивках - работает волшебно! Разумеется, процесс итерационный, надо уметь и ручками работать. Особенно поразило автоматическое построение блок-схемы алгоритма программы. Дерзайте! ;-)
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jan 21 2008, 10:03
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



У меня проблема со строками в IDA! Она их как то неправильно распознаёт! Ставлю 0-терминейтид стринг, а она всё равно какие то буквы правильно пишет какие то нет. Приходится самому по смыслу разбирать что написано. У кого нить было такое?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 01:56
Рейтинг@Mail.ru


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