|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Фффуф...
Есть предложение: разобрать конкретный пример. Ок? Создаем 2 файла, один c:\1.txt, второй c:\2.txt. В первый закидываем строку "string", во второй - "string" и один раз жмем <Enter>. И на обоих попробуй открыть их в режиме "a" и добавить строку "string_add". Результат?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Ага, а на повторном сравнении что будет?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Какая строка остается открытой?
Кстати, зачем вообще добавлять в lic-файл одну и ту же строчку ("LicenseManager_u:\\lisp\\lic\\licanse.lic")? Просто так? Она ж не меняется вообще ни в каком виде...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
CNC Регистрация: 07.07.2007
Israel
Сообщений: 302
|
Это строка 20070815 в начале я подразумевал затирать ее для того, чтобы любопытные глаза немогли понять логику работы license.lic файла, зная логику работы license.lic файла каждыиь может продливать себе лицензию сколько угодно.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
А если втупую зашифровать строку даты?
Прямое "шифрование": Код:
Для сравнения надо сделать обратную операцию: Код:
И сравнивай на здоровье. А еще можно засунуть данные в реестр, куда подальше, например, в (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\Profiles") ну или вообще в LOCAL_MACHINE (но туда запись выполнять уже только с админскими правами). Выбирать минимальную дату и сравнивать по ней. Вариантов масса, но все они не выдерживают никакой критики. Рано или поздно, кому надо, все равно сломают.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Естественно! О чем я и говорю: кому понадобится - сломают все равно. Слово "шифрование" не зря взято в кавычки в моем предыдущем высказывании
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
CNC Регистрация: 07.07.2007
Israel
Сообщений: 302
|
Цитата:
и вот результат Код:
|
|||
![]() |
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
-> Holon
Так тебе чего надо-то? Защита? Не рановато-ли? Видно, что знаний в области программирования ещё мало, а о защите - нулевые! Есть довольно много простых способов обхода гораздо более изощрённых защит. ![]() Надо сначала изучать предмет, чтобы самому потом не было смешно. Похожая кстати тема http://www.autocad.ru/cgi-bin/f1/board.cgi?t=28001gj |
|||
![]() |
|
||||
CNC Регистрация: 07.07.2007
Israel
Сообщений: 302
|
Уважаемый Евгений А. в указанном топике я ничего особенного не нашел, да
вы конечно правы я не професионал хотелось бы научится у профи как вы, чему-нибудь стоящему, если вам не тяжело представьте собственный пример решения проблемы. |
|||
![]() |
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
А я вам именно это и предложил - учиться, учиться и ... причём глобально, а не выхватывать урывками какие-то конкретные вопросы. Всегда интересно помогать, но нет желания учить! (самому ещё есть чему учиться)
А в вопросах защиты в первую очередь надо изучать методы взлома, только тогда можно понять насколько сложно сделать серьёзную защиту и насколько несерьёзна ваша идея. Мне кажется, что защитой просто глупо заниматься на вашем уровне, так как тут должна быть только проблема в методах, но никак не в реализации! |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Защитой программ (особенно компилированных), насколько мне известно, в свое время очень плотно занимался Евгений Елпанов, если не вру, его резюме было: "на лиспе написать работающую защиту практически невозможно".
Даже fas / vlx можно обратно развернуть (я уже не говорю о шифрованных лиспах). Имея наметанный глаз, прочитать код особого труда не составит, скорее всего.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
Цитата:
Цитата:
То же (условно конечно) можно сказать про защиту на любом другом языке программирования, так как всё можно представить в дизассемблированном виде и имея "намётанный глаз" в ассемблере прочитать код. Но это всё с очень большим трудом - запутать хакера в коде - это не самая сложная задача, если всерьёз этим заниматься. Но взломы програм дизассемблированием и прочим ковырянии в коде - это самый сложный способ, до которого обычно дело не доходит, так как есть более простые и быстрые методы мониторинга системы. |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
На простейшем уровне, задача состоит из 2-х частей. Первая - привязаться к аппаратной части (иначе систему защиты просто можно перенести на другую машину вместе со всеми её "замками") и вторая - предотвращение подделки ключа (возможно ограниченного по времени действия).
Первая задача решается (более или менее пристойно) путям привязки к уникальным ключам в реестре (это отдельная тема, так что пример будет на первом ключе из реестра моей машины, который пришёл на ум). Вторая задача решается шифрованием даты (в каком либо её представлении) уникальным ключом, как раз тем, что извлечён из реестра (например). В самом простом демоварианте это может выглядеть так: Код:
![]() Функция: (demo:KEYer) сверит текущую дату с записаной в файле и выдаст сообщение об успехе или неудаче. * Код написан очень спешно и почти без проверок - это только ДЕМО. |
|||
![]() |
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
->Alaspher
Ломается, к сожалению, банально - удаляем файл с ключём "C:\\Test\\license.dat" (а в идеале вообще все записи которые делает программа - реестр, файлы, сектора на диске) и теперь программа думает что её запускают впервый раз и она тупо создаёт заново этот файл с текущей временной меткой. Когда время выйдет - повторяем процедуру. Можно написать патчик, который будет когда надо сам всё удалять! |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
> Евгений А.
Это простейшее ДЕМО (но даже оно не ломается описанным способом ![]() |
|||
![]() |
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
Так конечно красивее, но тогда просто отматываю дату на момент получения временной метки от Вас, и если надо удаляю все метки которые делает программа, чтобы это предотвратить. Вот и всё. Почти на каждое действие уже давно есть противодействие...
Я не хочу показать что всё ломается легко, а лишь хочу показать, что защита - это творческий процесс, даже наверное война с хакером, которого можно победить только хитростью. А для этого надо сначала изучить его возможности. |
|||
![]() |