Easyelectronics.ru

Электроника для всех
Текущее время: 23 сен 2019, 10:16

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 63 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 10:20 
Заглядывает иногда

Зарегистрирован: 27 май 2018, 10:09
Сообщения: 53
Здравствуйте уважаемые. Помоги решить данную задачу. Есть процессор Cortex-M3 ARM 7, на нем программа, которая включается по коду нажатиями на кнопки. Исходника самой программы нет, но есть слитая программа в бине.
Как найти в коде дизассемблированном строку, где этот код вводится. Как он может выглядеть в коде дизассемблера IDA. Смотрел по кнопкам на какие ноги процесса они идут. Такого вообще в коде нет. И возможно ли это ?
Помогите уважаемые гуру.
Весь код такого плана.
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 11:00 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3619
Гыыыы, добро пожаловать в АРМ! :))) В этой архитектуре принято все действия выполнять через Регистры Общего Назначения r0 - r15. И напрямую обращения к ногам вы не увидите. А даже если и увидите, то это будет только сканирование клавиатуры. Разбор нажатых кнопок будет происходить в другом месте, и уж сравнение введенного числа с необходимым кодом - вообще в третьем месте. Причем, это сравнение будет происходить так же в регистрах r0 - r7. Инструкции будут вида
cmp r0, r3
Если есть возможность запустить на целевом микроконтроллере пошаговую отладку - будет чуть полегче.
Скажем так... за бесплатно раскопать - это вообще не реально. за деньги - хм... ну явно не за 3000 руб... добавьте в конце хотябы еще один нолик и умножьте полученное хотябы на 2.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 11:37 
Заглядывает иногда

Зарегистрирован: 27 май 2018, 10:09
Сообщения: 53
Суть понятна, вопрос другой как запустить отладку и чем. Есть jlink. Допустим программа залита в чип, как можно увидеть куда обращается программа(к каким адресам) по нажатиям на кнопку, к какой части кода. Или и тут проблемы. И нужен именно исходник.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 12:17 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 942
gemoglobin писал(а):
как можно увидеть куда обращается программа(к каким адресам) по нажатиям на кнопку,

Открываете даташит на чип. Смотрите адрес порта на котором висит клавиатура. В программе ищете чтения по этому адресу. Они будут либо в каком-нибудь прерывании, либо в основном цикле. Только непросто это будет с обилием адресаций со смещениями.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 12:40 
Заглядывает иногда

Зарегистрирован: 27 май 2018, 10:09
Сообщения: 53
Так я уже пробовал. Сложно найти именно это прерывание или цикл. Уже понял что не просто. Ладно бы был исходный код, а тут код дизасемблера, а он очень сильно я думаю отличается от реального.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 13:13 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3619
Дизассемблер - это и есть реальный код, только записанный буквами, а не в двоичном виде, как это находится на самом деле в памяти.
И этот дизасм сильно отличается от того, что пишут на языке Си. Я же уже объяснял - у АРМ набор и построение команд отличается от классических ПИКов и АВРов. Инструкция АРМ представляет собой код команды, биты условий и аргумент(в), которые чаще всего являетются номерами регистров r0 - r15, либо второй аргумент в виде константы небольшой размерности.
Код обработчиков прерываний можно найти по таблице векторов прерываний, размещаемой в самом начале адресов согласно таблице. 4-байтное число - это есть адрес входа в обработчик. Просто разыскиваем в коде этот адрес и разбираем код начиная с того адреса.
Для разбора кода вам надо хорошо знать систему команд АРМ.

Как я уже писал ранее, даже если вы найдете в коде участок, в котором идет считывание клавиатуры, вам это мало поможет. Потому что это будет только код сканирования клавиатуры - нажата ли кнопка или нет. А из-за особенностей работы со стеком, вам будет довольно сложно отследить, где именно потом всплывут цифры нажатых кнопок.
Так что лучше пытаться искать точку входа (запуска) основной программы после проверки кода.
И если вам повезет, и вы ее отыщите, далее придется решить так же непростую задачу с обходом проверки кода. Причем, не дописывая нового. По большому счету, надо будет просто заменить адрес перехода в инструкции вида branch, которая может быть записана разными способами, но начинается с буквы b.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 13:25 
Заглядывает иногда

Зарегистрирован: 27 май 2018, 10:09
Сообщения: 53
CMP R0, #5 ; switch 5 cases что значит данная команда, я так понял искать CMP r0 и r3. Это и будет обращение к кнопкам. И не могут же три кнопки раскиданы по всему коду программы.
Где-то же просто должно быть указано, что нужно нажать 1, 2 и 3. Или в данных процессорах такое не реально.


