Pull to refresh

Comments 17

Насколько Я знаю, AES — это алгоритм симметричного шифрования. Может всё-таки где-то в исходниках хранится ключ?
ОписАлся в статье. Используется именно RSA с 1024 битным ключом. А AES используется только для установки пароля на свой лицензионный ключ в программе, если используешь её на чужом компьютере (при доработке конфигураций у клиента).
Использую для выставления зачетов студентам программу MyTestXPro. Для студентов создаю один *.exe файл теста, при запуске которого студенту предъявляется 20-30 вопросов из 400-500 общего числа заданий. Причем сам *.exe файл автором программы зашифрован.
Однако при запуске *.exe файла ВСЕ задания с ответами расшифровываются в памяти, откуда их студенты успешно копируют и легко проходят тест.
Не порекомендуете что-нибудь похожее на обфускатор для решения этой проблемы.
Думается, не обфускатор нужен, а другой подход. Например, клиент-сервер.
Поставлена задача выдавать тесты студентам на дом, для дистанционного обучения. После прохождения теста студенты присылали зашифрованные файлы с оценками. Так было некоторое время до вскрытия программы.
Поставлена задача выдавать тесты студентам на дом, для дистанционного обучения.

Ну, как видно из практики, такой подход оказался не лучшим.
Написать разработчику о проблеме. Там у них на форуме 200+ страниц обсуждения и разработчик активен.
С разработчиком переписывался. Предложил не расшифровывать ВСЕ задания и ответы к ним в памяти. Но пока решения нет. Разработчик использует одну из стандартных защит программы.
Спасибо автору за статью, разбор вполне качественный.

Предлагаю составлять задание не как тест+ответ, а как конечный автомат. Это дает возможность сделать задания со сложной логикой ответа.

Обычный тест — линеен, на вопрос выбирается один из вариантов ответа, иногда можно выбрать несколько одновременно. Это нельзя назвать хорошим подходом.

Древовидный тест позволял бы открывать дополнительные варианты по мере продвижения вглубь дерева, и выполнять «поиск в возвратами».

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

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

Если сделать процедуру расшифровывания достаточно длительной (увеличением размера ключа, например), и с зависимостью от предыдущих шагов, то расшифровывать весь пакет заданий студент будет гораздо дольше, чем если бы готовился обычным способом. Подобрав время и алгоритмы мы могли бы сделать расшифровку более длительной, чем время всех студентов потраченное на обычную подготовку, что делает атаку нецелесообразной. И это я еще не посчитал время и требуемую квалификацию на написание расшифрощика, который будет обходить конечные автоматы.
Стоит отметить, что у вас сообразительные студенты
Спасибо всем, кто откликнулся.
1. Заметьте, автор-хакер не откликнулся.
2. NeoLab. Стал противником «сообразительных» не в той области студентов.
3. Rigidus. Если бы Вы написали такую оболочку для составления тестов, то я купил бы ее, а не MyTestXPro.
4. Пока выхожу из положения генерацией из оболочки MyTestXPro «бумажных» вариантов теста, которые раздаю студентам: каждому свой вариант теста. Недостаток — проверка ответов вручную.
Как вариант — запихните его на любой VDS.
При аренде с почасовой оплатой затраты небольшие, вплоть до нулевых, на амазоне или у китайцев например.
Простите, но без погружения в тему данной программы трудно что-либо дельное посоветовать… Можно предлагать различные варианты вплоть до разработки своего защищенного решения, но это равносильно вождению вилами по воде.
Энигма не шифрует память. Я не так давно «распаковал» файлы, запакованные в enigma-контейнер, простым дампом памяти и восстановлением их из известной структуры в программе.

Хороший пример бесполезности .Net для написания шароварных программ. Все может быть легко взломано и украдено.

Скажу даже больше, что всё локальное может быть взломано и украдено, даже если оно будет написано на асме или плюсах с применением своей виртуальной машины. Это вечное противостояние защиты и атаки.
Sign up to leave a comment.

Articles

Change theme settings