Защита диска от копирования

Тема в разделе "WASM.RESEARCH", создана пользователем Dmitri, 3 окт 2004.

  1. Dmitri

    Dmitri New Member

    Публикаций:
    0
    Регистрация:
    1 сен 2004
    Сообщения:
    15
    Уважаемые "воины дзена"! Помогите, чем можите! Постановка задачи: есть компакт-диск с программой, надо не дать юзеру чисто физически скопировать программу за 60 секунд.



    Вступление: мне нужна ОЧЕНЬ простая защита (НЕ надо разводить демагогию в стиле "все, что запускается, ломается"), которая не позволит за 2 минуты чисто физически скопировать программу с диска. И нужно реализовать эту защиту за сутки.



    Пояснение: я принесу программу на конференцию, вставлю диск в комп, к которому присоединен проектор, и расскажу доклад. Комп не подключен к сети. Надо, чтобы нехорошие дядьки у меня за спиной не скопировали программу с диска простым drug'n'drop'ом. Всяких эмуляторов и прочей алкогльной продукции у них под рукой не будет. Т.е. образ они НЕ скопируют!



    Оптимальное решение (не забывайте, мне надо реализовать защиту за сутки) - привязываться к серийнику диска, но если они скопируют программу, они потом ее расковыряют.



    Если же не дать им скопировать саму программу с диска физически (может, exception какой-нибудь вызвать при копировании или диск коряво записать), они не успеют просто поковыряться с самим диском и не скопируют его содержимое.



    Есть ли готовые решения (примеры) для решения этой задачи?



    P.S. Прога на C++ (компилятор BCB 6).



    P.P.S. Был бы рад услышать мнение Криса Касперски.
     
  2. Noble Ghost

    Noble Ghost New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2004
    Сообщения:
    204
    Адрес:
    Russia
    (первое, что пришло в голову)

    пишем прогу, которая шифрует исходный файл(как я понял имеем дело с .ехе?), и записываем этот файл на диск.

    а на дискетку(флэшку, второй компакт etc) кидаем прогу, которая расшифровывает криптованный файл в память и запускает его.
     
  3. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    А может просто спросить серейник дискеты, а дискету с собой таскать!
     
  4. DaemoniacaL

    DaemoniacaL New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    42
    Адрес:
    Russia
    Лучший выход неси свой ноутбук %) и пусть они к нему проектор прицепят..
     
  5. compnet

    compnet New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2004
    Сообщения:
    10
    Адрес:
    Russia
    Есть такой вариант - часть данных записать во 2-й файл, который будет позже вручную подгружен во время выполнения программы. С этим файлом сделать слдеующую весчь (эхх, помню как на спектуме дорожки протыкали :) ) http://www.ixbt.com/optical/magia-chisel.shtml

    Вручную вытаскиваем данные ровно до сектора такой "дырки", винда же будет копировать весь файл и расстроит юзера.

    В принципе, за сутки реализуемо.

    Способ 2-й -> Делаем также два файла, у второго аттрибут hidden, в Explorere по умолчанию они не показываются :)))
     
  6. MoKC0DeR

    MoKC0DeR New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2003
    Сообщения:
    136
    Адрес:
    Russia
    Dmitri

    ИМХО единственный нормальный вариант подсказал DaemoniacaL



    Все остальные варианты имеют ряд недостатков
     
  7. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Согдасен с compnet, IMHO дырка в таком случае может помочь.

    Можно даже более радикальный (и простой) метод - прицепить к экзешнику лишнюю секцию (оверлей) и повредить диск физически. Если файл будет 600Mb, то промазать будет сложно :)

    Но нужно быть сразу готовым к возможным проблемам: поведение приводов различается, так что лучше приготовить несколько дисков (лучше разных производителей).

    Ещё хорошо накидать на диск кучу ненужных файлов (можно так же повреждённых, для уменьшения вероятности своих проблем можно отдельной сессией записать) - тут психологичаский момент - непонятно что нужно копировать, да ещё эксплорер задумывается на каждом файле по 5 минут :)

    Вообще, даже нормальные диски с кучей мелких файлов копируются эксплорером далеко не за минуту :derisive:
     
  8. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    секция кода шифруется, а ключ расшифровывания это серийник дискеты, всунул нажал приложения оно и запустилось, по работал вышел, нужно опять всунул запустил
     
  9. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    EvilsInterrupt

    > секция кода шифруется, а ключ расшифровывания это серийник дискеты, всунул нажал приложения оно и запустилось, по работал вышел, нужно опять всунул запустил



    Сказано же было, "защитить от копирования"

    и

    "но если они скопируют программу, они потом ее расковыряют".



    Так что твой метод отдыхает..
     
  10. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Хорошим решением был бы архиватор с алгоритмом RAR, который мог бы распаковывать файл прямо в память, поставить пароль символов на 20-ть со спецсимволами, после этого пусть копируют, расковыряют только к концу жизни.. =)
     
  11. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Если поезд еще не ушел, то сработает такой

    метод : прога использует информацию из

    служебных секторов ( например 17, где El Torito

    пишется). Способ посложнее : записать

    экзешник с секретным "довеском" на образ,

    потом откорректировать вручную длину файла.
     
  12. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Так что твой метод отдыхает..



    Он не отдыхает. Решение очевидно. Удивительно, что никто его так и не предложил.

    Программа шифруется симметричным алгоритмом (что-нибудь типа AES или blowfish) на основе данных железа его ноутбука. При запуске, ессно, расшифровывается. При переносе на другой комп все это дело немедленно перестает работать. Вот и все.
     
  13. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Дык вроде про ноут речи нет, нужно что бы с болванки не скопировали.



    ЗЫ

    А вообще, IMHO можно было просто видеоролик записать на CD =)
     
  14. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    Dmitri

    В одном из журналов "Системный администратор" за этот год уже была соответствующая статья Криса Касперски. Поищи там.
     
  15. ProgramMan

    ProgramMan New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2004
    Сообщения:
    263
    Самый надёжный, при данных условиях: пиши прогу,которая читает сектор/несколько секторов с КРИТИЧЕСКИМ кодом(например декриптор, с длиной ключа пару кб :)) в память, и передаёт туда управление. И всё, без использования прог создания оброза эти данные будет не вытащить.
     
  16. HarmEr

    HarmEr New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2004
    Сообщения:
    4




    Я думаю Володя хотел сказать не о железе ноута

    а какраз о параметрах болванки.

    С нее можно взять серийник, имя, свободное место, количество сессий. В конце концов записанный на болванку ключ шифрования в RAW режиме, который как файл не будет виден вообще.



    Навесной пакер для рашифровки EXE, с использованием этих данных, в память с последующей передачей управления на выполнение пишеться меньше чем за час.

    И даже если файл будет скопирован, то расшифровать его врятли смогут без болванки или точного образа на руках.
     
  17. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    HarmEr

    Я думаю Володя хотел сказать не о железе ноута

    а какраз о параметрах болванки.




    ;)
     
  18. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Короче, всё с вами ясно, телепаты :) а ещё говорят что реверсят, сами же подсмотрят у разработчиков реализацию третьим глазом =)
     
  19. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    S_T_A_S_

    Чело кажется с самого начала сказал:



    >надо не дать юзеру чисто физически скопировать программу >за 60 секунд
     
  20. vinnie_pooh

    vinnie_pooh New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    98
    Кажется, у меня получилось... Конечно, с опозданием, но тема интересная и часто поднимается на форуме. У Рихтера есть пример перехвата API, я его слегка модифицировал и перехватил CopyFileExW, заменив его такой функцией:
    Код (Text):
    1. int WINAPI Hook_CopyFileExW(WCHAR* existing_file, WCHAR*, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD)
    2. {
    3.     MessageBoxW(0, existing_file, L"ApiHook", 0);
    4.     return (0);
    5. }
    Теперь, когда я пытаюсь что-нибудь скопировать в Explorer-е, вместо копирования я вижу MessageBox с именем копируемого файла. Можно проверять его на валидность, и если все в порядке, вызывать оригинальный CopyFileExW, в противном случае - ничего не делать, или скопировать что-то левое. Метод хорош тем, что работает для любых файлов, не только EXE.