User Tag List

Показано с 1 по 5 из 5

Тема: Вектор-06Ц, защита от копирования на дискетах.

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

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

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Расскажу, про защиту от копирования, которую я делал для своей программы в начале 90-ых.
    Поскольку это была защита на дискету, да ещё и для Вектора, практического интереса она конечно уже не представляет.
    Да и защитами программ, за прошедшие с тех пор почти 30 лет, я больше не занимался и не интересовался.

    В идее написать защиту сплелись интерес изучить запись/чтение дискет и некоторая обида, на то что я ещё не дописал программу, а её бета-версия уже появилась в прайсе какого-то "центра", в городе, который я даже на карте не сразу найду.
    Доверия к бета-тестерам в тот момент стало значительно меньше.

    Итак.

    Скрытый текст


    Что я знал приступая к разработке защиты, это то, что уже есть программы копировщики дискет, которые используя команды "Чтение дорожки" и "Запись дорожки" спокойно клонируют дискеты, и с этим что-то нужно было делать.
    Уже столкнувшись с защитой программы, которая гоняла головки на дорожки дискеты за 80-ую, я прикинул, что это слишком очевидное проявление. Значит защита должна проверяться не заметно. Самое простое, записать метку на 8-ю дорожку, туда где хранится директорий дискеты, и проверять метку именно при чтении каталога дискеты.
    Соответственно, проверка защиты не должна находиться в начале программы (где её легко найти), и срабатывать защита должна не сразу после проверки, а эффект должен быть "отложенным".
    Изучая чтение с дискеты, обратил внимание, что сектор на дискете 1КБ, и он читается за один раз в буфер ДОСа, а потом выдаётся блоками по 128 Байт. А так-же обратил внимание, что при копировании файла штатными средствами, копируется в новый файл столько блоков (по 128Байт), сколько их указано в записи директория дискеты.
    Вывод напрашивался сам, поместил подпрограмму проверки и обслуживающие её алгоритмы в конец файла, а после записи программы на "защищенную" дискету, уменьшал количество блоков программы. Это делала специальная утилита, которая ставила метку на дискету и записывала саму программу на дискету.
    В результате, если просто штатными средствами скопировать программу на КвазиДиск или другую дискету, то программа копируется не полностью, и её запуск в таком виде приводил к сбою ДОС.
    Если же программа запускалась с родной дискеты, то в памяти Вектора был тот не достающий кусок, где он был и как я его подтягивал, я уже не помню.
    Это был первый уровень защиты, как я извращался, что-бы спрятать обращение к подпрограмме проверки метки и кодировал саму подпрограмму, подробностей уже не помню. Помню, что обращение прятал глубоко в стек, и в явном виде адрес начала подпрограммы в ассемблерном тексте не был виден. И первоначально как-то модифицированный код, просто так не дизассемблировался.
    Всё это извращение было направлено только на то, чтобы спрятать чтение дискеты и анализ наличия метки. Т.к. было ясно, что какая бы ни была метка, если станет понятно, в чём защита, повторить её на любой другой дискете не составит особого труда.
    Я уже писал, что защита срабатывала отложенно. Если метка не была обнаружена, в основной код программы вносилось изменение, которое через некоторое время приводило к заполнению памяти "мусором" с помощью стека, т.е. сбоил ДОС (если я правильно помню). Ни каких сообщений, что копия программы не официальная.

    Собственно о метке на дискете.
    Проведя эксперименты с записью и чтением дорожки на дискете, я заметил, что даже на одной дискете, на одном дисководе запись дорожки всегда происходила "со смещением".
    Изучив формат дорожки, обнаружил большую область синхробайт в начале дискеты.
    Оказалось, что если начать запись дорожки (уже рабочей дискеты с файлами в каталоге), и прервать запись на этой первой области синхробайт, то читаемость дискеты не пострадает. Дискета штатными средствами отлично читалась, писалась, в общем работала как обычно.
    Но если попытаться прочитать дискету командой "Чтение дорожки", то после того байта на котором была прервана запись, читался сплошной "мусор". Из-за сдвига фазы (как я подозреваю) у прерванной записи и родного форматирования дискеты, синхронизация не восстанавливалась и информация всей дорожки терялась. Соответственно, не возможно было скопировать дискету штатными копировщиками.
    Сама "метка" конечно примитивна, читалось определённое кол-во байт командой "Чтение дорожки", и проверялось наличие не правильных синхробайт, появлявшихся после байта на котором прекращалась запись дорожки при её маркировке.
    [свернуть]
    Последний раз редактировалось KTSerg; 30.05.2020 в 08:56.

    Эти 3 пользователя(ей) поблагодарили KTSerg за это полезное сообщение:

    Improver(30.05.2020), ivagor(30.05.2020), shapipovo(06.06.2020)

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

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

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

Похожие темы

  1. Ответов: 4
    Последнее: 23.06.2016, 00:02
  2. ВЕКТОР-06Ц Аукцион
    от OS в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 16.06.2012, 16:57
  3. Вектор-06Ц
    от Robusta в разделе Барахолка (архив)
    Ответов: 11
    Последнее: 17.03.2009, 23:18
  4. Вектор-06Ц: БП от PC
    от Dmitry Dubrovenko в разделе Вектор
    Ответов: 11
    Последнее: 08.03.2009, 21:53
  5. Вектор-06Ц
    от AlexBel в разделе Барахолка (архив)
    Ответов: 4
    Последнее: 20.12.2007, 08:23

Ваши права

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