Дизассемблирование hex-файла в AVR Studio
-
feodorsumkin
- Родился
- Сообщения: 17
- Зарегистрирован: Ср дек 05, 2012 03:27:08
Дизассемблирование hex-файла в AVR Studio
Здравствуйте уважаемые форумчане!
Подскажите, можно ли в AVRStudio открыть hex-файл (созданный например в CodeVisionAVR для микроконтроллера ATmega8) и протрассировать его. А также попытаться дизассемблировать.
Я так понимаю - если реальный микроконтроллер hex-файл выполняет, то и симулятор должен выполнить.
Подскажите, можно ли в AVRStudio открыть hex-файл (созданный например в CodeVisionAVR для микроконтроллера ATmega8) и протрассировать его. А также попытаться дизассемблировать.
Я так понимаю - если реальный микроконтроллер hex-файл выполняет, то и симулятор должен выполнить.
- m.ix
- Друг Кота
- Сообщения: 16545
- Зарегистрирован: Вт сен 07, 2010 03:01:06
- Откуда: Moscow-Izmaylovo
- Контактная информация:
Re: Дизассемблирование hex-файла в AVR Studio
сырцы исходники должны быть
а кекс, уже готовый
попробуй пирожное наоборот преобразовать на компоненты.
а кекс, уже готовый
попробуй пирожное наоборот преобразовать на компоненты.
Лечу лечить WWWашу покалеченную технику.
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: Дизассемблирование hex-файла в AVR Studio
feodorsumkin писал(а):Подскажите, можно ли в AVRStudio открыть hex-файл
Можно. В качестве платформы в настройках проекта выберете AVR simulator.
- zero648
- Вымогатель припоя
- Сообщения: 650
- Зарегистрирован: Пн июн 18, 2012 12:01:04
- Откуда: Челябинская область, Копейск
Re: Дизассемблирование hex-файла в AVR Studio
feodorsumkin писал(а):Подскажите, можно ли в AVRStudio открыть hex-файл (созданный например в CodeVisionAVR для микроконтроллера ATmega8) и протрассировать его. А также попытаться дизассемблировать.
Не важно в чем он создан, дизассемблировать можно любой НЕХ, но только в ассемблер.
-
feodorsumkin
- Родился
- Сообщения: 17
- Зарегистрирован: Ср дек 05, 2012 03:27:08
Re: Дизассемблирование hex-файла в AVR Studio
Ну да, естественно hex в ассемблер, а мне большего и не надо...
Ребята, а можно поподробней, как импортировать hex-файл в AvrStudio?
Типа создаю новый проект, указываю Atmel AVR Assembler, указываю AVR Simulator, указываю тип кристалла ATmega8, открываю файл .hex ... и у меня какая-то runtime ошибка вылезает.
У меня avrstudio 4.13. Что делать?
Ребята, а можно поподробней, как импортировать hex-файл в AvrStudio?
Типа создаю новый проект, указываю Atmel AVR Assembler, указываю AVR Simulator, указываю тип кристалла ATmega8, открываю файл .hex ... и у меня какая-то runtime ошибка вылезает.
У меня avrstudio 4.13. Что делать?
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: Дизассемблирование hex-файла в AVR Studio
Попросить у Атмеля что-то посвежее. У меня стоит студия 4.19, работает без вопросов.
File->Open File-> ваш_файл hex -> имя_проекта aps -> выбор платформы: симулятор, мега8 ->Finish.
Да, еще русские имена в пути лучше избегать.
File->Open File-> ваш_файл hex -> имя_проекта aps -> выбор платформы: симулятор, мега8 ->Finish.
Да, еще русские имена в пути лучше избегать.
- Вложения
-
- disasm.PNG
- (66.57 КБ) 4221 скачивание
-
borys
- Держит паяльник хвостом
- Сообщения: 927
- Зарегистрирован: Вт сен 07, 2010 19:27:48
- Откуда: Ташкент
Re: Дизассемблирование hex-файла в AVR Studio
Еще можно воспользоваться для этого программой AVR Simulator.
-
feodorsumkin
- Родился
- Сообщения: 17
- Зарегистрирован: Ср дек 05, 2012 03:27:08
Re: Дизассемблирование hex-файла в AVR Studio
Да, действительно, поставил новую Avr Studio, переложил hex-файл в папку без русских символов и все нормально открылось и автоматически дизассемблировалось. Спасибо, уважаемые радиокоты, очень помогли!!!
Re: Дизассемблирование hex-файла в AVR Studio
Понимаю, что я опоздал на 13 лет, но может кому-то ещё пригодится.
Значит так. Открыть HEX файл как было описано выше, получилось только в версии 4.19. Пятая и выше уже не подходит. Да. Дизассемблировало. Работает симулятор. Но, скажу я вам, по сравнению с тем, как диззассемблирует IDA Pro, это лютый мрак. А исследовать код в таком виде, когда нет комментариев, подсветки синтаксиса, вместо мнемоник хекскоды, это чистое шайтанство. Поэтому предлагаю немного другой путь. Нужно сначала дизассемблировать прошивку в ИДЕ, потом скопипастить её в текстовый файл. Теперь файл нужно обработать утилиткой, чтобы закомментировать позиции вида seg0000:0000 в начале строки. Затем создать новый проект с ассемблером в Atmel Studio (тут уже можно и последнюю версию. У меня 7). В этот пустой исходник скопировать содержимое нашего файла. Скомпилить. И можно исследовать симулятором как белый человек. Ну, почти. Ассемблер ведь...
Прилагаю код утилиты.
Да, ещё с чем столкнулся.
IDA в начале определяла мнемоники вида .equ XL, 26 и т.д. (МК Atmega8). Компилятору это жутко не понравилось, потому что XL и т.д. там уже определены. Поэтому эти строчки нужно спрятать.
Значит так. Открыть HEX файл как было описано выше, получилось только в версии 4.19. Пятая и выше уже не подходит. Да. Дизассемблировало. Работает симулятор. Но, скажу я вам, по сравнению с тем, как диззассемблирует IDA Pro, это лютый мрак. А исследовать код в таком виде, когда нет комментариев, подсветки синтаксиса, вместо мнемоник хекскоды, это чистое шайтанство. Поэтому предлагаю немного другой путь. Нужно сначала дизассемблировать прошивку в ИДЕ, потом скопипастить её в текстовый файл. Теперь файл нужно обработать утилиткой, чтобы закомментировать позиции вида seg0000:0000 в начале строки. Затем создать новый проект с ассемблером в Atmel Studio (тут уже можно и последнюю версию. У меня 7). В этот пустой исходник скопировать содержимое нашего файла. Скомпилить. И можно исследовать симулятором как белый человек. Ну, почти. Ассемблер ведь...
Прилагаю код утилиты.
Спойлер
Код: Выделить всё
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main( int argc, char *argv[] )
{
if( argc!=2 )
return printf( "usage: mkcom file.ext\n"
" file[.ext] - is a copy-paste from IDA Pro disassemble\n" );
FILE *f = fopen( argv[1], "rt" );
if( !f )
return printf( "Can't open file %s\n", argv[1] );
const int N=127;
char buf[ N+1 ];
strcpy( buf, argv[1] );
strcat( buf, ".asm" );
FILE *o = fopen( buf, "wt" );
if( !o )
{
fclose( f );
return printf( "Can't open file %s for writing\n", buf );
}
int n=0;
strcpy( buf, "/*" );
while( fgets( buf+4, N, f ) )
{
strncpy( buf+2, buf+4, 11 );
memcpy( (void*)(buf+13), (const void *)"*/", 2 );
fputs( buf, o );
n++;
}
fclose( f );
fclose( o );
printf( "copied. %d lines in files\n", n );
}IDA в начале определяла мнемоники вида .equ XL, 26 и т.д. (МК Atmega8). Компилятору это жутко не понравилось, потому что XL и т.д. там уже определены. Поэтому эти строчки нужно спрятать.
- alexvas2004
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Пн фев 15, 2010 05:28:51
Re: Дизассемблирование hex-файла в AVR Studio
[uquote="grayrat",url="/forum/viewtopic.php?p=4734889#p4734889"]Понимаю, что я опоздал на 13 лет, но может кому-то ещё пригодится.
Значит так. Открыть HEX файл как было описано выше, получилось только в версии 4.19. Пятая и выше уже не подходит. Да. Дизассемблировало. Работает симулятор. Но, скажу я вам, по сравнению с тем, как диззассемблирует IDA Pro, это лютый мрак. А исследовать код в таком виде, когда нет комментариев, подсветки синтаксиса, вместо мнемоник хекскоды, это чистое шайтанство. Поэтому предлагаю немного другой путь. Нужно сначала дизассемблировать прошивку в ИДЕ, потом скопипастить её в текстовый файл. Теперь файл нужно обработать утилиткой, чтобы закомментировать позиции вида seg0000:0000 в начале строки. Затем создать новый проект с ассемблером в Atmel Studio (тут уже можно и последнюю версию. У меня 7). В этот пустой исходник скопировать содержимое нашего файла. Скомпилить. И можно исследовать симулятором как белый человек. Ну, почти. Ассемблер ведь...
Прилагаю код утилиты.
Да, ещё с чем столкнулся.
IDA в начале определяла мнемоники вида .equ XL, 26 и т.д. (МК Atmega8). Компилятору это жутко не понравилось, потому что XL и т.д. там уже определены. Поэтому эти строчки нужно спрятать.[/uquote]
Видео урок бы.
Значит так. Открыть HEX файл как было описано выше, получилось только в версии 4.19. Пятая и выше уже не подходит. Да. Дизассемблировало. Работает симулятор. Но, скажу я вам, по сравнению с тем, как диззассемблирует IDA Pro, это лютый мрак. А исследовать код в таком виде, когда нет комментариев, подсветки синтаксиса, вместо мнемоник хекскоды, это чистое шайтанство. Поэтому предлагаю немного другой путь. Нужно сначала дизассемблировать прошивку в ИДЕ, потом скопипастить её в текстовый файл. Теперь файл нужно обработать утилиткой, чтобы закомментировать позиции вида seg0000:0000 в начале строки. Затем создать новый проект с ассемблером в Atmel Studio (тут уже можно и последнюю версию. У меня 7). В этот пустой исходник скопировать содержимое нашего файла. Скомпилить. И можно исследовать симулятором как белый человек. Ну, почти. Ассемблер ведь...
Прилагаю код утилиты.
Спойлер
Код: Выделить всё
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main( int argc, char *argv[] )
{
if( argc!=2 )
return printf( "usage: mkcom file.ext\n"
" file[.ext] - is a copy-paste from IDA Pro disassemble\n" );
FILE *f = fopen( argv[1], "rt" );
if( !f )
return printf( "Can't open file %s\n", argv[1] );
const int N=127;
char buf[ N+1 ];
strcpy( buf, argv[1] );
strcat( buf, ".asm" );
FILE *o = fopen( buf, "wt" );
if( !o )
{
fclose( f );
return printf( "Can't open file %s for writing\n", buf );
}
int n=0;
strcpy( buf, "/*" );
while( fgets( buf+4, N, f ) )
{
strncpy( buf+2, buf+4, 11 );
memcpy( (void*)(buf+13), (const void *)"*/", 2 );
fputs( buf, o );
n++;
}
fclose( f );
fclose( o );
printf( "copied. %d lines in files\n", n );
}IDA в начале определяла мнемоники вида .equ XL, 26 и т.д. (МК Atmega8). Компилятору это жутко не понравилось, потому что XL и т.д. там уже определены. Поэтому эти строчки нужно спрятать.[/uquote]
Видео урок бы.
Re: Дизассемблирование hex-файла в AVR Studio
[uquote="grayrat",url="/forum/viewtopic.php?p=4734889#p4734889"]Понимаю, что я опоздал на 13 лет...[/uquote]
А что редактором этого не сделать? А ещё есть sed, если хочется автоматизации.
А что редактором этого не сделать? А ещё есть sed, если хочется автоматизации.
Re: Дизассемблирование hex-файла в AVR Studio
[uquote="OKF",url="/forum/viewtopic.php?p=4742542#p4742542"]А ещё есть sed, если хочется автоматизации.[/uquote]
Может и можно. Но я не из тех, кто сверлит текстолит когтями.
Может и можно. Но я не из тех, кто сверлит текстолит когтями.