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

Щит и меч

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

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


Для привязки используется принцип активации:

1. Заплатив деньги, пользователь получает регистрационный код.

2. После ввода кода в программу генерируется ключ на основе каких-то вычислений с регистрационным кодом и номером винта, процессора или другой железки, которую ты можешь определить.

3. Ключ должен быть выслан тебе - на основе него ты сделаешь ключ активации.

4. Ключ активации вводится в программу.

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

Улучшения

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

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

Итог

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

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

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

Листинг. Первый этап проверки кода

var

TempString:String;

t, z: Real;

begin

TempString:='';

if not InputQuery('Регистрация', 'Введи регистрационный код', TempString) then exit;

if t> 1000000 then Close;

z:=Length(TempString)-1+25-20;

//Проверяем первую часть

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