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

    Регистрация
    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Кб прошивки, а только половину

  6. #5

    Регистрация
    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

  7. #6

    Регистрация
    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 стоковый
    [свернуть]

  8. #7

    Регистрация
    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.

  9. #8

    Регистрация
    05.05.2023
    Адрес
    г. Баку, Азербайджан
    Сообщений
    52
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    +5V на pin 26 есть?

    При дефекте A10 по идее два раза одно и тоже должно прочитаться, те в считанной
    прошивке должны быть одинаковые верхняя и нижняя половина. А у Вас они
    отличаются. Может быть, из-за апаратного повреждения нарушилась возможность
    корректного чтения внутренней памяти извне (в смысле не только из-за A10)?

    Прошивка, скачанная с интернет, может не работать у Вас по причине отличия
    аппратной части (те возможно выпускалось несколько ревизий устройства, со
    своими прошивками под каждую ревизию)

    Цитата Сообщение от akudelev Посмотреть сообщение
    Совсем не хочется разбирать ASM на функции, память на переменные, вручную собирать из него C++ и вникать во всю алгоритмику вычисления угла перекладки руля и длительности работы моторчика.
    Какой C++? Для него и Си нет, по понятным причинам, да и не нужен Си для него.
    Последний раз редактировалось i8088; 23.08.2024 в 18:18.

  10. #9

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

    По умолчанию

    Цитата Сообщение от i8088 Посмотреть сообщение
    А у Вас они
    отличаются.
    В теме не была выложена считанная прошивка

  11. #10

    Регистрация
    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
    [свернуть]

Страница 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

Ваши права

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