Уважаемые "воины дзена"! Помогите, чем можите! Постановка задачи: есть компакт-диск с программой, надо не дать юзеру чисто физически скопировать программу за 60 секунд. Вступление: мне нужна ОЧЕНЬ простая защита (НЕ надо разводить демагогию в стиле "все, что запускается, ломается"), которая не позволит за 2 минуты чисто физически скопировать программу с диска. И нужно реализовать эту защиту за сутки. Пояснение: я принесу программу на конференцию, вставлю диск в комп, к которому присоединен проектор, и расскажу доклад. Комп не подключен к сети. Надо, чтобы нехорошие дядьки у меня за спиной не скопировали программу с диска простым drug'n'drop'ом. Всяких эмуляторов и прочей алкогльной продукции у них под рукой не будет. Т.е. образ они НЕ скопируют! Оптимальное решение (не забывайте, мне надо реализовать защиту за сутки) - привязываться к серийнику диска, но если они скопируют программу, они потом ее расковыряют. Если же не дать им скопировать саму программу с диска физически (может, exception какой-нибудь вызвать при копировании или диск коряво записать), они не успеют просто поковыряться с самим диском и не скопируют его содержимое. Есть ли готовые решения (примеры) для решения этой задачи? P.S. Прога на C++ (компилятор BCB 6). P.P.S. Был бы рад услышать мнение Криса Касперски.
(первое, что пришло в голову) пишем прогу, которая шифрует исходный файл(как я понял имеем дело с .ехе?), и записываем этот файл на диск. а на дискетку(флэшку, второй компакт etc) кидаем прогу, которая расшифровывает криптованный файл в память и запускает его.
Есть такой вариант - часть данных записать во 2-й файл, который будет позже вручную подгружен во время выполнения программы. С этим файлом сделать слдеующую весчь (эхх, помню как на спектуме дорожки протыкали ) http://www.ixbt.com/optical/magia-chisel.shtml Вручную вытаскиваем данные ровно до сектора такой "дырки", винда же будет копировать весь файл и расстроит юзера. В принципе, за сутки реализуемо. Способ 2-й -> Делаем также два файла, у второго аттрибут hidden, в Explorere по умолчанию они не показываются ))
Dmitri ИМХО единственный нормальный вариант подсказал DaemoniacaL Все остальные варианты имеют ряд недостатков
Согдасен с compnet, IMHO дырка в таком случае может помочь. Можно даже более радикальный (и простой) метод - прицепить к экзешнику лишнюю секцию (оверлей) и повредить диск физически. Если файл будет 600Mb, то промазать будет сложно Но нужно быть сразу готовым к возможным проблемам: поведение приводов различается, так что лучше приготовить несколько дисков (лучше разных производителей). Ещё хорошо накидать на диск кучу ненужных файлов (можно так же повреждённых, для уменьшения вероятности своих проблем можно отдельной сессией записать) - тут психологичаский момент - непонятно что нужно копировать, да ещё эксплорер задумывается на каждом файле по 5 минут Вообще, даже нормальные диски с кучей мелких файлов копируются эксплорером далеко не за минуту
секция кода шифруется, а ключ расшифровывания это серийник дискеты, всунул нажал приложения оно и запустилось, по работал вышел, нужно опять всунул запустил
EvilsInterrupt > секция кода шифруется, а ключ расшифровывания это серийник дискеты, всунул нажал приложения оно и запустилось, по работал вышел, нужно опять всунул запустил Сказано же было, "защитить от копирования" и "но если они скопируют программу, они потом ее расковыряют". Так что твой метод отдыхает..
Хорошим решением был бы архиватор с алгоритмом RAR, который мог бы распаковывать файл прямо в память, поставить пароль символов на 20-ть со спецсимволами, после этого пусть копируют, расковыряют только к концу жизни.. =)
Если поезд еще не ушел, то сработает такой метод : прога использует информацию из служебных секторов ( например 17, где El Torito пишется). Способ посложнее : записать экзешник с секретным "довеском" на образ, потом откорректировать вручную длину файла.
Так что твой метод отдыхает.. Он не отдыхает. Решение очевидно. Удивительно, что никто его так и не предложил. Программа шифруется симметричным алгоритмом (что-нибудь типа AES или blowfish) на основе данных железа его ноутбука. При запуске, ессно, расшифровывается. При переносе на другой комп все это дело немедленно перестает работать. Вот и все.
Дык вроде про ноут речи нет, нужно что бы с болванки не скопировали. ЗЫ А вообще, IMHO можно было просто видеоролик записать на CD =)
Dmitri В одном из журналов "Системный администратор" за этот год уже была соответствующая статья Криса Касперски. Поищи там.
Самый надёжный, при данных условиях: пиши прогу,которая читает сектор/несколько секторов с КРИТИЧЕСКИМ кодом(например декриптор, с длиной ключа пару кб ) в память, и передаёт туда управление. И всё, без использования прог создания оброза эти данные будет не вытащить.
Я думаю Володя хотел сказать не о железе ноута а какраз о параметрах болванки. С нее можно взять серийник, имя, свободное место, количество сессий. В конце концов записанный на болванку ключ шифрования в RAW режиме, который как файл не будет виден вообще. Навесной пакер для рашифровки EXE, с использованием этих данных, в память с последующей передачей управления на выполнение пишеться меньше чем за час. И даже если файл будет скопирован, то расшифровать его врятли смогут без болванки или точного образа на руках.
Короче, всё с вами ясно, телепаты а ещё говорят что реверсят, сами же подсмотрят у разработчиков реализацию третьим глазом =)
S_T_A_S_ Чело кажется с самого начала сказал: >надо не дать юзеру чисто физически скопировать программу >за 60 секунд
Кажется, у меня получилось... Конечно, с опозданием, но тема интересная и часто поднимается на форуме. У Рихтера есть пример перехвата API, я его слегка модифицировал и перехватил CopyFileExW, заменив его такой функцией: Код (Text): int WINAPI Hook_CopyFileExW(WCHAR* existing_file, WCHAR*, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD) { MessageBoxW(0, existing_file, L"ApiHook", 0); return (0); } Теперь, когда я пытаюсь что-нибудь скопировать в Explorer-е, вместо копирования я вижу MessageBox с именем копируемого файла. Можно проверять его на валидность, и если все в порядке, вызывать оригинальный CopyFileExW, в противном случае - ничего не делать, или скопировать что-то левое. Метод хорош тем, что работает для любых файлов, не только EXE.