Последний раз редактировалось gemoglobin 27 май 2018, 13:31, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 13:30 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3619
Сравнение содержимого регистра r0 с числом 5. По результатам сравнения выставляются биты состояния в регистре status, и эти биты потом могут учитываться в синтаксисе последующей команды. Например, следующая команда bne 0x12345678 осуществит переход по адресу 0х12345678 в том случае, если результат предыдущего сравнения был не равен 5, в противном случае будет выполняться следующая за bne команда.
А вот как число попало в регистр r0 - это надо смотреть ранее. Есть несколько разных способов.
Причем, не обольщайтесь, что нашли именно то, что искали. Подобная инструкция может использоваться вообще где угодно в коде. Например, в сишной записи цикла while(var == 5) { /* чето делать */ } инструкция cmp r0, #5 как раз и будет выполнять проверку условия while.

Да, в данных процессорах такие вещи неочевидны и на поверхности не лежат. Метод "с налета ломом" тут не канает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 13:39 
Заглядывает иногда

Зарегистрирован: 27 май 2018, 10:09
Сообщения: 53
А если допустим три кнопки, и код вводиться последовательно, т.е 1 2 3 кнопки, нажимаем 1 потом нажимаем 3 потом 2 потом опять 1, 2 и 3. Такое в коде будет видно или еще сложней?
т.е последовательность нажатий идет каждой кнопки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 13:43 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 942
gemoglobin, без обид, ты наверняка специалист в какой-то другой области. Займись делом, которое умеешь лучше всего, заработай денег и купи себе то что хочешь сломать. По задаваемым вопросам понятно, что это тебе не по зубам.


Последний раз редактировалось VladislavS 27 май 2018, 13:43, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 13:43 
Старожил
Аватара пользователя

Зарегистрирован: 30 мар 2015, 23:56
Сообщения: 737
Мне кажется я знаю какой код требует ввести программа. :)
Код повержения оплаты работы программиста.
Откуда знаю - да я сам так делал. И предупреждаю сразу - многократная пере_прошивка чипа не поможет, и использование нового чипа - тоже.
Кстати - viewtopic.php?f=9&t=35822 , тут обратный процес.
Прямо-таки война двух Якодзун (поиск).

_________________
Потоковая OS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 13:51 
Заглядывает иногда

Зарегистрирован: 27 май 2018, 10:09
Сообщения: 53
Да не код я знаю, мне нужно его изменить :) Да нет какие обиды. Понятно что все это не просто, и я в этом особо не понимаю. Понимал бы не задавал вопросов.
Задам еще один глупый вопрос, если код диассемблера такой же, как его собрать в рабочий исходник ? Просто многие говорят что не трать время жизни не хватит. Я говорю в общем, не именно на примере ARM, такое даже говорят и про Пики.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 13:55 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3619
gemoglobin писал(а):
Такое в коде будет видно или еще сложней?.

хехе... только что человеку объяснял, что цифры 1,2,3 могут встречаться где угодно, а для случая клавиатуры эти цифры вообще даже близко не лежат, ну просто потому, что цифра 1 на клавиатуре никак внутри МК не проявляется.
Кароче, ситуация безнадежна.

Код дисассемблера - это уже и есть рабочий код, и его собирать не надо. Просто возьмите бинарник, с которого вы его дизассемблировали - и зашейте в микроконтроллер обратно.
Как в анекдоте про блондинку: "Я скачала из инета фильм, посмотрела, теперь он мне не нужет. Как закачать его обратно в интернет?"

Младшие ПИКи вообще предельно простые. Скачиваете из инета какой-нить MPLAB, создаете проект, копируете в него текст дизасма и нажимаете "Build". Работы - ну на час максимум, если с нуля полного. Какие там уж полжизни...


Последний раз редактировалось BusMaster 27 май 2018, 14:02, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 14:01 
Заглядывает иногда

Зарегистрирован: 27 май 2018, 10:09
Сообщения: 53
А если нужно что-то добавить допустим в код программы, "дописать программу" ? тогда как. Бинарник понятно зальется и будет работать. Представим ситуацию, нет бинарника, но есть код только дизассемблера. Тогда как ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 14:02 
Старожил

Зарегистрирован: 27 апр 2013, 13:53
Сообщения: 1018
Методом перебора можно решить любую задачу,
а знание некоторых основ помогает сократить время для её решения :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 14:04 
Старожил

Зарегистрирован: 27 апр 2013, 13:53
Сообщения: 1018
gemoglobin писал(а):
А если нужно что-то добавить допустим в код программы, "дописать программу" ? тогда как. Бинарник понятно зальется и будет работать. Представим ситуацию, нет бинарника, но есть код только дизассемблера. Тогда как ?

