User Tag List

Показано с 1 по 10 из 346

Тема: Расскажите о ZX Next

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    24.06.2011
    Адрес
    Тула
    Сообщений
    278
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KokaF77 Посмотреть сообщение
    Только толку от этого дампа не много. Про плавающие биты Conan ведь не спроста писал.
    Давайте неспеша подумаем об этой защите. То, что адреса перепутаны, М1 использован нестандартно и пр. - это защита от того, чтобы программу заново с нуля не переписали так просто.
    Плавающие биты это защита от прямого копирования.
    Но просто плавающие биты это не защита - их легко можно сделать в нужных битах.
    Как можно плавающие биты использовать для реальной защиты? Способ только один - применять не просто плавающие биты, а записывать в эти биты как бы аналоговое значение. Тоесть считываем этот бит, к примеру 100 раз, получается, например из 100 считываний 30 раз считался "0" и 70 раз "1". Это можно сделать условием проверки подлинности. Если же считалось 90 раз "0" и 10 раз "1", или, скажем, 50 на 50, то можно считать , что проверка не прошла.
    Но не всё так просто - процент считывания "0" и "1" зависит ещё и от температуры и напряжения питания. Поэтому такой ключ ненадежен.
    Выход такой - записать несколько плавающих битов с разной степенью "прошитости" (прошитостью назовем отношение количества считанных "0" к количеству считанных "1" . При прошитости 100% всегда считывается "0", при прошитости 0% всегда считывается "1", плавающий бит считывается с каким то промежуточным %)
    Так вот - записать несколько плавающих битов с разной степенью "прошитости" , скажем так:
    бит 1 - 30%
    бит 2 - 60%
    бит 3 - 10%

    Если поплывут внешние условия - температура и напряжение питания, то считываемая статистика изменится, к примеру, так:
    бит 1 - 57%
    бит 2 - 93%
    бит 3 - 48%

    Фишка в том, что дестабилизирующие факторы влияют на разные биты одновременно - и если опираться на абсолютные значения "прошитости" бита нельзя - этот параметр сильно плавает , но стабильным остается соотношение прошитости разных бит, тоесть из примера выше - бит 2 всегда будет более прошит, чем бит 1 , соответственно бит 1 всегда будет более прошит, чем бит 3.
    А на проверке этих условий уже можно построить защиту.
    Не спроста же защита срабатывает через 3 сек. - время нужно, чтобы собрать статистику.
    Вывод - для того, чтобы правильно считать это ПЗУ -
    по железу: подойдет любой программатор и считывать достаточно только при номинальном напряжении питания.
    по софту: софт для программатора надо написать свой - чтобы он собирал статистику считанных плавающих бит в табличку типа вышеприведенной:
    бит 1 - 30%
    бит 2 - 60%
    бит 3 - 10% и т.д.

    Два дополнения: 1. Количество считываний для сбора верной статистики надо подобрать эксперементально, начать, скажем со 100 считываний и увеличивать пока процент не перестанет сильно изменятся.
    2. Надо убедится, что считываемая ПЗУ реально работает в компе - даже хорошо зашитые ячейки со временем начинают плавать, а уж изначально плавающие тем более ненадежны.

    Про запись в следующий раз.
    Последний раз редактировалось AIS; 31.07.2011 в 23:00.

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

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

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

Ваши права

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