Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #70, ОКТЯБРЬ 2004 г.

Щит и меч

Фленов Михаил

Хакер, номер #070, стр. 070-118-3


Игры закончились

В середине проверок, после того как мы убедились, что регистрационный код нас устраивает, можно сохранить его прямо в реестре. Сейчас это не столь важно. Хакер, конечно же, увидит запись в реестре и возрадуется. Он еще не знает, что радоваться ему рано ;). Вычислив шаблон среди бесполезных расчетов и написав генератор, в котором крайние значения фиксированы, а середина генерируется случайным образом, он успокоится и тут же выложит кряк для всеобщего пользования. Чтобы его уверенность была крепче, после выполнения всех описанных выше проверок нужно обязательно вывести сообщение об удачной регистрации. Как ты уже догадался, первый этап проверки создавался только для отвода глаз, и хакеры его быстро найдут по этому сообщению.

Второй этап

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

Второй этап проверки кода

Index:=0;

// В RegCod хранится регистрационный код

for i:=1 to Length(RegCod) do

index:=index+ StrToIntDef(RegCod[index], 0)

if index<> 0 then

begin

Application.MessageBox(«Ошибка в программе №123, обратитесь к разработчику», «Ошибка», MB_OK);

// terminate3 – очередной выход из программы, который не

// должен вызываться на первом этапе проверки

terminate3;

end;

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

Контрольный выстрел

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

Прежде чем выкладывать готовую программу на сайт, советую сжать исполняемый файл такими архиваторами, как ASPack или PEPack. Это остановит большую часть хакеров, особенно начинающих и тунеядцев. Продвинутого перца ничего не остановит, и он найдет, как разархивировать программу. Благо продвинутых не так много, и они очень редко занимаются шароварами. Великие умы взламывают Windows, 3DStudio Max и т.д., где защита более интересная и соответствует их знаниям и умениям.

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

Назад на стр. 070-118-2  Содержание  Вперед на стр. 070-118-4