Можно ли привязать программу к флешке?

Тема в разделе "WASM.ZEN", создана пользователем jangle, 31 авг 2007.

  1. jangle

    jangle New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    56
    Адрес:
    Russia
    Чтобы она запускалась только с флешки, а при копировании на другой носитель становилась неработоспособной. Как это можно реализовать?
     
  2. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Первое, что приходит на ум, это привязка к MBR. А туда в неиспользуемую область можно еще пару байт записать, а в проге проверить всё совпадает или нет.
     
  3. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Проверять, что программа запускается с removable device, + сверять вендора, продукт ид и серийник флешки с эталонными. Только это все лишь до тех пор, пока кому-нибудь действительно не понадобится запустить программу с другого носителя :)
     
  4. apple

    apple Виктор

    Публикаций:
    0
    Регистрация:
    26 апр 2005
    Сообщения:
    907
    Адрес:
    Russia
    Есть книжка Агурова. Там все написано, даже исхъодник есть.
     
  5. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    хранить прогу в зашифрованом виде, ключ - какая-нибудь строка в служебной области - бутсекторе, мбр и др. или серийник флэшки. и написать запускальщик, который будет ее расшифровывать и запускать, а дождавшись завершения - затирать и удалять.
     
  6. jangle

    jangle New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    56
    Адрес:
    Russia
    а как записать байты в служебную область флешки?
     
  7. Miller Rabin

    Miller Rabin New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2006
    Сообщения:
    185
    Stariy
    Так делали программиста еще в 80-x годах, чтобы защитить свои программы от копирования. А затем появилась прога побайтного копирования дискет, и методу пришел абзац.

    jangle
    Не лезь в служебную область флешки - УГРОБИШЬ!!!
    по твоей защите расскажу все на практическом примере:

    Защита была очень слабой, но есть множество нюансов, учтя которые можно сделать вполне достойную защиту:
    1. Не использовать для таких целей стандартные базы данных, тут надо что-то свое.
    2. Сбор информации о носителе лучше переложить на компонент защиты уровня ядра. (если возможно)
    3. и 4. Эталонный и полученные хэши, не должны сравниваться в целом виде. В моем случае эталонный хэш хранился как строка в базе данных,а процедура сравнения хэшей представляла из себя не более, чем сравнение строк. Это тупо!!! Сравнение хэшей не нужно проводить за одну процедуру, сравнивать их необходимо параллельно с другими задачами это сильно усложнит анализ программы.
    5. КОНТРОЛЬ ИСКЛЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ!!! Автор описываемой мною защиты не предусмотрел того, что функция GetVolumeInformation в буфере серийного номера выдает 0, если вызвана без админовских прав, либо если запрашиваемый диск - сетевой. поэтому у него получался хэш и сравнивался с эталонным даже в том случае если серийника на входе небыло вообще.
    Это позволяло записать в базу нулевой хэш и запускать ее вообще откуда взбрендит. Хорошая защита должна адекватно реагировать на подобные ситуации.

    Можно даже и не заморачиваться о переносе сбора информации о носителе на уровень ядра. Не всегда это возможно и не всегда это оправдывает себя. Но в остальном промахов быть не должно. Все это не так уж сложно и не требует глубоких знаний архитектуры ОС
     
  8. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Это точно. Без этого ни-ни.
     
  9. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    А зачем вообще сравнивать хэши? Надо на основании серийного номера генерить ключ, на котором шифровать программу. Тогда уже как минимум нужно купить одну рабочую версию, чтобы сдампить расшифрованный образ :)
     
  10. Miller Rabin

    Miller Rabin New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2006
    Сообщения:
    185
    gilg
    Ну первая-то копия покупается всегда как правило :)
    А от сдампливания проги еще никто не умирал (хех кроме самой проги).

    Тут не в методе дело. Они все слабые по сути. В хорошей защите сильная сторона одного из методов не дает воспользоваться слабой строной другого.
     
  11. Ss_oO0

    Ss_oO0 New Member

    Публикаций:
    0
    Регистрация:
    11 ноя 2006
    Сообщения:
    65
    Задача неразрешима и это можно доказать математически.
    Пусть А - программа, запускающаяся только с определенной флэшки, А2 - программа, выполняющая те же действия, но запускающаяся с любого носителя. Программа А существует по определению. Программа А2 также существует, так как А2 = А - К, где К - код, деляющий возможным запуск только с заданной флэшки. Далее, в фонНемановской архитектуре код также может рассматриваться как данные, следовательно существует программа П, преобразующая А в А2. Весь вопрос лишь в стоимости преобразования А->А2.
     
  12. Miller Rabin

    Miller Rabin New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2006
    Сообщения:
    185
    Ss_oO0
    Да это ежу понятно.
    Никто и не пытается создать неломаемую защиту. Хорошая защита не значит неломаемая.
     
  13. jangle

    jangle New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    56
    Адрес:
    Russia
    А какую защиту можно сделать от сдапливания? По моему, первое что приходит на ум, испортить формат зашифрованного файла.
     
  14. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    шифровать отдельные участки кода различными способами.
    расшифровывается часть кода - выполняется, чтобы несколько участков кода одновременно не были открыты.
     
  15. eight

    eight New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2007
    Сообщения:
    27
    Хмм. а если сделать немного по-другому? к примеру, как у вебманей - никто не задумывался? Генерится файл ключей.. и доступ к нему закрывается.. Только там нужно будет извратиться. К примеру, у каждой проги свой идент. И для каждого идента свой файл ключей делается. При установке. Да и такую дуру фиг подберешь.. т.е. для этого не нужно узнавать ни id, никакие суммы в ПЗУ БИОС не нужны. Чем не вариант?

    Хотя распространить можно до установки, например, но что-то по этому методу сделать вприниципе возможно.