Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 13.02.2012, 02:34  
st__1
Заблокирован
 
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
st__1 на пути к лучшему
По умолчанию Re: Реверс хекскода Atmel

Сообщение от omercury Посмотреть сообщение
Вот поэтому и лежат копии в 3х местах
Мда... А то... с уходом 5,25" флопов... расслабились... непадецки...
Реклама:
st__1 вне форума  
Непрочитано 14.02.2012, 15:12  
anakost
Временная регистрация
 
Регистрация: 15.05.2010
Адрес: г. Липецк
Сообщений: 88
Сказал спасибо: 8
Сказали Спасибо 16 раз(а) в 10 сообщении(ях)
anakost на пути к лучшему
По умолчанию Re: Реверс хекскода Atmel

Мне кажется, что восстановить кодовый сегмент (.CSEG) из файла *.hex AVR сейчас очень легко. Это безошибочно сделает IDA Pro. Совсем другое дело - это восстановление сегмента данных. Здесь нужен отладчик кода AVR. К сожалению IDA Pro это не умеет. Или может я об этом не знаю? Давайте разберем простейшую программу на ассемблере AVR:

.include "m8def.inc" ; Используем ATMega8, JTAG нет

.EQU BUF_Begin= 0x77
.EQU Count= 777

.DSEG
.ORG BUF_Begin
Buffer: .byte Count

.CSEG
RJMP _Reset

.ORG INT_VECTORS_SIZE
_Reset:
ldi r17, Low(RAMEND)
out SPL, r17
ldi r17, High(RAMEND)
out SPH, r17
RCALL RAM_Proc
RJMP _Reset

RAM_Proc:
LDI XL,Low(Count)
LDI XH,High(Count)
LDI ZL,Low(Buffer)
LDI ZH,High(Buffer)
Proc:
; ----------------------------------------
; Очень сложный и запутанный алгоритм,
; результат в R16
CLR R16 ; просто для примера
; ----------------------------------------
ST Z+,R16
SBIW X, 1
BRNE Proc
RET

Скомпилируем в Студии, полученный *.hex подсунем IDA Pro. Код восстановлен на 100%, информация о сегменте DSEG отсутствует полностью. Можно загрузить *.hex в студию, включить отладку и Count раз пройти процедуру Sub_19, записывая на бумажке адрес обращения к памяти и восстанавливая диаппазон адресов .DSEG.
При этом тестовая программа ничего не делает, а отлаживаемая программа может вести себя в процедуре как угодно, например расчитывая по сложному алгоритму следующий адрес ячейки RAM. Определение с какой памятью и как работает программа, наверное и есть самое сложное, т. к. информация об этом в *.hex файле напрямую не хранится, в отличии от кодов операций и DB таблиц.
Как то так.
Миниатюры:
Нажмите на изображение для увеличения
Название: IDA.jpg
Просмотров: 159
Размер:	114.8 Кб
ID:	31745  
anakost вне форума  
Непрочитано 14.02.2012, 17:01  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,003
Сказал спасибо: 0
Сказали Спасибо 4,946 раз(а) в 2,374 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Реверс хекскода Atmel

anakost,
а что говорит AVRStudio? хекс ей подсовывали?
jump вне форума  
Непрочитано 14.02.2012, 17:49  
anakost
Временная регистрация
 
Регистрация: 15.05.2010
Адрес: г. Липецк
Сообщений: 88
Сказал спасибо: 8
Сказали Спасибо 16 раз(а) в 10 сообщении(ях)
anakost на пути к лучшему
По умолчанию Re: Реверс хекскода Atmel

Сообщение от jump Посмотреть сообщение
anakost,
а что говорит AVRStudio? хекс ей подсовывали?
При открытии файла *.hex в студии, она предлагает создать новый проект, и сразу открывает *.hex в дизассемблере. Можно и так, но полученный дизасемблированный код гораздо хуже структурирован, чем после IDA Pro.
anakost вне форума  
Непрочитано 14.02.2012, 18:49  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,003
Сказал спасибо: 0
Сказали Спасибо 4,946 раз(а) в 2,374 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Реверс хекскода Atmel

anakost,
мне гораздо важнее ваши методы и результат восстановления (для сравнения со своим опытом), а структуру - нарастим
jump вне форума  
Непрочитано 14.02.2012, 23:12  
ART_K
Прописка
 
Регистрация: 27.05.2005
Сообщений: 127
Сказал спасибо: 5
Сказали Спасибо 20 раз(а) в 13 сообщении(ях)
ART_K на пути к лучшему
По умолчанию Re: Реверс хекскода Atmel

с AVR пока не занимался, но в планах есть..
по MSC-51 есть большой опыт изучения прошивок автомобильных блоков управления..
из инструментов - IDA5.5, Keil Vision в качестве отладчика. Сложные участки кода обычно прогоняю в железе, подключая к внешней памяти 32-х канальный анализатор, так проще понять данные или код по определенному адресу..
ART_K вне форума  
Непрочитано 15.02.2012, 00:01  
AYuM
Прописка
 
