User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: Проблема копирования дампа MCS-48 (возможно защита)

  1. #1

    Регистрация
    18.08.2024
    Адрес
    г. Санкт-Петербург
    Сообщений
    6
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Проблема копирования дампа MCS-48 (возможно защита)

    Имеется устройство Autohelm-3000 - "авторулевой для парусной лодки".
    Произведено американской компанией Raymarine в начале 90х.
    Функционал устройства простой - управлять моторчиком 12в, поддерживать заданный магнитный курс движения судна. Корпус лодки повернулся направо - коммутируется соединение "повернуть руль налево и дожидаться возврата на курс", и наоборот. Через микроконтроллер Intel D8749H в авторулевом решается сама логика "руления": "реагировать на кнопки", "мигать/пищать", "отслеживать курс" и подобное.
    ......
    Устройство исправно работало, но в ходе неудачного вмешательства (пытались ему подключить выносные кнопки) - "спалили" микроконтроллеру "ногу №23" и один ряд кнопок перестал работать. В остальном устройство исправно, на подачу питания и нажатие остальных кнопок реагирует как обычно.
    ......
    Вынул чип из разъема, с помощью программатора Willem успешно снял дамп.
    Успешно залил дамп в пустой новый чип. Прошивка успешная - программа совпадает 1:1 старый-новый.
    Но после установки нового чипа в разъем - устройство не работает.
    При подаче питания оно должно кратковременно пискнуть и моргнуть светодиодом.
    Но новый чип пищит и светит постоянно (микроконтроллер где-то зависает в начале программы).
    После возврата старого чипа - все работает, втыкаю новый - нет, висит.

    ......
    Перепробовал разные чипы, разные варианты прошивки, менял тактовую частоту:
    1) Закупил 5 чипов D8749H из от 5 разных производителей (маркировка размещена по разному, цвет пластика разный, производители как INTEL, так и NEC). Одни шьются только с шунтом, другие без. Точно разные партии.
    2) Закупил кварцы, менял кварцевый резонатор с оригинальных 11Мгц на 10Мгц, 6Мгц, 4Мгц - старый чип работает на всех частотах, новый чип виснет.
    3) Нашел в интернете прошивку с другого рабочего Autohelm-3000, прошивал ее.
    Результат прежний - старый чип работает, новый чип зависает и пищит, на всех вариантах чипов и прошивок результат одинаковый.
    4) Втыкал "пустой чип" - да, все логично, прибор молчит.

    ......
    Копался в дизассемблерном листинге и корректировал программу:
    1) Достал листинг прошивки Autohelm-3000, частично разобрал, сравнил с бинарником - да, это корректный листинг.
    2) Корректировал дамп для проверки его функционирования (размещал по нужным адресам NOPы) - пищалка не активируется, только светодиод постоянно горит, то-есть программа выполняется, но или аппаратно или программно зависает где-то дальше.

    .....
    Выглядит так, будто программа защищена от копирования:
    1) Дамп сделан под конкретный чип и выполняется проверка по серийному номеру, - но в мануалах ничего подобного не встречается. Нету в ассемблере MCS-48 команды "программно прочитать серийник".
    2) Возможно что-то записано в энергонезависимый(?) RAM, ее нельзя скопировать программатором. Но RAM на этом процессоре обычный, и без питания (и тем более с извлечением чипа) - гарантированно сбрасывается.
    3) Возможно производитель для защиты в своем чипе сам "сжег" какие-то невостребованные пины. И программа получая с их значения, определяет свое присутствие в другом микроконтроллере. Но всю схему перелопатил, подозрительные "пины" не втыкал в разъем, а подвешивал в воздух. Нет - все всегда одинаково, старый чип работает, новый - зависает.

    .....
    А может требуется какая-то дополнительная настройка для "нового чипа", кроме "залить дамп"?
    И в программаторе Willem этого функционала нет?
    1) Задать тактовую частоту внутреннего таймера - ну, нет такого в мануалах. И старый чип работает с любыми кварцевыми резонаторами: 11Мгц, 10Мгц, 6Мгц, 4Мгц, новый - виснет.
    2) Как-то задать направление портов или их назначение? Но работа с портами определяется на уровне программы или питанием на пинах. Здесь все одинаково и схемотехника и дамп.


    .....
    Подскажите, что может быть?
    Голову уже сломал с копированием этого чипа.

    PS:
    Файл со схемой устройства к сообщению приложить не дает.
    Может у меня рейтинг маловат.
    Выложил файл вот сюда:
    https://disk.yandex.ru/i/xPJaC6uoOHsDGQ

    - - - Добавлено - - -

    Открывал аналогичную тему на "cyberforum" (не уверен, что здесь принято прикладывать ссылки на него)
    Вот ключевые дополнения оттуда:
    ............

    Прошивку скачанную из интернета - я разбирал.
    Очень логичная в части работы с портами и шиной и засылаемыми масками.
    Видно как засылает маску:
    anl bus,#07FH - на включение пищалки
    anl bus,#0BFH - на включение лампочки
    orl bus,#040H - на выключение лампочки

    Видно как последовательно перебирает переключатель для определения его положения
    anl bus,#0DFH - маска на 6 положение переключателя
    call L051F
    anl bus,#0EFH - маска на 5 положение переключателя
    call L051F
    anl bus,#0F7H - маска на 4 положение переключателя
    call L051F
    итд

    короче, понятная логичная прошивка, верю что от Autohelm-3000
    Но в работе ее не видел.

    Снятая мной прошивка - гораздо более запутанная.
    Явно видна только работа с пищалкой - anl bus,#07FH
    Но других понятных конструкций в работе с портами и шиной со знакомыми масками - так сразу не обнаруживается.
    Прошивка вообще другая по структуре - очень мало общих элементов с предыдущей прошивкой.
    Но эта прошивка - точно работает на старом чипе!

    Обе прошивки рабочие, одну в работе видел практически, в работу другой можно поверить теоретически.
    Обе одинаково "зависают" на новом чипе - пищат и светят лампой.
    если вместо anl bus,#07FH поставить NOP - обе не пищат, а только светят.
    Процессор пытается выполнять и ту и другую прошивку, где-то чуть дальше обе виснут с одинаковым эффектом.

    .......
    Есть подозрение на strt t и прочие таймерные функции.
    В интенет-прошивке запуск таймера идет сразу вначале программы.
    Может ему что-то мешает нормально таймеру аппаратно работать в новых чипах?
    Ибо, что на кварце 11Мгц, что на кварце 4Мгц - на старом чипе писк и свет длится ровно полсекунды, несмотря на разницу тактовых частот более чем в 2 раза. А вот на новых чипах - писк и свет начинается, но не заканчивается.

    - - - Добавлено - - -

    Еще дополнения касательно подозрений на "сверку программы с серийным номером":
    .........
    На электронной схеме нет более ни одного поставщика цифрового кода, ни внешней памяти, ни внешнего ПЗУ.
    Есть несколько DIP-микросхем, но они уникальный код хранить не могут
    IC5 = M74HC4066B1R = "четыре двунаправленных переключателя"
    IC4 = CD4051BE = "Мультиплексор аналоговый 8-каналов"
    IC3 = CA3130EZ = "Операционный усилитель"
    .........
    Ну и новый чип со скопированной программой вставляется в ту-же самую плату!
    Если бы были поставщики "серийного номера платы" - то номер был бы тот-же самый!
    Последний раз редактировалось akudelev; 21.08.2024 в 13:54.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    311
    Поблагодарили
    235 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    akudelev, а прошивка какого обьема?
    может прощен дизассемблить?
    С уважением,
    Jerri / Red Triangle.

  4. #3

    Регистрация
    18.08.2024
    Адрес
    г. Санкт-Петербург
    Сообщений
    6
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Было подозрение на то, что 23й пин используется для формирования адреса, и что считанный дамп мог оказаться некорректным.
    ......
    Но для 2к нужно 11 бит адресации, и согласно мануалам программатор будет использовать: BUS+P20+P21+P22
    То-есть до 23го контакта очередь не доходит (это для 4к нужно 12бит адресации - для intel 8050)
    Но, дамп из интернета и скачанный дамп на новом процессоре ведут себя одинаково.

    - - - Добавлено - - -

    Прошивка 2килобайта
    Прочитанную - дизассемблировал... очень запутанная, это немного смутило.
    ...
    Скачанную из интернета - получил с "ASM-исходником дизассемблированным" - вполне понятная.
    Разбирал, нашел множество ожидаемых точек работы с BUS и портами.
    ASM - https://disk.yandex.ru/d/QhAxfpMO5yirXw
    BIN - https://disk.yandex.ru/d/x9OyLHragY3ryQ
    .....
    Сверял в ключевых местах, где идет работа с BUS - да, дизассемблирована корректно.
    Модернизировал прошивку NOP-ами - да, где нужно "звук выключается" - BIN выполняется.
    Но виснет где-то дальше.
    ....
    Совсем не хочется разбирать ASM на функции, память на переменные, вручную собирать из него C++ и вникать во всю алгоритмику вычисления угла перекладки руля и длительности работы моторчика.
    Когда этот BIN выполняется на старом чипе - к алгоритмам его работы претензий нет.
    Ошибка не в алгоритмах, а в какой-то особенности прошивки D8749H, или в его возможной необычной защите от копирования.

  5. #4

    Регистрация
    17.03.2009
    Адрес
    Moscow
    Сообщений
    537
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    56 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    off: а реанимировать пин не пробовали? бывают счастливые случаи, когда "дожиганием" ушедшего в кз (или около того) защитного диода работоспособность восстанавливается, иногда требуется навесить внешнюю подтяжку
    Profi v3.2 512K+color; Profi 6.2B; МС-0511

  6. #5

    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,375
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    384
    Поблагодарили
    346 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от akudelev Посмотреть сообщение
    Имеется устройство Autohelm-3000 - "авторулевой для парусной лодки".


    Но новый чип пищит и светит постоянно (микроконтроллер где-то зависает в начале программы).
    После возврата старого чипа - все работает, втыкаю новый - нет, висит.
    глянув на схему - первое что бросается в глаза - это подстроечник на 39 ноге. контроль питания возможно, и по нему есть переходы в программе (2 штуки). а поскольку у 48 серии нет аналоговых входов - все работает за счет порога переключения ножки из 0 в 1. а он у разных экземпляров может отличаться.


    .....
    Выглядит так, будто программа защищена от копирования:
    1) Дамп сделан под конкретный чип и выполняется проверка по серийному номеру, - но в мануалах ничего подобного не встречается. Нету в ассемблере MCS-48 команды "программно прочитать серийник".
    2) Возможно что-то записано в энергонезависимый(?) RAM, ее нельзя скопировать программатором. Но RAM на этом процессоре обычный, и без питания (и тем более с извлечением чипа) - гарантированно сбрасывается.
    3) Возможно производитель для защиты в своем чипе сам "сжег" какие-то невостребованные пины. И программа получая с их значения, определяет свое присутствие в другом микроконтроллере. Но всю схему перелопатил, подозрительные "пины" не втыкал в разъем, а подвешивал в воздух. Нет - все всегда одинаково, старый чип работает, новый - зависает.
    да какой там, у 48 серии вроде даже защиты ПЗУ от считывания нет...

    Зверинецъ

    Специалист (был когда-то "совсем стандарт") - 1988-2023
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    БК0010-01 стоковый
    [свернуть]

  7. #6

    Регистрация
    18.08.2024
    Адрес
    г. Санкт-Петербург
    Сообщений
    6
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прошивка 2килобайта
    Прочитанную - дизассемблировал... очень запутанная, это немного смутило.
    ...
    Скачанную из интернета - получил с "ASM-исходником дизассемблированным" - вполне понятная.
    Разбирал, нашел множество ожидаемых точек работы с BUS и портами.
    ASM - https://disk.yandex.ru/d/QhAxfpMO5yirXw
    BIN - https://disk.yandex.ru/d/x9OyLHragY3ryQ
    .....
    Сверял в ключевых местах, где идет работа с BUS - да, дизассемблирована корректно.
    Модернизировал прошивку NOP-ами - да, где нужно "звук выключается" - BIN выполняется.
    Но виснет где-то дальше.
    ....
    Совсем не хочется разбирать ASM на функции, память на переменные, вручную собирать из него C++ и вникать во всю алгоритмику вычисления угла перекладки руля и длительности работы моторчика.
    Когда этот BIN выполняется на старом чипе - к алгоритмам его работы претензий нет.
    Ошибка не в алгоритмах, а в какой-то особенности прошивки D8749H, или в его возможной необычной защите от копирования.
    Цитата Сообщение от Serg6845 Посмотреть сообщение
    глянув на схему - первое что бросается в глаза - это подстроечник на 39 ноге. контроль питания возможно, и по нему есть переходы в программе (2 штуки). а поскольку у 48 серии нет аналоговых входов - все работает за счет порога переключения ножки из 0 в 1. а он у разных экземпляров может отличаться.
    Там все просто.
    Это не подстроечник, это "переключатель направления вращения мотора".
    В зависимости от положения этого реостата (выкручен полностью вправо или влево) - на 39й ноге или +5в или 0в.
    Программа через инструкцию JT1 читает уровень на 39й ноге и дает прямую или обратную полярность для вращения мотора на пинах 37 и 38 (старшие биты Port2)

    - - - Добавлено - - -

    Приложил краткий мануал по D8749
    Там назначение пинов рассписано
    https://disk.yandex.ru/i/DBp0y2BS9MGoiA
    Последний раз редактировалось akudelev; 21.08.2024 в 21:42.

  8. #7

    Регистрация
    24.01.2010
    Адрес
    Москва
    Сообщений
    370
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    D8749 в керамике с окном? читайте дамп с оригинала несколько раз и сравнивайте, вероятно есть плавающие биты в прошивке. На АОН'ах так прошивки защищали в свое время.

    Железо

    ZX-Evolution rev.С; TSFM; NeoGS Rev.C | БК-0011М | ReVerSE-U16 Rev.C | Profi 5.03
    A1200 Rev.1D1; Bliz060@50+SCSI Kit+128Mb; CF-IDE 16Gb; AOS3.9 | A1200 Rev.1D4; Micronic Infinitiv 1200 + Zorro II board ; BPPC060@60/603e@240+256Mb ; Cybervision 64-3D ; Indi AGA Mk2 ; Spitfire SCSI ; PCD-60B SCSI Card Reader ; IDE Buddha Flash ; Toccata ; AOS4.1
    Yamaha MSX2 YIS503IIIR КУВТ2
    Mac Mini G4; 1,5Ghz; RAM 1Gb; HDD 80Gb; AirPort
    [свернуть]

  9. #8

    Регистрация
    18.08.2024
    Адрес
    г. Санкт-Петербург
    Сообщений
    6
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от im2 Посмотреть сообщение
    D8749 в керамике с окном? читайте дамп с оригинала несколько раз и сравнивайте, вероятно есть плавающие биты в прошивке. На АОН'ах так прошивки защищали в свое время.
    Да, D8749H - с окном.
    Спасибо, попробую прочитать несколько раз, сравню прочитанное.

    - - - Добавлено - - -

    Цитата Сообщение от UncleDim Посмотреть сообщение
    off: а реанимировать пин не пробовали? бывают счастливые случаи, когда "дожиганием" ушедшего в кз (или около того) защитного диода работоспособность восстанавливается, иногда требуется навесить внешнюю подтяжку
    Спасибо, померю напряжение на пинах.
    Дожечь - вариант "последней надежды".

  10. #9

    Регистрация
    12.07.2016
    Адрес
    г. Тюмень
    Сообщений
    40
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от akudelev Посмотреть сообщение
    Было подозрение на то, что 23й пин используется для формирования адреса, и что считанный дамп мог оказаться некорректным.
    ......
    Но для 2к нужно 11 бит адресации, и согласно мануалам программатор будет использовать: BUS+P20+P21+P22
    То-есть до 23го контакта очередь не доходит (это для 4к нужно 12бит адресации - для intel 8050)
    У вас тут ошибка. 23-й пин - это P22, адресная линия A10, до него доходит очередь.
    Если он отгорел, вы не сможете считать все 2Кб прошивки, а только половину

  11. #10

    Регистрация
    18.08.2024
    Адрес
    г. Санкт-Петербург
    Сообщений
    6
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Перепроверил мануал - да, точно!
    P22 он на пине 23!
    Увы, значит прошивка читается с ошибками.
    Потому она меня смутила, и так отличается от той второй прошивки.
    .....
    Ладно, буду разбираться с второй прошивкой, скачанной из интернета.
    И попробую снять дамп с заведомо исправного устройства.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 0
    Последнее: 21.01.2021, 17:46
  2. Ответов: 4
    Последнее: 30.05.2020, 08:55
  3. Создание дампа музыки
    от GM BIT в разделе Программирование
    Ответов: 2
    Последнее: 10.05.2011, 19:00
  4. MCS-51 old and Atmel
    от nihirash в разделе Для начинающих
    Ответов: 0
    Последнее: 15.11.2006, 10:20
  5. В чем проблема копирования дискеты?
    от Dut_Norshi в разделе Утилиты
    Ответов: 4
    Последнее: 24.07.2006, 12:45

Ваши права

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