请问共享软件的注册信息保存在什么地方最安全??(100分)

H

highfly

Unregistered / Unconfirmed
GUEST, unregistred user!
我知道注册表肯定不行,现在有许多监视注册表的软件。
 
没有什么地方是安全的,对于Cracker来说,没有什么软件是无法破解的
 
写到文件头里!其它的都是很容易就……
 
同意Linux2002,只有相对安全,加密后存到注册表里
 
to Linux2002:
Cracker也不是什么软件都能破解,UnCrack的方法现在更高明了!
 
我当然也知道再好的加密也要被破解,但总不能没有任何加密措施吧,既然要有,那么一定
要做好吧,否则真的不如不做。我现在的需要就是找出一种比较好的加密措施。注册码
的生成等问题都不大,随便一个算法就可以了,但是这些信息保存在哪里合适呢?这时真正让
我头疼的地方。
 
我认为放到程序中去!
 
写到程序中,但是别写成一个资源文件,赫赫!
 
可以写注册表。
安装程序时按照日期和机器配置生成一个加密的代码写进去,
程序执行时检查有没有所写入的项,如果没有或数据不合法: 中止执行!
如果有数据,再检查是否在试用期内。
关键在于加密算法。
 
我认为保存在自己的服务器上最安全啦
 
写到一个后缀很奇怪的文件中去,一般人也不会想到,将它放到Windows的某个目录下去。
 
写到一个后缀很奇怪的文件中去,一般人也不会想到,将它放到Windows的某个目录下去。
太明显了,记得有一个监测 磁盘目录、文件变化的小程序,
运行一下,就可以发现,注册表的也有一个同样的工具。
俺觉得还是写道文件里面。
 
主要看加密算法,写到哪里都一样,regmon--注册标监视工具,filemon--文件监视工具
我学过一些破解,这个做法是没有用的
在算法下做做功夫,DES,MD4,MD5
 
以下代码是用时间限制使用期限的,但是过期后改系统时间后又能用了,怎么解决呢?
procedure TForm1.form1create(Sender: TObject);
var
re_id:integer;
registerTemp : TRegistry;
inputstr,get_id:string;
dy,clickedok:boolean;
begin
 dy:=false;
//软件是否已到注册期、及是否允许继续使用的标志,当值为FALSE是为允许使用。
 registerTemp := TRegistry.Create;
//准备使用注册表
 with registerTemp do
 begin
   RootKey:=HKEY_LOCAL_MACHINE;
//存放在此根下
   if OpenKey('Software/Microsoft/Windows/CurrentVersion/Mark',True) then
    // 建一目录,存放标志值。当然也可以存放在已存在的目录下。怎么样,很难发现吧?
    begin
     if valueexists('gc_id') then
begin
//用gc_id的值作为标志,首先判断其存在否?
       re_id:=readinteger('gc_id');//读出标志值
       if (re_id<>0) and (re_id<>100) then
begin
//若标志值为0,则说明已注册。
              //若不为0且值不到100,说明虽未注册,但允许使用的次数尚未达到。
        re_id:=re_id+5;
//允许标志的最大值为100,每次加5,则最多只可用20次。
        Writeinteger('gc_id',re_id);//将更新后的标志值写入注册表中。
     end;
     if re_id=100 then
dy:=true;
//假如值已到100,则应注册。
    end
   else
Writeinteger('gc_id',5);//建立标志,并置初始标志值。
  end;
  if dy then
begin
//若dy值为TRUE,则应提示用户输入注册码,进行注册。
    clickedok:=InputQuery('您使用的是非注册软件,请输入注册码:',' ',inputstr);
    if clickedok then
begin
      get_id:=inttostr(27593758*2);//注册码为55187516,当然可加入更杂的算法。
      if get_id=inputstr then
begin
        Writeinteger('gc_id',0);//若输入的注册码正确,则将标志值置为0,即已注册。
        CloseKey;
        Free;
       end
      else
begin
//若输入的注册码错误,应作出提示并拒绝让其继续使用
        application.messagebox('注册码错误!请与作者联系!','警告框',mb_ok);
        CloseKey;
        Free;
        application.terminate;
//中止程序运行,拒绝让其继续使用
       end;
      end
    else
begin
//若用户不输入注册码,也应作出提示并拒绝让其继续使用
      application.messagebox('请与作者联系,使用注册软件!','警告框',mb_ok);
      CloseKey;
      Free;
      application.terminate;
     end;
  end;
 end;
end;
 
关健问题是如果用户清除了注册表'Software/Microsoft/Windows/CurrentVersion/Mark'
的信息后不就成了第一次使用了??
 
必须去掉这一句。
else
Writeinteger('gc_id',5);//建立标志,并置初始标志值。
应该在安装程序时自动生成这一句。
而且这一句后面的5最好是一个5与安装日期按一定方式加密得到的值。
 
结合硬件,用硬件的ID(全球唯一的)再结合算法形成注册信息,后可加入资源文件,或
注入程序,或学学病毒,可以在系统文件尾加字符(容易被发现)。这样的注册信息就唯一
了,相对安全。当然,没有完全安全的东西。
 
俺一再声明别写入资源,呵呵,至于原理兄弟们应该懂得。
 
用winrar的加密方法。
 
我觉得关健是加密的信息保存的地方,再好的加密被被人很容易找到的话,还不是跟没加
一样。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
535
import
I
I
回复
0
查看
465
import
I
顶部