Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.03;
Скачать: [xml.tar.bz2];

Вниз

Где в реестре (ветка) прописать параметр (триального периода) ?   Найти похожие ветки 

 
Stepper   (2008-01-04 16:36) [0]

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


 
engine ©   (2008-01-04 16:40) [1]

HKLM/Software/MySuperProga/TrialDate


 
Anatoly Podgoretsky ©   (2008-01-04 16:49) [2]

> Stepper  (04.01.2008 16:36:00)  [0]

Любая ветка


 
Stepper   (2008-01-04 17:11) [3]


> Anatoly Podgoretsky ©   (04.01.08 16:49) [2]


И корректна ли сея реализация ограничений?


 
Iskander ©   (2008-01-04 17:18) [4]

HKLM/Software/MySuperProga/TrialDate
Этой веткой сможет пользоваться (на редактирование) только админ компа. Обычных юзерей такие ограничения достают сильно


 
Stepper   (2008-01-04 17:35) [5]


> Iskander ©   (04.01.08 17:18) [4]


и....


 
{RASkov} ©   (2008-01-04 17:37) [6]

> [5] Stepper   (04.01.08 17:35)
> и....

А подумать?
Здесь есть несколько вариантов продолжения "и...." :)


 
Stepper   (2008-01-04 17:46) [7]


> {RASkov} ©   (04.01.08 17:37) [6]


Сарказм тут не уместен! Я могу хоть всю ветку ключами закидать а суть и последствия? Я совета прошу и напутствия на нужную волну а не ... Сорри за ИМХО!


 
{RASkov} ©   (2008-01-04 17:55) [8]

> [7] Stepper   (04.01.08 17:46)
> Сарказм тут не уместен!

Нисколько....и никакого.

> Я могу хоть всю ветку ключами закидать а суть и последствия?

Твое право..... но и твой минус.

> Я совета прошу и напутствия на нужную волну а не ...

Понимаешь.... посоветовать-то тут уже посоветовали..... осталось подумать....
Более того вариантов решения сабжа - море.....
Ты вопросы конкретнее задавай.... и не обижайся :)


 
Stepper   (2008-01-04 17:59) [9]


> {RASkov} ©   (04.01.08 17:55) [8]


Не в коей мере ;) Я и сам знаю что вариантофф море! но лютьшее не сорить в реестре а тайно скрыть свой ключеГГ :))) Спс за советы!


 
{RASkov} ©   (2008-01-04 18:11) [10]

> [9] Stepper   (04.01.08 17:59)

И не обязательно скрывать, можно применить примитивный вариант шифрования, или хранить не в текстовом виде...
Поверь.... кому надо, они что хочешь найдут и расшифруют..... так, что не парься на этот счет
.... А 80% пользователей (а может и больше) это не смогут сделать :)


 
Stepper   (2008-01-04 18:22) [11]


> {RASkov} ©   (04.01.08 18:11) [10]


...можно применить примитивный вариант шифрования, или хранить не в текстовом виде


А вот тут поподробнее! Что и как?


 
engine ©   (2008-01-04 18:23) [12]

> [11] Stepper   (04.01.08 18:22)

xor


 
Kolan ©   (2008-01-04 18:24) [13]

> Что и как?

Что что ключь свой, xor"ом зашифруй и радуйся :)


 
{RASkov} ©   (2008-01-04 18:36) [14]

> [11] Stepper   (04.01.08 18:22)

Просто небольшой наглядный пример:
var F: File; Dt: TDate;
begin
 AssignFile(F, "File.Dat");
 Rewrite(F, 1);
 Dt:=Date;
 BlockWrite(F, Dt, 8);
 CloseFile(F);
 Dt:=0;
 Reset(F,1);
 BlockRead(F, Dt, 8);
 ShowMessage(DateToStr(Dt));
 CloseFile(F);
end;
А теперь глянь, что у тебя в файле File.Dat - вот скажи, ты вот разберешься? :)
А если еще и подвергнуть Dt шифрованию перед записью..... вообще туши свет будет :) или вместе с Dt хранить еще чего нибудь, например:
type TTrialData = record
     Dt: TDate;
     RunCount: Integer;
    end;
и все это записать
Rewrite(F, 1);
BlockWrite(F, Dt, SizeOf(TTrialData));
//где Dt: TTrialData;
Можно не обязательно хранить в реестре, хотя и там есть бинарный тип.... а можно в файле, как в данном примере....


 
{RASkov} ©   (2008-01-04 19:01) [15]

> [11] Stepper   (04.01.08 18:22)

А вот такой вариант шифрования:

Dt: TDate = 8 байт

type TCodeDate = record
     A,B,C,D,E,F,G,H: Byte;
    end;
cd: TCodeDate;

раскладываешь Dt по байтам в cd и перетасовываешь между аbcdefgh и записываешь разом cd либо в файл, либо в реестр (WriteBinary)...
при чтении собираешь байты вместе по определенному заранее алгоритму (по тому каким растосовал их)....
Я правда сам не пользовался этим..... вот только, что придумал :) Может и вообще лажа полная :(


 
Reindeer Moss Eater ©   (2008-01-04 19:05) [16]

Пиши в любое место, куда есть права писать.
Ну что бы насмешить всех только один раз (самим методом защиты).
Если же писать что-то в HKLM, то есть шанс насмешить всех аж дважды.
:))


 
Stepper   (2008-01-04 19:05) [17]


> {RASkov} ©   (04.01.08 18:36) [14]


Глянул! `Cг@ :)


 
Stepper   (2008-01-04 19:24) [18]


> Reindeer Moss Eater ©   (04.01.08 19:05) [16]


Для настроек уникальных для компьютера:

HKEY_LOCAL_MACHINE\SOFTWARE\наименование твоей организации\имя программы

Для настроек уникальных для пользователя в пределах одного компьютера:

HKEY_CURRENT_USER\SOFTWARE\наименование твоей организации\имя программы

:)


 
Loginov Dmitry ©   (2008-01-04 21:40) [19]

> Где в реестре (ветка) прописать параметр (триального периода)
> ?


Глянь, как это делает ORiEN. По мне, так вполне достойное решение. И реестр не засоряет, и найти заветный параметр без соответствующего ПО практически невозможно.


 
Stepper   (2008-01-04 22:32) [20]


> Loginov Dmitry ©   (04.01.08 21:40) [19]


Нус вот что он и делает...

(HKCU, HKLM, HKCR, HKCC)

CLSID
*\shellex\ContextMenuHandlers
Identities
Control Panel\Desktop\WindowMetrics
SOFTWARE\Microsoft\Windows\CurrentVersion
SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CLSID


 
Loginov Dmitry ©   (2008-01-04 23:10) [21]

> Нус вот что он и делает...
>
> (HKCU, HKLM, HKCR, HKCC)
>
> CLSID
> *\shellex\ContextMenuHandlers
> Identities
> Control Panel\Desktop\WindowMetrics
> SOFTWARE\Microsoft\Windows\CurrentVersion
> SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CLSID


Это лишь список предлагаемых веток, где программа может спрятать свой счетчик. Догадайся тут найти что-либо! А фишка - в генерации имени переменной (на основании сведений о программе). Получается уникальный набор символов (например "6C32D4ACEEC2"), чье назначение поймет далеко не каждый.


 
Stepper   (2008-01-04 23:22) [22]


> Loginov Dmitry ©   (04.01.08 23:10) [21]


Я использую сей код (триала)
...
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 := readinteger("key") - 1;
     if n >= 0 then
       writeinteger("key", n)
   end else begin // - да, первый запуск
     n := 10; // число запусков
     writeinteger("key", n)
   end;
   free
 end;
 if n > 0 then
...

Как зашифровать переменную n (10)  и потом прочитать ее, применительно сего кода? Или что в нем можно переделать? (в коде)


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

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

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


 
{RASkov} ©   (2008-01-04 23:59) [24]

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

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

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


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


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


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

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


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

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


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


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


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


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

Пишет но не вычитает!
...
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
...


 
{RASkov} ©   (2008-01-05 10:18) [29]

> [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;


 
{RASkov} ©   (2008-01-05 10:21) [30]

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

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

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


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

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

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


 
Anatoly Podgoretsky ©   (2008-01-05 12:13) [32]

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

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

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


 
Anatoly Podgoretsky ©   (2008-01-05 12:15) [33]

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

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


 
TStas ©   (2008-01-05 16:46) [34]

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


 
Riply ©   (2008-01-05 17:30) [35]

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

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


 
@!!ex ©   (2008-01-05 17:39) [36]

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

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


 
@!!ex ©   (2008-01-05 18:32) [37]

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

var
 linkMainInit: procedure();

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


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


 
Reindeer Moss Eater ©   (2008-01-05 22:24) [38]

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


 
{RASkov} ©   (2008-01-05 23:10) [39]

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

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


 
Reindeer Moss Eater ©   (2008-01-06 01:12) [40]

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

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



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.02.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.047 c
11-1183152373
Monty
2007-06-30 01:26
2008.02.03
kPerlRegExp.zip - NOT FOUND


3-1190642401
novill
2007-09-24 18:00
2008.02.03
Как без UDF реализоывать в IB7.5 обрезать строки до нужной длины?


15-1198725040
Slider007
2007-12-27 06:10
2008.02.03
С днем рождения ! 27 декабря 2007 четверг


2-1199749070
Igor23
2008-01-08 02:37
2008.02.03
Как спозиционироваться на нужную строку в текстовом файле


15-1198128892
Artur
2007-12-20 08:34
2008.02.03
Поиск текста в pdf





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский