Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизЗащита приложения баз данных Найти похожие ветки
← →
Денисыч (2004-08-29 02:03) [0]Добрый день.
Хотел узнать , кто как защищает свои приложения.
Глупо написать какую-то общую базу данных ( Delphi + База данных ) и не поставить привязку к данному компу. Т.е. кто
угодно сможет воспользоваться твоим трудом.
Я сделал так : привязал к серийнику винта + к системе , а всю
эту инфу храню в закодированном виде в файле. (стандартно - ничего особого я не придумывал)
Все бы ничего , да вот в ЕХЕ - шнике при дизассемблировании даже я смогу обойти вызов функции проверки или выход с приложения. Что делать ? Порекомендуйте хорошую литературу, личный опыт , FAQ по безопасности и т. д.
С уважением , Денисыч
← →
DiamondShark © (2004-08-29 11:15) [1]Защита имеет смысл только если затраты на систему защиты не превышают затрат на приложение.
← →
Денисыч (2004-08-29 14:58) [2]Это понятно , а вот конкретнее
← →
Vemer © (2004-08-29 18:03) [3]Кейгенератором беру Volume_ID + Volume_Size, делаю из них хэш-винегрет, пишу в текстовый файл через IntToHex. На запуске проги проверяю соответствие. Мой заказчик сам сильно заинтересован в защите БД, поэтому кейгенератор у него.
Базу данных (IB/FB) защищаю так:
http://delphibase.endimus.com/?action=addfunc&topic=baseIB
← →
VID © (2004-08-29 22:21) [4]Vemer © (29.08.04 18:03) [3]
ну нифига себе линк ты дал... добавление функции в разделе Interbase :)
← →
Vemer © (2004-08-30 00:22) [5]Вот правильный линк.. Из 2-х функций выбор небольшой :).
http://delphibase.endimus.com/?action=viewtopic&topic=baseIB
← →
Карелин Артем © (2004-08-30 09:50) [6]Я беру несколько номеров из оборудования, делаю хэш из них, который надо сообщить мне.
На основе этого ключа хэшированием делается другой ключ, который надо ввести в программе.
На основе этих двух ключей получается путем хэширования третий ключ (ключ ответа), который будет паролем для расшифровки некоторых данных, без которых программа не запустится. Для повышения криптостойкости программы эти данные еще и сжаты.
Ну и выбор метода хэширования с методом раскодирования идет динамически, никаких проверок на правильность введенных данных нет, закриптованные данные фактически являются частью программы. Всего около 200 000 ассемблерных инструкций между получением ключа ответа и нормальной работы программы.
Чтобы всякие DeDe не помогали исследовать, есть всякие ухищрения типа отлинковки форм, изменения DPR-файла и т.д.
← →
Денисыч (2004-08-30 22:50) [7]
> Vemer
> Карелин Артем
Спасибо.
> Чтобы всякие DeDe не помогали исследовать, есть всякие ухищрения
> типа отлинковки форм, изменения DPR-файла и т.д.
Я делал так : между инструкциями идетификации помещал пару инструкций инициализации , т.е при удалении блока кода приложение работать не будет. Это типа такого или нет ?
Если нет , то где ты это вычитал - книга , ссылка и т.д.
← →
3APA3A © (2004-08-30 23:32) [8]Хм.. можно еще *.exe чем нибудь типа ASPack"а сжать - это сильно затруднит жизнь любителям дизассемблирования...
← →
Карелин Артем © (2004-08-31 08:18) [9]Денисыч (30.08.04 22:50) [7]
Процедуры идентификации нет как таковой. Есть процедура расшифровки формы на основе введенных ключей.
Если форма в проект не прилинкована, DeDe не показывает методы формы.
В инете есть всякие статьи, но обычно они немного туповаты, как пресловутый AKM на
Если насильно заставить выводить формы на экран типа как в следующем кодеApplication.Initialize;
Form12:=TForm12.Create(Application);
Form12.ShowModal;
Application.Run;
некоторым исследовательским программам сносит башню. Одна из версий DeDe давала AV на нем.
Насчет всяких паковщиков: есть на них распаковщики, так что после упаковки надо еще на них напускать утиль, который меняет код программы чтобы труднее было распаковать. Распаковать опытный человек может очень быстро.
← →
Денисыч (2004-09-02 00:28) [10]DeDe - это конечно замечательно и сильно , но есть и другие дизассемблировщики. Я имею ввиду последовательность ходов для
хорошей защиты.
> Всего около 200 000 ассемблерных инструкций между получением
> ключа ответа и нормальной работы программы.
А ключ ответа все равно с чем-то сравнивается.
Т.е. всегда есть место типа
if myKey <> RightKey then { Приложение вырубается }
> закриптованные данные фактически являются частью программы.
>
В них хранятся перременные или кусок самой проги (команды) ?
Если кусок проги , то как это вообще возможно ?
Про это , если можно , поподробнее.
И все- таки , какая есть литература по этому ?
Заранее спасибо за инфу.
Можете писать на мыло c_den@mail.ru
← →
Карелин Артем © (2004-09-02 10:55) [11]>>if myKey <> RightKey then { Приложение вырубается }
Нету конечно такого. Самый простой способ: закриптовать форму, поместить ее в код и раскриптовывать. Если хэш от ключей правильный (раскриптованы данные правильно) форма может быть создана, если нет - будет исключительная ситуация.
Насчет этого можно почитать на Королевстве Дельфи в разделе АКМ. Хотя любой дурак догадается, что длинные последовательности команд типа DB в дизассемблированном коде должны быть обьектом пристального внимания. И изготовление класса с публично видимым методом раскриптовки в статьях про прятки форм является очень нехорошим приемом.
Есть желание общаться по данной теме - ICQ 3030315.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.087 c