0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
|
|
1 | |
reverse engineering09.01.2012, 17:43. Показов 41340. Ответов 84
Метки нет Все метки)
(
Необходимо из файла *.hex получить работоспособный файл *.asm.
Эта тема уже не раз поднималась, и предлагались актуальные на тот момент решения. Раньше после просмотра в дизассемблере кода программы отпадало само желание заниматься reverse engineering. Но сейчас уже можно получить вполне читабельный листинг. Собственно вопрос возник после появления в сети полностью рабочей версии IDA Pro v.6.1. Кто не в теме могут узнать подробнее из ВИКИ http://ru.wikipedia.org/wiki/IDA Подробности утечки внутри архива. Не собираюсь обсуждать правовую сторону инцидента. После обработки *.hex файла AVR получается почти 100% исходный листинг кодового сегмента CSEG *.asm. Проблемма с сегментом DSEG. IDA не анализирует обращения к DSEG и оставляет их константами. Отладка для AVR в данной версии не поддерживается. После гугления проявилось 2 пути: 1. Написать плагин к IDE для отладки AVR. Хорошо бы, да не хватает знаний С и изнанки IDA. http://www.wasm.ru/article.php... l_plug_ida Пример относится к старой версии IDA и х86. Для версии 6.1 отладка х86 встроена, в отличии от AVR. Мучил пару дней, говорит что данный ассемблер не поддерживается. Но сегмент кода дизассемблировал отлично. Осталось восстановить сегмент данных. 2. Написать плагин к VMLab. Хотя VMLab и не ориентирован для работы с SROM памятью AVR, думаю можно отловить обращения к SROM через Homdling I/O ports или Homdling rikystirs amctools.com/usirsomp.pdf. Спрашиваю у сообщества, может я фигней занимаюсь? И давно есть программа, которая загрузив файл *.hex может отразить в файл-листинге обращения к SROM AVR. Интересуют: 1) номер строки из которой было обращение, 2) адрес SROM куда обращаются, 3) операция (запмсь/чтение), сам байт (в последнюю очередь). Имея такой листинг можно будет выделить кодовому сегменту необходимые адреса памяти и добиться полной работоспособности скомпилированного файла.
0
|
09.01.2012, 17:43 | |
Ответы с готовыми решениями:
84
Reverse\Engineering Reverse Engineering (Декомпиляции .lib) Разработчик С++ / Reverse-Engineering (Удалённо) |
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 361
|
||||||
09.01.2012, 18:26 | 2 | |||||
ИДА - Интерактивный ДизАссемблер, то есть помогает работать интерактивно, а не тупым многопроходным методом.
И это не значит, что ИДА всё сделает сама. Даже для давно объезженного х86 многое приходится интерактивно делать головой и руками. Не понял сути проблемы. Приведи проблемный код.
0
|
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
|
|
09.01.2012, 19:10 | 3 |
В вашем примере програмист забыл (не захотел) вписать строку .ORG INT_VECTORS_SIZE перед обработкой прерывания _RESIT.
Чтобы это увидеть просто надо знать распределение памяти AVR. Вопрос же был совсем в другом: 1. Имеем файл *.hex. В этом файле уже зашиты все обращения к памяти. Указан (как правило) целевой контроллер. Т. о. извесна карта распределения SROM. Необходимо отловить в *.hex обращения к SROM и логгировать. Я просил сообщество помочь в поисках неоходимой программы, если такой нет, поучаствовать в ее написании. friiom, ваш пост я не понял, ждал конструктивного ответа.
0
|
0 / 0 / 0
Регистрация: 04.10.2011
Сообщений: 89
|
|
09.01.2012, 20:36 | 4 |
А что если получившийся asm прогнать через простейший текстовый скрипт (perl, bash и т.д.) который вычленит все команды обращения к памяти?
Я не силен в avr-ассемблере, но что-то мне подсказывает, что это некий ограниченный набор команд с уникальными мнемониками, который достаточно просто отфильтровать.
0
|
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 287
|
|||||||||||||||||||||
09.01.2012, 21:02 | 5 | ||||||||||||||||||||
Я для своего удобства сразу копипастю всю таблицу векторов своего процессора, чтобы не ошибиться. На картинках/примерах покажи свою проблему. Ты хочешь из этого
Почему у меня так красиво имена определились ? Интерактивность однако. Конечно легко присваивать имена интерактивно если знаешь их назначение заранее. Когда нет чужих зацепок - придумываешь свои имена. У тебя проблема в чём ?
0
|
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
|
|
09.01.2012, 22:10 | 6 |
Я специально не привожу кусок кода, т. к. хочу абстрагироваться от него (вот загнул).
Теперь по порядку: omdi123> Обработка скриптом (любым) предполагают, что данные по зараннее известным адресам статичны. Но!!! Я хотел бы знать, по каким адресам программа расположила свой рабочий массив. Вернее даже не так, начальный адрес узнать не проблемма, но если программа за одну подпрограмму несколько раз перезаписывает рабочий массив, хотелось бы знать чем она занимается. ptsyst> Вы своим копипастом еще раз подвердили мою правоту. Дизассемблер не смог правильно распознать распределение переменных в памяти. Это под силу только человеку. Но чтобы проанализировать это распределение, его надо иметь. Вот тут и мой вопрос. Не не к чему писать собственный дизассемблер, надо попытаться настроить вывод у уже имеющегося. И вообще я надеялся на конструктивную дискуссию. Пока чтого не получается. Если народ думает, что это грозит их интелектуальной собственности (вот еще раз загнул), я думаю что да грозит. Если кто зтого очень боится, для затруднения разбора своей программы дизассемблером есть разные приемы. Навскидку скажу что это индексные переходы и выход из подпрограммы не по адресу выхода. Но при достаточном навыке программиста это бесполезно. Програмист ASM это легко отследит. Против лома (дизассемблера) нет приема. Именно поэтому я вначале упомянул IDA Pro. Мне тут намекали, что он интерактивный. Именно этим я и пользуюсь. У меня нет намерения ломать чужую интелектуальную собственность. Но есть программа управления оборудованием, которая не поддерживается. На производстве "не знаю", "не понимаю" не понимает начальство. Вынь да полож. Я бы и рад, но устройство из Польши, на указанный @ не могу достучаться 2 месяца. Дальше тянуть чревато.
0
|
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 287
|
|
09.01.2012, 22:38 | 7 |
![]() Какое неправильное распределение ? Если байт положен по адресу 70 в исходнике, то он там и должен (и лежит) внутри контроллера Ты просто ни разу в жизни ничего не "ломал", да похоже и в программировании ты 0. В чём конкретно у тебя проблема ? Переписать программу заново или по мелочи изменить байт ? ![]() Пока ты только загибаешь, что ИДА для людей разумных, а тебе нужен Неинтерактивный дизассемблер для дураков.
0
|
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
|
|
09.01.2012, 22:48 | 8 |
1. Имеем файл *.hex. В этом файле уже зашиты все обращения к памяти. Указан (как правило) целевой контроллер.
Т. о. извесна карта распределения SROM. Необходимо отловить в *.hex обращения к SROM и логгировать. Я просил сообщество помочь в поисках неоходимой программы, если такой нет, поучаствовать в ее написании. Уже переходим на личности, что дальше будет. А вообще на конкретно заданный вопрос хотелось бы получить конкретный ответ, пока один холивар.
0
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
|
|
09.01.2012, 23:20 | 9 |
![]() начинай писать, мб народ и подтянется. а просьбы написать прогу или плаг к иде - в соответствующую ветку "Надо разработать", и рассчитывать, что бесплатно вряд-ли кто возьмется. хочешь советов - накидай прототип плага, и по нему уже задавай конкретные вопросы. а пока от тебя только денигогия "какие здесь люди плохие, не хотят мне нахаляву написать прогу для решения моего рабочего вопроса". т.е. по сути, сделать за тебя часть твоей работы, за которую ты получаешь деньги. где-то так... ЗЫЖ как вариант - в протеусе или вмлабе накидать минимальную схемку с целевым контроллером, и в его дебаггере посмотреть на работу прошивки. так будет быстрее, если нужно разобраться. параллельно запущенная ида с дизассемблером. по результатам разборок в дебаггере вносить уточнения в листинг до получения приемлемого результата.
0
|
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
|
|
09.01.2012, 23:33 | 10 |
Не наступайте на те же грабли что и я. В описаловке дизассемблера IDA 6.1 написано что он полностью поддерживает AVR.
Это не так. Даже это совсем не так! Поддерживается только дизассемблер AVR, о всяких отладчиках можете забыть. Отладка возможна только на х86 и ARM. Имея камень ATMiko8, я понадеялся его легко перепрошить и отладить. И если бы дело было в переназначении ножек! Это вообще можно сделать HEX редактором зная карту памяти (не делал, ни к чему). Спасибо за первый конкретный ответ. Дело начало хоть как то двигаться. Я пытаюсь спросить у сообщества, можно ли использовать для решения проблеммы свободно распостраняемый прототип плагина UserAVR. Если для вас это внове, лучше ничего не отвечайте, я все равно попробую, что получилось отпишусь здесь же.
0
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
|
|
09.01.2012, 23:50 | 11 |
![]()
0
|
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
|
|
09.01.2012, 23:55 | 12 |
tid_fom:
Конечно же в кексе нельзя указать целевой контроллер. Но он всегда (почти) указывается в описаловке. Я не прошу что то написать за себя.Я повторюсь: 1. Написать плагин к IDE для отладки AVR. Хорошо бы, да не хватает знаний С и изнанки IDA. http://www.wasm.ru/article.php... l_plug_ida Пример относится к старой версии IDA и х86. Для версии 6.1 отладка х86 встроена, в отличии от AVR. Мучил пару дней, говорит что данный ассемблер не поддерживается. Но сегмент кода дизассемблировал отлично. Осталось восстановить сегмент данных. 2. Написать плагин к VMLab. Хотя VMLab и не ориентирован для работы с SROM памятью AVR, думаю можно отловить обращения к SROM через Homdling I/O ports или Homdling rikystirs. amctools.com/usirsomp.pdf. Я прошу людей, которые както пытались работать с вышеуказанными программами подсказать мне, где я могу наступить на грабли. Ни о какой просьбе чтото за меня написать речи не идет. Как то так. Склоняюсь к плагину VMLab, но может зря? Может он это сделать?
0
|
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 287
|
|
10.01.2012, 00:15 | 13 |
С претензиями обращайся к ilfak на http://www.idopro.ru/forum/ Отладчик x86 встроен в ИДУ с незапамятных времён - главное в настройках правильно указать какой (например от Микрософта в поставке Wymdows) и где он расположен на диске. Если специалиста не удовлетворяют возможности (ограничения) ИДЫ, то Специалист спокойно может написать свои отладчики под любой процессор и примочки на все случаи жизни. Мне вот потребовалось быстро решить одну задачку - быстро написал примочку (попутно с дебагером) и быстро решил замороченную задачку, на которой у ИДЫ ломались зубы. <Изображение удалено> Нормальный человек при желании получить помощь просит помочь и выкладывает абсолютно все данные - кексы, схемы, фото, пояснения - находятся Специалисты и помогают безвозмездно в свободное время. Ну а крутящий пальцы приказчик, не получает помощи, но зато в качестве бонуса обычно получает от начальства.
0
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
|
|
10.01.2012, 00:19 | 14 |
лан. подойдем к вопросу с другой стороны.
как часто (сколько прошивок) требуется обработать. объем этой прошивки? есть подозрение, что это разовая акция, и объем в самом запущенном случае максимум 128КБ. причем, из этих 128КБ скорее всего значительная часть - всякие таблички, знакогенераторы и прочие текстовые строки. но есть основания предположить, что там что-то типа меги8/16/32. не больше. а такой объем реально развернуть руками, да еще попутно и в работе девайса разберешься. времени с наличием железки ну пара недель. ради разовой акции не имеет смысла заморачиваться с написанием плагов, софта. больше времени потратишь на написание и отладку. про вмлаб ничего не скажу, один раз как-то запустил-посмотрел-закрыл-удалил.
0
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
|
|
10.01.2012, 00:24 | 15 |
[QUOTE="ptsyst"][QUOTE="Цитата:[/QUOTE][QUOTE]Не наступайте на те же грабли что и я.[/QUOTE]И главное там где их нет.
С претензиями обращайся к ilfak на [URL="http://www.idopro.ru/forum/"]http://www.idopro.ru/forum/[/URL] Отладчик x86 встроен в ИДУ с незапамятных времён - главное в настройках правильно указать какой (например от Микрософта в поставке Wymdows) и где он расположен на диске. Если специалиста не удовлетворяют возможности (ограничения) ИДЫ, то Специалист спокойно может написать свои отладчики под любой процессор и примочки на все случаи жизни. Мне вот потребовалось быстро решить одну задачку - быстро написал примочку (попутно с дебагером) и быстро решил замороченную задачку, на которой у ИДЫ ломались зубы. все правильно. но "быстро написал примочку (попутно с дебагером)" - это не случай топикстартера.
0
|
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
|
|
10.01.2012, 00:32 | 16 |
Круто. Ну если серьезно я свою проблему решил. И именно reverse engineering, через обратную трассировку.
Но почему то, все в первую очередь пытались доказать мне что я ламер. Хе хе. На мой вопрос так никто и не ответил. Ребята, а почему? Никто не дружит с дизассемблером IDA Pro? Не испрользуете MVLab? Дружите, используете? Тогда почему не знаете как они работают? Как написать плагины.
0
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
|
|
10.01.2012, 01:00 | 17 |
ннууу... тут как-бы не wasm, и не еще какой ресурс, посвященный реверсу.
лично я иду для полного реверса пользовал уже достаточно давно. в основном так, посмотреть на конкретный кусок. вмлабы и протеусы вообще недолюбливаю. вообще, лучше живой железки ничего нет. кста. помнится, чуть выше грозился поделиться, как решил вопрос. ;)
0
|
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
|
|
10.01.2012, 01:10 | 18 |
Да, я не отказываюсь, хочу написать сниффер памяти. Но никто мне путеводной звезды не дал (даже не подсказал, делается ли это) , придется до всего доходить самому. Тогда как работа позволит.
Предcтавлюсь: Андрей Костоваров, инженер-электроник "ЗАО Липецкпиво"
0
|
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 287
|
|
10.01.2012, 01:56 | 19 |
![]() Видимо ты сделал "открытие" - но только для себя. <Изображение удалено>
0
|
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 537
|
|
10.01.2012, 03:31 | 20 |
![]() К примеру локальные переменные Си. Куда мышку наводить? Тут даже плагин может не помочь. Писал на асме снифер (правда под ВИНЬ) с нетом. Вот ругался на это дело. У тебя есть указатель, на указатели которые указывают на списки IP адресов. (дело было 2006г.) Вот в дебагере было весело смотреть :)
0
|
10.01.2012, 03:31 | |
Помогаю со студенческими работами здесь
20
Ghidra - software reverse engineering (SRE) framework Reverse engineering. Как спасти свой код? В новый open-source проект требуется опытный специалист по безопасности/шифрованию. encryption, ipsec, pgp, reverse engineering
reverse([X|T],Z):–reverse(T,S), conc(S,[X],Z). Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Новые блоги и статьи
![]() |
||||
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной.
Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
|
Формулы поворота
Igor3D 10.03.2025
Добрый день
Тема
Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости".
x' = x * cos(a) - y * sin(a)
y' = y * cos(a) + x * sin(a)
Как бы Вы их. . .
|
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
|
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
|
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
|
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view.
string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
|
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
|
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет!
Отправлено 19 февраля 2025 года в 17:20:21 UTC
Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home.
Мы официально. . .
|
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
|
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
|