Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
13.02.2012, 02:34
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Реверс хекскода Atmel
Сообщение от omercury
|
Вот поэтому и лежат копии в 3х местах
|
Мда... А то... с уходом 5,25" флопов... расслабились... непадецки...
|
|
|
|
14.02.2012, 15:12
|
|
Временная регистрация
Регистрация: 15.05.2010
Адрес: г. Липецк
Сообщений: 88
Сказал спасибо: 8
Сказали Спасибо 16 раз(а) в 10 сообщении(ях)
|
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 таблиц.
Как то так.
|
|
|
|
14.02.2012, 17:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,003
Сказал спасибо: 0
Сказали Спасибо 4,946 раз(а) в 2,374 сообщении(ях)
|
Re: Реверс хекскода Atmel
anakost,
а что говорит AVRStudio? хекс ей подсовывали?
|
|
|
|
14.02.2012, 17:49
|
|
Временная регистрация
Регистрация: 15.05.2010
Адрес: г. Липецк
Сообщений: 88
Сказал спасибо: 8
Сказали Спасибо 16 раз(а) в 10 сообщении(ях)
|
Re: Реверс хекскода Atmel
Сообщение от jump
|
anakost,
а что говорит AVRStudio? хекс ей подсовывали?
|
При открытии файла *.hex в студии, она предлагает создать новый проект, и сразу открывает *.hex в дизассемблере. Можно и так, но полученный дизасемблированный код гораздо хуже структурирован, чем после IDA Pro.
|
|
|
|
14.02.2012, 18:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,003
Сказал спасибо: 0
Сказали Спасибо 4,946 раз(а) в 2,374 сообщении(ях)
|
Re: Реверс хекскода Atmel
anakost,
мне гораздо важнее ваши методы и результат восстановления (для сравнения со своим опытом), а структуру - нарастим
|
|
|
|
14.02.2012, 23:12
|
|
Прописка
Регистрация: 27.05.2005
Сообщений: 127
Сказал спасибо: 5
Сказали Спасибо 20 раз(а) в 13 сообщении(ях)
|
Re: Реверс хекскода Atmel
с AVR пока не занимался, но в планах есть..
по MSC-51 есть большой опыт изучения прошивок автомобильных блоков управления..
из инструментов - IDA5.5, Keil Vision в качестве отладчика. Сложные участки кода обычно прогоняю в железе, подключая к внешней памяти 32-х канальный анализатор, так проще понять данные или код по определенному адресу..
|
|
|
|
15.02.2012, 00:01
|
|
Прописка
Регистрация: 21.04.2009
Адрес: Королёв
Сообщений: 89
Сказал спасибо: 1,054
Сказали Спасибо 34 раз(а) в 27 сообщении(ях)
|
Re: Реверс хекскода Atmel
Гораздо труднее дизасмить PICовские программы.
Дизасм ПИКа не учитывает текущий банк регистров, и с этим приходится самому разбираться. АВРские намного легче. Дизассемблировал с обоих процев.
Кстати, прогу, написанною на Си, легче реверсить - много узнаваемых фрагментов.
|
|
|
|
15.02.2012, 00:20
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Реверс хекскода Atmel
Сообщение от anakost
|
Совсем другое дело - это восстановление сегмента данных. Здесь нужен отладчик кода AVR. К сожалению IDA Pro это не умеет. Или может я об этом не знаю?
|
Повторюсь ... последний раз имел дело с отладчиками в 80-ых годах. Тогда отладчикам можно было указать адреса данных ... Правда они, как правило вместо данных сразу метки ставили, но тоже не очень удачно ... Что-нибудь типа "?lb4565". Работать с такими метками было невозможно. К тому же дизасемблер не знает точно что это - или адрес или переменная ... Не всегда это возможно определить по тексту проги, хотя иногда и возможно ...
Например если применяешь lds то это однозначно адрес, а если ldi, то тут вопрос ... Так вот в дизасемблерах ты мог именовать метки и пускать по второму кругу ... Понятно, что без допиливания напильником ничего не будет ..
===
Судя по приведённому вами листингу дизасемблера - очевидно что он очень ущербный ... за счёт универсальности ... то есть практически не учитывает особенности процессора ..
|
|
|
|
15.02.2012, 01:18
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Реверс хекскода Atmel
Сообщение от SasaVitebsk
|
Судя по приведённому вами листингу дизасемблера - очевидно что он очень ущербный ... за счёт универсальности ... то есть практически не учитывает особенности процессора ..
|
Мда...
Вспомнился взлом прошивок МЭЛТ... во времена всеобщего АОНизма...
Они пользовались процами Temic и Siemens, у которых были незначительные различия в инструкциях...
Защита на лоха конечно, но всё же... и CRC прошивки ещё... Один хрен приходилось дизасмить по кусочкам и проходить пошагово...
|
|
|
|
15.02.2012, 09:42
|
|
Временная регистрация
Регистрация: 15.05.2010
Адрес: г. Липецк
Сообщений: 88
Сказал спасибо: 8
Сказали Спасибо 16 раз(а) в 10 сообщении(ях)
|
Re: Реверс хекскода Atmel
Сообщение от SasaVitebsk
|
Судя по приведённому вами листингу дизасемблера - очевидно что он очень ущербный ... за счёт универсальности ... то есть практически не учитывает особенности процессора ..
|
Согласен с вами. Но на текущий момент дизассемблер AVR, формирующий более удобочитаемый листмнг чем IDA Pro мне просто не встречался. Казалось бы дизассемблер Студии на 100% заточен под AVR, и должен должен производить реверсинг отлично, но это не так. Вывод Студии настолько убог, что разобраться с дизасемблированным кодом много сложнее.
Ильхак давно обещает добавить в IDA Pro полноценную поддержку AVR, но уже появились Кортексы, а с AVR дело не двигается. Наверное уже не дождемся, а жаль. Кстати в IDA Pro можно немного изменить вид выводимого листинга. Я имею в виду включение в каждую строку комментария по команде. Для этого надо только поставить галку в меню Options-›General-›Disassembly-›Auto comments. По умолчанию комментарии на английском, но это легко правится переводом файла avr.cfg с последующей заменой штатными средствами IDA Pro.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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.
|
|