Аватар для AYuM
 
Регистрация: 21.04.2009
Адрес: Королёв
Сообщений: 89
Сказал спасибо: 1,054
Сказали Спасибо 34 раз(а) в 27 сообщении(ях)
AYuM на пути к лучшему
По умолчанию Re: Реверс хекскода Atmel

Гораздо труднее дизасмить PICовские программы.
Дизасм ПИКа не учитывает текущий банк регистров, и с этим приходится самому разбираться. АВРские намного легче. Дизассемблировал с обоих процев.
Кстати, прогу, написанною на Си, легче реверсить - много узнаваемых фрагментов.
AYuM вне форума  
Непрочитано 15.02.2012, 00:20  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Реверс хекскода Atmel

Сообщение от anakost Посмотреть сообщение
Совсем другое дело - это восстановление сегмента данных. Здесь нужен отладчик кода AVR. К сожалению IDA Pro это не умеет. Или может я об этом не знаю?
Повторюсь ... последний раз имел дело с отладчиками в 80-ых годах. Тогда отладчикам можно было указать адреса данных ... Правда они, как правило вместо данных сразу метки ставили, но тоже не очень удачно ... Что-нибудь типа "?lb4565". Работать с такими метками было невозможно. К тому же дизасемблер не знает точно что это - или адрес или переменная ... Не всегда это возможно определить по тексту проги, хотя иногда и возможно ...
Например если применяешь lds то это однозначно адрес, а если ldi, то тут вопрос ... Так вот в дизасемблерах ты мог именовать метки и пускать по второму кругу ... Понятно, что без допиливания напильником ничего не будет ..
===
Судя по приведённому вами листингу дизасемблера - очевидно что он очень ущербный ... за счёт универсальности ... то есть практически не учитывает особенности процессора ..
SasaVitebsk вне форума  
Непрочитано 15.02.2012, 01:18  
st__1
Заблокирован
 
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
st__1 на пути к лучшему
По умолчанию Re: Реверс хекскода Atmel

Сообщение от SasaVitebsk Посмотреть сообщение
Судя по приведённому вами листингу дизасемблера - очевидно что он очень ущербный ... за счёт универсальности ... то есть практически не учитывает особенности процессора ..
Мда...
Вспомнился взлом прошивок МЭЛТ... во времена всеобщего АОНизма...
Они пользовались процами Temic и Siemens, у которых были незначительные различия в инструкциях...
Защита на лоха конечно, но всё же... и CRC прошивки ещё... Один хрен приходилось дизасмить по кусочкам и проходить пошагово...
st__1 вне форума  
Непрочитано 15.02.2012, 09:42  
anakost
Временная регистрация
 
Регистрация: 15.05.2010
Адрес: г. Липецк
Сообщений: 88
Сказал спасибо: 8
Сказали Спасибо 16 раз(а) в 10 сообщении(ях)
anakost на пути к лучшему
По умолчанию Re: Реверс хекскода Atmel

Сообщение от SasaVitebsk Посмотреть сообщение
Судя по приведённому вами листингу дизасемблера - очевидно что он очень ущербный ... за счёт универсальности ... то есть практически не учитывает особенности процессора ..
Согласен с вами. Но на текущий момент дизассемблер AVR, формирующий более удобочитаемый листмнг чем IDA Pro мне просто не встречался. Казалось бы дизассемблер Студии на 100% заточен под AVR, и должен должен производить реверсинг отлично, но это не так. Вывод Студии настолько убог, что разобраться с дизасемблированным кодом много сложнее.
Ильхак давно обещает добавить в IDA Pro полноценную поддержку AVR, но уже появились Кортексы, а с AVR дело не двигается. Наверное уже не дождемся, а жаль. Кстати в IDA Pro можно немного изменить вид выводимого листинга. Я имею в виду включение в каждую строку комментария по команде. Для этого надо только поставить галку в меню Options-›General-›Disassembly-›Auto comments. По умолчанию комментарии на английском, но это легко правится переводом файла avr.cfg с последующей заменой штатными средствами IDA Pro.
anakost вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Atmel + tsk worldmasters Микроконтроллеры, АЦП, память и т.д 2 14.01.2009 11:14
[Решено] Atmel помер Snixers Отвлекитесь, эмбеддеры! 8 11.10.2008 00:24
Дизассемблирование Atmel dimmich Микроконтроллеры, АЦП, память и т.д 14 01.10.2008 12:39
ATMEL AT89C51. karik3 Микроконтроллеры, АЦП, память и т.д 0 06.12.2005 12:32


Часовой пояс GMT +4, время: 14:31.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot