| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Firebird, Interbase > Можно ли разместить в gdb файле приватную инф-цию |
| Автор: Delphist 24.10.2007, 09:17 |
| Можно ли в gdb файле разместить информацию, которая была бы не видна стандартными средствами, например, IBExpert'ом. Просто необходимо различать db_demo и db-release, чтобы пользователь немог их подменять. Одна идея есть, но она мне не очень нравится - это через хранимую процедуру откомпилить ее и удалить ее исходник. Может, посоветует что получше. У меня Firebird 2.0 |
| Автор: Deniz 24.10.2007, 09:30 |
| Delphist, вопрос про метаданные или сами данные? |
| Автор: Delphist 24.10.2007, 09:37 |
Неважно что, главное, чтобы была возможность различать db_demo и db-release, чтобы пользователь немог их подменять, т.е. у клиента ест demo-версия программы c db_demo, а он берет и подсовывает db_release, вот и надо как-то невидимо для пользователя идентифицировать БД, т.е. хранить идентификатор БД-Demo и БД-Release. |
| Автор: pompei 24.10.2007, 10:32 |
| Я сравню метаданные своей демо с чьей-то рилизом, и как раз получу то, что нужно сделать с моей демой, чтобы она стала рилизом. Поэтому попыткайтесь сменить политику безопасности, например, лицензирование. Огорчу Вас заранее, если хороший кракер захочет кракнуть, то он кракнет, чего бы Вы не сделали со своей программой. Потому что небыло в истории ещё ни одной десктопной программы, которую бы ещё не кракнули! |
| Автор: Deniz 24.10.2007, 14:52 |
| Delphist, т.е. если я правильно понял, нужно послать какой-то запрос к БД, и определить что это за БД? В таком случае защиты наверное нет. Объясни, чем должны отличаться db_demo и db-release, именно по функциям, т.е. какие ограничения или еще чего должны быть в db_demo. |
| Автор: Sansa 25.10.2007, 10:24 |
| Если он не владеет правами sysdba попробуй в разных версиях создать разных пользователей. Изменить он их не сможет, соответственно, выборкой из таблицы users можно будет узнать что за версия |
| Автор: Delphist 25.10.2007, 10:33 | ||
У меня нет разделение на пользователей, и используется SYSDBA |
| Автор: Deniz 26.10.2007, 05:24 |
| Delphist, таки расскажи подробнее что хочешь получить. Что-то подсказывает, что нужно еще в клиенте что-то сделать. |
| Автор: Sansa 26.10.2007, 11:56 |
| Delphist, так убери sysdba. Сделай пользователя, который владеет ПОЧТИ всем. И через него работай |
| Автор: Akella 1.11.2007, 10:20 |
| советую такую проверку сделать не в базе а в самой программе, с пом. DEFINE |
| Автор: Delphist 1.11.2007, 16:13 | ||
и каким же образом |
| Автор: Sansa 1.11.2007, 16:34 |
| Мне это напоминает ситуацию, когда отдаешь пароль для root, а потом пытаешься что то ограничить... |
| Автор: Akella 5.11.2007, 17:00 | ||||||||
создаём текстовый файл, например с именем _define.inc в нём:
далее в программе
При создании, скажем, главной формы:
вот ещё пример файла описаний: точка - это типа закомментировано
Добавлено @ 17:10 Если в этом месте меняешь подключаемый файл implementation uses uDM, .....; //{$I _define.inc} //было так {$I _kiev_irina.inc} //теперь так //{$I _stolica.inc} //{$I _npk_moscow.inc} то обязательно нужно перекомпилировать проект (Build) |
| Автор: Akella 5.11.2007, 17:15 | ||
| теперь в любом модуле, используя функцию function IsDemoBool():Boolean; можно:
|
| Автор: Akella 5.11.2007, 17:55 | ||
В вьюхах это тоже можно сделать, хоть минимальный, но ограничения, не каждый взломщик, знающий ASM, знает ещё и FB SQL
Добавлено через 1 минуту и 43 секунды вообще-то надо было тебе задать вопрос в технологиях защиты тоже |
| Автор: VOS 14.11.2007, 17:09 |
| Если я правильно понял условие: 1) Есть *.gdb (release) и *.gdb(demo), а exe модуль один и тот же. 2) Этот модуль должен по-разному работать в зависимости от БД. 3) У юзера есть и тот и другой *.gdb (release он у друга скопировал). При таких раскладах он всегда может просто заменить один *.gdb на другой. И зачем ему копаться во всяких metadata и т.д.? |
| Автор: tishaishii 16.11.2007, 16:56 |
| А почему не нравится вариант с компиляцией UDF? Я написал UDF, запхал туда побольше хранимых процедуры для ускорения работы. При первой загрузке UDF определяет параметры компа и ставлю переменную типа BOOLEAN в соответствующее состояние. Если они не сходятся с параметрами целевого компа, выполняю halt и FB вылетает. Теперь, при попытке использования какой-нибудь UDF проверяется состояние галочки, если FALSE - сразу halt. Параметры целевого компа удобно хранить в результате необратимой функции типа SHA1. Потом ещё перед поставкой программы, я dll-ку с UDF-ами пакую upx-ом. Таким образом усложняю работу "не-лохов" как могу. Можно перед всем ещё каким-нибудь оптимизатором пройтись. |
| Автор: Akella 16.11.2007, 18:14 |
а если у пользователя под FB запущена другая программа........... |
| Автор: tishaishii 16.11.2007, 18:23 |
| Всё равно halt даёт вылет. Ну в любом случае, если не нравится halt, можно выдавать NULL вместо информации или анекдоты какие-нибудь. |