| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Дизассемблирование hex-файла в AVR Studio https://radiokot.ru/forum/viewtopic.php?f=57&t=81796 |
Страница 1 из 1 |
| Автор: | feodorsumkin [ Сб дек 08, 2012 01:37:03 ] |
| Заголовок сообщения: | Дизассемблирование hex-файла в AVR Studio |
Здравствуйте уважаемые форумчане! Подскажите, можно ли в AVRStudio открыть hex-файл (созданный например в CodeVisionAVR для микроконтроллера ATmega8) и протрассировать его. А также попытаться дизассемблировать. Я так понимаю - если реальный микроконтроллер hex-файл выполняет, то и симулятор должен выполнить. |
|
| Автор: | m.ix [ Сб дек 08, 2012 03:31:44 ] |
| Заголовок сообщения: | Re: Дизассемблирование hex-файла в AVR Studio |
сырцы исходники должны быть а кекс, уже готовый попробуй пирожное наоборот преобразовать на компоненты. |
|
| Автор: | uk8amk [ Сб дек 08, 2012 09:16:15 ] |
| Заголовок сообщения: | Re: Дизассемблирование hex-файла в AVR Studio |
feodorsumkin писал(а): Подскажите, можно ли в AVRStudio открыть hex-файл Можно. В качестве платформы в настройках проекта выберете AVR simulator. |
|
| Автор: | zero648 [ Сб дек 08, 2012 13:43:38 ] |
| Заголовок сообщения: | Re: Дизассемблирование hex-файла в AVR Studio |
feodorsumkin писал(а): Подскажите, можно ли в AVRStudio открыть hex-файл (созданный например в CodeVisionAVR для микроконтроллера ATmega8) и протрассировать его. А также попытаться дизассемблировать. Не важно в чем он создан, дизассемблировать можно любой НЕХ, но только в ассемблер. |
|
| Автор: | feodorsumkin [ Вс дек 09, 2012 03:51:17 ] |
| Заголовок сообщения: | Re: Дизассемблирование hex-файла в AVR Studio |
Ну да, естественно hex в ассемблер, а мне большего и не надо... Ребята, а можно поподробней, как импортировать hex-файл в AvrStudio? Типа создаю новый проект, указываю Atmel AVR Assembler, указываю AVR Simulator, указываю тип кристалла ATmega8, открываю файл .hex ... и у меня какая-то runtime ошибка вылезает. У меня avrstudio 4.13. Что делать? |
|
| Автор: | uk8amk [ Вс дек 09, 2012 08:46:42 ] | ||
| Заголовок сообщения: | Re: Дизассемблирование hex-файла в AVR Studio | ||
Попросить у Атмеля что-то посвежее. У меня стоит студия 4.19, работает без вопросов. File->Open File-> ваш_файл hex -> имя_проекта aps -> выбор платформы: симулятор, мега8 ->Finish. Да, еще русские имена в пути лучше избегать.
|
|||
| Автор: | borys [ Вс дек 09, 2012 13:50:31 ] |
| Заголовок сообщения: | Re: Дизассемблирование hex-файла в AVR Studio |
Еще можно воспользоваться для этого программой AVR Simulator. |
|
| Автор: | feodorsumkin [ Вс дек 09, 2012 21:44:05 ] |
| Заголовок сообщения: | Re: Дизассемблирование hex-файла в AVR Studio |
Да, действительно, поставил новую Avr Studio, переложил hex-файл в папку без русских символов и все нормально открылось и автоматически дизассемблировалось. Спасибо, уважаемые радиокоты, очень помогли!!! |
|
| Автор: | grayrat [ Вт июл 29, 2025 20:21:32 ] |
| Заголовок сообщения: | Re: Дизассемблирование hex-файла в AVR Studio |
Понимаю, что я опоздал на 13 лет, но может кому-то ещё пригодится. Значит так. Открыть 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 [ Сб авг 30, 2025 14:22:08 ] |
| Заголовок сообщения: | Re: Дизассемблирование hex-файла в AVR Studio |
Понимаю, что я опоздал на 13 лет, но может кому-то ещё пригодится. Значит так. Открыть 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 и т.д. там уже определены. Поэтому эти строчки нужно спрятать. Видео урок бы. |
|
| Автор: | OKF [ Сб авг 30, 2025 15:18:00 ] |
| Заголовок сообщения: | Re: Дизассемблирование hex-файла в AVR Studio |
Понимаю, что я опоздал на 13 лет... А что редактором этого не сделать? А ещё есть sed, если хочется автоматизации. |
|
| Автор: | grayrat [ Вт ноя 11, 2025 22:14:49 ] |
| Заголовок сообщения: | Re: Дизассемблирование hex-файла в AVR Studio |
А ещё есть sed, если хочется автоматизации. Может и можно. Но я не из тех, кто сверлит текстолит когтями. |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