Для кода дизассемблера надо понять, где есть абсолютные данные, а где относительные и переходы (по адресации)
и соответственно это учесть в ассемблерном листинге.


Последний раз редактировалось KPG 27 май 2018, 14:09, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 14:08 
Заглядывает иногда

Зарегистрирован: 27 май 2018, 10:09
Сообщения: 53
BusMaster писал(а):
gemoglobin писал(а):
Младшие ПИКи вообще предельно простые. Скачиваете из инета какой-нить MPLAB, создаете проект, копируете в него текст дизасма и нажимаете "Build". Работы - ну на час максимум, если с нуля полного. Какие там уж полжизни...

Это с 16 так можно сделать, а с 18 врядли. У АРМ такой же принцип или нет ? Т.е имея код дизассемблера можно собрать готовый исходник ? Дописывать его и т д..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 15:13 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 942
Процессор то хоть какой? Размер прошивки большой?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 15:30 
Заглядывает иногда

Зарегистрирован: 27 май 2018, 10:09
Сообщения: 53
Размер 86кб, из низ бутлодер почти пол прошивки. Процессор EFM32LG995


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 18:08 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2227
gemoglobin писал(а):
Это с 16 так можно сделать, а с 18 врядли. У АРМ такой же принцип или нет ? Т.е имея код дизассемблера можно собрать готовый исходник ? Дописывать его и т д..

Вы не путайте исходник и прошивку. Исходник из прошивки или дизасма никогда уже не получить. Ну разве что исходник на асме и был написан, и то будут отличия.
Вам сказали, что дизасм и есть бинарник прошивки. А не исходник.
Дизассемблер бинарника это просто представление опкодов и операндов в читаемом виде (асме), а не кодах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 18:19 
Заглядывает иногда

Зарегистрирован: 27 май 2018, 10:09
Сообщения: 53
Дак я это знал, тут просто или не поняли или так преподнесли. Я лишь спросил ) Теперь еще раз понял, что с дизасса исходник не получить никак.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 19:56 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5650
NStorm писал(а):
Исходник из прошивки или дизасма никогда уже не получить.


А че так категорично? Обычно же не компилируемый исходник нужен на выхлопе.
Хотя вы как обычно -не в курсе...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 20:04 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2227
Чего-чего? Что за бред?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 20:14 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3619
А под исходником вы понимаете текст на языке Си? Нууу вообще-то, получить его можно только аналитически, да и то - с некоторым приближением, в не шибко сложных случаях, и если исследуемый бинарник был сгенерирован без оптимизации или с небольшим её уровнем. Высокий же уровень оптимизации при генерации кода способен перемешать машинный код настолько, что разобраться в нем будет ну ваще нереально. В первую очередь это относится к АРМ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cortex-M3 EFM32
СообщениеДобавлено: 27 май 2018, 20:27 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5650
Получение "исходников" в псевдокоде на Си , что вменяемо читаемы .
Обычно нужен алгоритм и усе...
Код:
signed int sub_E928()
{
  char *v0; // r0
  unsigned int v1; // r2
  const char *v2; // r0
  signed int result; // r0
  const char *v4; // r0
  unsigned int v5; // r2
  char v6; // r1
  unsigned int v7; // r2
  char *v8; // r0
  char v9; // r1
  unsigned int v10; // r2
  const char *v11; // r0
  char v12; // r1

  switch ( byte_20000C01 )
  {
    case 1:
    case 5:
      v0 = "AM ";
      goto LABEL_9;
    case 2:
      v0 = "FM0 ";
LABEL_9:
      v1 = 3;
      goto LABEL_4;
    case 3:
      v0 = "FM1 ";
      goto LABEL_7;
    case 4:
      v0 = "FM2 ";
LABEL_7:
      v1 = 4;
LABEL_4:
      sub_A384(14, 1, v1, 0, (int)v0, 1);
      break;
    default:
      break;
  }
  switch ( byte_20000C00 )
  {
    case 1:
      v2 = "433.92 ";
      goto LABEL_12;
    case 2:
      v2 = "868.00 ";
      goto LABEL_12;
    case 3:
      v2 = "434.00 ";
      goto LABEL_12;
    case 4:
      v2 = "315.00 ";
      goto LABEL_12;
    case 5:
      v2 = "433.95 ";
      goto LABEL_12;
    case 6:
      v2 = "314.39 ";
LABEL_12:
      sub_A384(14, 20, 7u, 0, (int)v2, 1);
      sub_A384(14, 63, 3u, 0, (int)"CH:", 1);
      sub_9FEC(14, 80, *(unsigned __int8 *)(*(_DWORD *)aTh + (byte_20000BFE & 0xF)), 0, 1);
      break;
    default:
      break;
  }


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 63 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB