Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Где в реестре (ветка) прописать параметр (триального периода) ? [D7, XP]


Страницы:   1 2 3

Stepper ©   (2008-01-04 16:36:00) 

Собственно Сабж! И корректно ли сея реализация ограничений?


@!!ex   (2008-01-06 08:31:00) [1]

> [38] Reindeer Moss Eater ©   (05.01.08 22:24)

LOL. И как же вы узнаете верные данные?
Это уже должен быть не тривиальный уровень владения дизасемблером и знание ассемблера на высоком уровне.
Иначе как узнать, какой адрес должен получиться в результате...

Мне кажется вы бредите.... У вас все элементарно, но КАК вы не объясняете..
Да и своего варианта защиты не предлагаете.


Германн   (2008-01-06 01:34:00) [2]

Раз уж пошла такая пьянка, вспомню мою любимую контору Turbo Power Software. У них была библиотека OnGard, которая:
OnGuard is a library to create demo versions of your Borland Delphi &
C++Builder applications. Ccreate demo versions that are time-limited,
feature-limited, limited to a certain number of uses, or limited to a
certain # of concurrent network users.

Поскольку сейчас она доступна с исходниками, то тот кто желает реализовать что-то подобное, может кое-что почерпнуть из этих исходников.


Reindeer Moss Eater   (2008-01-06 01:12:00) [3]

Элементарно, и взламывать заколебешься...

Запятая не там стоит.
:)


{RASkov}   (2008-01-05 23:10:00) [4]

> Эта чепуха лечится подкладыванием верных данных в реестр/файл.

А что, в наше время, не возможно сломать? Как говорится - ломать не делать)
:)


Reindeer Moss Eater   (2008-01-05 22:24:00) [5]

Эта чепуха лечится подкладыванием верных данных в реестр/файл.


@!!ex   (2008-01-05 18:32:00) [6]

Procedure MainInit; //Инициализирует важные параметры системы... Например, создает контролы... Соответственно если эту процедуру не вызвать, приложение просто упадет. Мы знаем, по какому адресу находится эта процедура.

var
 linkMainInit: procedure();

var
 A,B,C,D:byte;  //Четыре значения, полученные после дешифровки ключа.
begin
 linkMainInit:=Pointer(A*1000+B-100+C*10+D);  //Если ключ правильный, мы получаем адрес процедуры, если не правильный, получаем AV.
 linkMainInit;
end;


Никаких ифов... Элементарно, и взламывать заколебешься...


@!!ex   (2008-01-05 17:39:00) [7]

> Как её ни шифруй, а в итоге все сведется к одному единственному
> ифу, который запатчить пара пустяков.

Это вам так кажется.


Riply   (2008-01-05 17:30:00) [8]

>  [32] Anatoly Podgoretsky ©   (05.01.08 12:13)

Аксиома 5 - самая главная (imho) и заслуживает быть первой :)


TStas   (2008-01-05 16:46:00) [9]

Можно делать без ключей в реестре. Например, где-то в чужой папке написать файл с данными. Только вот с трудом верится, что кому-то нужна прога с подобным качеством.


Anatoly Podgoretsky   (2008-01-05 12:15:00) [10]

> Stepper  (04.01.2008 17:46:07)  [7]

Совет простой, устанавливай сам, тогда есть возможность защититься от мониторов.


Anatoly Podgoretsky   (2008-01-05 12:13:00) [11]

> Stepper  (04.01.2008 17:46:07)  [7]

Для начала пара аксиом

1. От триала защиты не существует.
2. Нет таких секретных мест в компьютере, которые не были бы доступны пользователю
3. Пользователю не надо ломать голову и искать куда ты записал, он просто воспользуется парой мониторов - файла и реестра.
4. В подобных случая вопрос возникает только у начинающих.
5. Аксиома 5 - не тебе надо защищаться, а пользователю
6. Пользователя надо любить и платить ему, чтобы он поставил твою программу, с такими сомнительными вещами.


{RASkov}   (2008-01-05 10:31:00) [12]

> Но проверку лучше оставь свою.... т.е. по существованию ключа....

А лучше вообще чего-нибудь придумай пооригинальнее..... иначе срок триала(кряк) будет решен путем удаления данного ключа)


{RASkov}   (2008-01-05 10:21:00) [13]

> FReg.ReadBinaryData('Bin', N, SizeOf(N));
> if N=0 then N:=30 else DEC(N);

Перед чтением явно N прировняй к 0 (нулю)

Но проверку лучше оставь свою.... т.е. по существованию ключа.... иначе когда счетчик дойдет до ноля, то следующий старт будет опять с 30 :)


{RASkov}   (2008-01-05 10:18:00) [14]

> [28] Stepper   (05.01.08 09:54)
> n := ReadBinaryData('key', n, 1) -1;

А вот почитать бы сначала справочку, а?)

var FReg: TRegistry; N: Integer;
begin
 FReg:=TRegistry.Create;
 FReg.OpenKey('Software\MyKey', True);
 FReg.ReadBinaryData('Bin', N, SizeOf(N));
 if N=0 then N:=30 else DEC(N);
 FReg.WriteBinaryData('Bin', N, SizeOf(N));
 FReg.CloseKey;
 FReg.Free;
 Caption:=IntToStr(N);
end;


Stepper   (2008-01-05 09:54:00) [15]

Пишет но не вычитает!
...
var
reg: tregistry;
n: integer;
begin
reg := tregistry.create;
with reg do
begin
  openkey('Software', true);
  openkey('StepSoft', true);
  if valueexists('key') then // первый запуск?
  begin // - нет
    n := ReadBinaryData('key', n, 1) -1;
    if n >= 0 then
      ReadBinaryData('key', n, 1)
  end else begin // - да, первый запуск
    n := 10; // число запусков
    ReadBinaryData('key', n, 1)
  end;
  free
end;
if n > 0 then
...


Stepper   (2008-01-05 07:15:00) [16]


> {RASkov} ©   (04.01.08 23:59) [24]


WriteBinary - не пролазиет :(


Reindeer Moss Eater   (2008-01-05 00:18:00) [17]

Никто не кинется.
В таком случае не пофик ли куда писать и как шифровать?
:)


Stepper   (2008-01-05 00:14:00) [18]


> {RASkov} ©   (04.01.08 23:59) [24]


Нет программа простенькая, но использует не плохой алгоритм преобразования (редких) данных! вот и решил я просто триальчик прикрутить и себя поразвивать!

Не кто ни куды не кинется, кому енто надо? :)))


{RASkov}   (2008-01-04 23:59:00) [19]

> [22] Stepper   (04.01.08 23:22)
> Как зашифровать переменную n (10)

Хотя бы пиши ее не строкой (WriteInteger пишет строкой), а бинарно....

Не обращай внимания на отговорщиков [23] :) Или у тебя такая уж серьезная программа, что все кинуться ее ломать???


Reindeer Moss Eater   (2008-01-04 23:48:00) [20]

Как зашифровать переменную

Как её ни шифруй, а в итоге все сведется к одному единственному ифу, который запатчить пара пустяков. Не говоря уже о банальном удалении ключа - флага первого запуска.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо