Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2009, 17:20   #31
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Сообщение от DarkEvil Посмотреть сообщение
{...}
Почти так. Пока программа находится в стадии разработки НИКТО полной версии не получит (что логично). Флешка в данной ситуации - носитель закрытой, зашифрованной информации. Что-бы понять основную идею, расскажу маленькую притчу:
"У одного человека было очень дорогое фото-видео оборудование. Он зарабатывал большие деньги, потому, чтополучал снимки необычайной четкости и все прочее. Захотели такого человека обокрасть воры. Они забрались к нему в дом, но так, как денег он дома не держал - они забрали оборудование. Но не умея им пользоваться, они не могли продемонстрировать перекупщику, что оно работает. Они с повинными головами вернули оборудование владельцу, на что он даже не заявил на них."
Так вот я представляю почти такую же ситуацию. Компьютер могут взломать по интернету. Обычную программу погут крякнуть. А если украдут зашифрованную флешку - они просто не смогут её воспользоваться.
Я бы вел разработку на отрезанном от всего мира ноутбуке, но к сожалению его у меня пока нет.
P.S. Ситуация в притче действительно имело место в жизни.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 21.09.2009, 17:27   #32
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Тогда возникает второй вопрос.
а обезательно ли носить на флешке ссобой исходники?
хотя если их запхать в контейнер программы TrueCrypt то я очень сомневаюсь что "доморощеные" хакеры розшифруют контейнер
По вопросу защиты, я бы зделал привязку не до флешки, и вообще немного не так, я бы дал заказчику полнофункциональную программу с ограничениям по времени 10 минут работы за одну сесию в винде, а проверки реализовал бы закриптоваными функциями

З.Ы. Большой плюс криптованых функций в том что дизасамблеры такого не поймут да и не все отладчики, а если человек не особо в этом розбирающийся то не помогут и отладчики и дизасамблеры
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!

Последний раз редактировалось DarkEvil; 21.09.2009 в 17:30.
DarkEvil вне форума Ответить с цитированием
Старый 21.09.2009, 17:31   #33
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Цитата:
Я бы вел разработку на отрезанном от всего мира ноутбуке
Сорри за оффтоп, но вы что там, новую операционку делаете ? Такая секретность...
k1r1ch вне форума Ответить с цитированием
Старый 21.09.2009, 17:37   #34
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Ну собственно иногда лучше секретность так как лично меня заказчики пару раз кидали, и я заучил на будущее лучше никогда не давать такой возможности

Цитата:
Сообщение от k1r1ch Посмотреть сообщение
Сорри за оффтоп, но вы что там, новую операционку делаете ? Такая секретность...
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!
DarkEvil вне форума Ответить с цитированием
Старый 21.09.2009, 17:38   #35
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

>>>Сорри за оффтоп, но вы что там, новую операционку делаете
Я надеюсь (если у меня хватит сил не бросить проект), что Вы и все остальные люди скоро узнают, а я скажу "оно живое! живое!".:-)

Цитата:
я бы дал заказчику полнофункциональную программу с ограничениям по времени 10 минут работы за одну сесию в винде, а проверки реализовал бы закриптоваными функциями
Если дать заказчику полный набор файлов, то ничего не будет стоить сделать из демонстрационной версии полную. Если у него не будет всех файлов и не будет доступа к ним - вариант такого взлома отпадает.
Цитата:
а если человек не особо в этом розбирающийся то не помогут и отладчики и дизасамблеры
А где вы видели не особо разбирающегося человека, запускающего диссассеблер?
Цитата:
Имею опыт взлома прог обеспечиния
Когда проект будет в средней стадии - отошлю Вам кусочек, не возражаете?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 21.09.2009, 17:44   #36
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Цитата:
Когда проект будет в средней стадии - отошлю Вам кусочек, не возражаете?
Не против
Цитата:
А где вы видели не особо разбирающегося человека, запускающего диссассеблер?
Видел я таким раньше был
Цитата:
Если дать заказчику полный набор файлов, то ничего не будет стоить сделать из демонстрационной версии полную.
Не согласен. За взлом тоже люди платят, и если вы не залупите мега цену то тут проблем не должно быть
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!
DarkEvil вне форума Ответить с цитированием
Старый 21.09.2009, 21:55   #37
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Кажется задача из первоначального вопроса ушла в сторону.

Я конечно не разбираюсь в криптографии и знаю ее как и другие страшные слова - ушу. карате, тхэквондо, каракатица и пингвин.
Но, кажется смысл есть.
Хотя. честно я не понял, что значит закриптованная функция???
Я правильно понимаю, что она каким-то образом зашифрованна и в процессе запуска сама программа принимает решения - о распаковке в память данной функции????

Но, также из опыта я знаю 100% программной защиты не может быть только лишь из одной Аксиомы
"Если один человек что-то сделал, то другой это обязательно поймет"
Единственно ,чем можно затруднить понимание - это применение множественной защиты и нетривиальные способы таковой.

Возможно за криптографией в данном случае весомое слово.

И все-таки мне кажется идея, если играть ее с флэшкой - определение размера - это прикольно.

Можно ввести временные файлы. Срок действия котороых по принципу клчюей Касперского.
Допустим 2-3 дня и при этом в этом же файле по особому алгоритму хранить время запуска и работы.
Да этот файл явно будет вместе с программой. но его сложная структура и какой-нибудь алгоритм записи времени по псевдослучайным числам.
Затруднит взлом. А за одно у вас будет средство контроля запусков.
Так же туда можно засунуть для каждого конкреного пользователя возможность использования тех или иных ДЛЛ.
Кстати - в этот файл методом того же шифрования можно засунуть используемые библиотеки и по особому условию их оттуда доставать.

Но как-то так эту идею обработать.

При этом время можно хранить в 4-х разным местах для 3 - х дат.
При этом 4-е место будет определять куда писать следующую дату.
Чтобы сложно было установить закономерность изменения байт данного файла. Запись можно вести также согласно некоторого алгоритма....
То есть 4-е место будет вычисляться и каждый раз иметь разное смещение относительно начала файла
и это пройдет...
grenles вне форума Ответить с цитированием
Старый 21.09.2009, 21:58   #38
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

То есть получается программа хранится в виде

Расшифровщик
Зашифрованный код.

Далее после запуска - проверка данных и расшифровщик в памяти начинает код извлекать.
Сложно, но кажется реализуемо.
То есть, чтобы сломать надо или Дамп памяти делать, или анализировать расшифровщик....
и это пройдет...
grenles вне форума Ответить с цитированием
Старый 22.09.2009, 07:26   #39
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Расшифровщик
Зашифрованный код.
Такой вариант, наверное, отметается, т.к. пользователю ничего не будет стоить запустить расшифровщик вручную. И что-бы не было ситуации, как в NefoSoft - они ехе файл переименовали в тмп и просто поставили аттрибут "скрытый".
А если поставить динамическуй расшифровку? Т.е. неиспользуемые в данный момент файлы не будут расшифровываться и храниться в памяти. А те, которые нужны в данный момент (ну, например, файлы интерфейса) будут расшифровываться именно перед загрузкой в память.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 22.09.2009, 11:40   #40
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Вот и я же о том, функции которые выполняют проверку должны быть зашифрованые и розшифровуватся только во время проверки + проверка не должна быть реализована на самом в самом старте программы, я ее запускал бы рандомно по времени

Ща посмотрю хистори и попытаюсь найти ссылки по теме

З.Ы. а вобще реализация защиты это творческий процесс

вот нашол некий пример

Код:
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Шифрование исполняемого файла

В данном примере реализована процедура шифрования и расшифрования
одной только процедуры "вывода сообщения".Процедура изночально
не зашифровано ,что ни есть хорошо.Для того что бы процедура была
при запуске программы уже зашифрована надо написать внешнюю программку,
которая ба сканировала ехе-шник и находила определенные метки
(начальную и конечную) и шифровала бы всё между ними.Таким образом
вы получите готовый ехе-шник с уже зашифрованой(зашифроваными)процедурой.

Для того чтоб некоторым умным людям (crackers)жить было не легко,
после расшифровки и выполнения процедуры можно её опять зашифровать.

Более потробную информацию читайте в статье на «Королевства Delphi»
http://delphi.vitpc.com/mastering/safe/safe.htm

Там же читайте Открытый проект "Анти крэковые мучения"
http://delphi.vitpc.com/mastering/safe/index.htm

Зависимости: Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,Dialogs, StdCtrls;
Автор:       DDA, Vologda
Copyright:   «Королевства Delphi» Защита от несанкционированного
использования программ, написанных на Delphi
Дата:        3 марта 2004 г.
***************************************************** }

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure metka1;
//Начальная метка - нужна что бы находить потом в exe файле эти символы и знать
//откуда начинать шифровать
//Здесь метка представляет из себя десятичные числа от 0 до 256 через запятые
//Если метка 50,60,70,80,90 то это соответствует символам 2<FPZ
//Кстати, такого кол-во символов в метке может быть мало и лучше использовать больше
//Т.к если программа большая то такие последовательности могут встретиться не один раз
begin
  asm
    DB 50,60,70,80,90 //2<FPZ это метка начальная
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  beep;
  ShowMessage('Период использования программы истёк!');
end;

procedure metka2;
//Конечная метка - нужна чтобы знать до куда нужно шифровать в файле и
//докуда расшифровывать в памяти
begin
  asm
    DB 68,68,67,45,61 //DDA-= это метка конечная
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
//Процедура Расшифрования(В даном примере и зашифрования)
var
  ptrAddr: Pointer; {для Адреса процедуры вывода сообщения}
  dwOldProtect: DWORD;
begin
  ptrAddr := @TForm1.Button1Click; //Получаем адрес процедуры вывода сообщения
  VirtualProtect(@TForm1.Button1Click, 2048, PAGE_READWRITE, @dwOldProtect);
  //2048 это размер в байтах с которыми можно работать(по моему)
  //Если процедура большая то нужно подбирать соответствующий размер
  while ptrAddr <> @metka2 do
    //шифрование(слабое) выполняем пока не дойдем то конечной метки
  begin
    Byte(ptrAddr^) := Byte(ptrAddr^) xor $41;
    //каждый байт в памяти ксорится с кодом 65'A'(к примеру)
    //Используйте более надёжные алгоритмы шифрования
    inc(Integer(ptrAddr));
  end;

  exit; //нужно так сделать что б компилятор включил эти процедуры
  metka1; //в код,т.к Delphi не вставляет в результирующий код процедуры,
  metka2; //которые никогда не используются
end;

//Такое шифрование взято для примера и не рекомендуется для использования серьёзной защиты
//Также рекомендуется использовать и проверочную контрольную сумму для проверки
//целостности кода программы.
//Теперь осталось только сделать отдельную программу которая искала бы
//в этом exe файле начальную и конечную метки и шифровало бы всё между ними
//Но для демонстрации можно посмотреть результат и сейчас
//Запустите программу и нажмите на кнопку 1 -Должно вывестись сообщение и звук.сигнал
//А если нажать на кнопку 2 - то прцедура нажатия на кнопку 1 зашифруется
//И если после этого нажать на кнопку 1 -то должно произойти что-то не предсказуемое
//т.к процедура зашифрованна и что-то нормального вы не увидите.

//Источник информации: CopyRight «Королевства Delphi»
//"Защита от несанкционированного использования программ, написанных на Delphi"

end.
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!

Последний раз редактировалось Stilet; 22.09.2009 в 13:08.
DarkEvil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как записать максимальный ключ из таблицы в мемо? REztor Помощь студентам 0 12.04.2009 14:41
Как проверить сущ. ли ключ в реестре?(делфи) zotox Помощь студентам 1 05.04.2009 15:00
Как определить вставлен ли hasp-ключ? И по возможности его идентификатор Д'якон Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 21.11.2008 20:02
Флешка оределяется как неизвестное Usb устройство Иллидан Безопасность, Шифрование 9 08.03.2008 22:47
Флешка delphin100 Операционные системы общие вопросы 10 08.01.2008 20:03