Понимаю что тема избитая. Думаю просто какую тему выбрать на диплом... Если сделать не просто навесной протектор, их и так уже дофига и не переплюнешь так просто, а протектор со своим простым АПИ. Например с 3 функциями: _API_ShowSerialDialog() _API_StartCrypt() _API_EndCrypt() Программер при создании своей проги на какой нить кнопке/меню/т.п вешает функцию _API_ShowSerialDialog(). Которая при коппилляции внедряет некоторую уникальную сигнатуру нужной длинны. Функциями _API_StartCrypt() и _API_EndCrypt() обматываются критические участки кода. Они тоже внедряют сигнатуру при компилляции. После компилляции полученная программа скармливается протектору, который находит сигнатуру диалога и внедряет код диалога (там секцию добавляет, импорт редактирует или сам в процессе работы находит, это уже как реализовать). Между сигнатурами функций _API_StartCrypt() и _API_EndCrypt() код шифруется и внедряется проверка которая проверяет, если код расшифрован нормально, то она его запускает, если нет, то выводит сообщение что не введен серийный номер. Введенный при наложении защиты серийник естесвенно не хранить, а юзать его как ключ шифрования. Хранить только хеш участков кода до шифрования. И сравнивать его с полученным при дешифровании. Если сошлись, то с большой вероятностью серийник введен верно. Такие защиты тоже наверняка существуют... Но... В общем, что думаете по этому поводу?
В таком случае можно обойтись и макросами Код (Text): ;===================================================================== macro random key ; возможно реализовать без кода {генерация случ. ключа} macro encrypt data,size,key ; возможно реализовать без кода {шифрование на ключе} macro display key ; возможно реализовать без кода {отображение случ. ключа} ;===================================================================== macro read key ; необходим код для получения ключа {чтение случ. ключа из файла\диалога и т.д.} macro decrypt data,size,key ; необходим код для расшифровки {дешифрование на ключе} macro validation ; необходим код {проверка и запуск\отлуп} ;===================================================================== Или свести все к двум макросам Код (Text): ;===================================================================== key = encrypt (data,size) ; шифрование при компиляции и отображение ключа isvalid = decrypt (data,size,key) ; дешифрование при выполнении и возврат результата ;===================================================================== Т.е. прогер в свой код вставляет макро шифрования и указывает откуда-докудаво (макро возвращает ключ), как прога скомпилена её можно с ключем распространять, а при запуске запрашиваем ключ и передаем в макро раскриптовки (возвращает отлуп если bad key) Простейший пример есть тут http://wasm.ru/forum/files/995930221__xtea.zip , короче пиши тему "Создание защит макросами!" А с какой стороны надо думать, с твоей, прогера, препода? или ещё чего ...
Ага, через макросы неплохо выходит. Но я думаю через прогу и маленький апи более унивесально будет со стороны языков программирования. Бо легче для нескольких разный языков маленокое апи написать чем большие макросы. Хотя конечно гемороя при разработке больше =) Плюс диалог запроса серийника в разных языках по разному, а так уже откомпиленный внедрить... А насчет думать =) Так я имел ввиду просто, насколько живучая идея, в смысле прикладная? И плюс есть ли уже что нить похожее, которое реально используется?
Да полно. Хотя бы ASprotect и Armadillo. Да я тоже раньше писал прот, где помимо всего прочего использовались и макросы и апи. Это теперь есть неверное у всех, так что незачем изобреать очередной велоспед.
Да, подстава... Повтыкал, действительно уже почти все такую защиту имеют в своем наборе... Как говориться: "Все уже украдено до нас" =(. А в каком направлении тогда посоветуете покопать? Какое приоритетное направление щас в этом деле? Что поисследовать?
Пермутации и ВМ. А еще лучше даже не браться за протектор если нет конкретного заказчика, все равно никто не купит.
Да мне продавать и не надо =) Мне надо развить теорию... Провести какие нибудь исследования... Мне на диплом. Просто я преподу уже сказал что буду этим заниматься, думал такую штуку разработать про которую сверху писал, а тут облом вышел, что такого уже дофига. Вот теперь в раздумьях что делать. Мне в принципе в итоге и рабочая прога не обязательно, главное чтобы была новизна и исследования...
Ms Rem, расскажи поподробнее про "Пермутации и ВМ"... Хотя бы вкратце, что такое, где искать об этом. ВМ - это я так понял виртульная машина. Где почитать? И если ты занимался опиши какие-нибудь основные тенденции развития протекторов, т. е. что обычно делают и что скорее всего дальше будут делать. Я тоже хочу заняться... Как дипломный проект (тем более, что специальность моя - компьютерная безопасность) да и по работе мне очень поможет свой протектор. P. S. Похоже, что я Ms Rem'а попросил написать целую статью. =) Ну, сколько сможешь плиз. 3ton, а ты когда сделаешь диплом - если не жалко скинь на почту drakon [at] dubki [dot] ru