Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-1094166069
fif
2004-09-03 03:01
2004.10.03
базы данных database в сети


3-1094179381
_sulent
2004-09-03 06:43
2004.10.03
MS SQL 2005


14-1095069018
Scalder
2004-09-13 13:50
2004.10.03
Общие вопросы по Delphi


4-1092836312
R1
2004-08-18 17:38
2004.10.03
Диалог свойств файла (ShellExecuteEx)


3-1094369250
3APA3A
2004-09-05 11:27
2004.10.03
Изменение домена





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский