请教:我在得知客户机上的硬盘序列号以后,如何算出软件的注册号呢?(100分)

  • 主题发起人 bluesky1000
  • 开始时间
B

bluesky1000

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠,我是一个菜鸟,向大侠们请教:请教:我在得知客户机上的硬盘序列号以后,

如何算出软件的注册号呢?看别人的贴子都说要用什么算法?是什么算法啊?

另外,算出注册码后,在DELPHI中怎样写代码才能让程序识别这个算出的注册号呢?

请赐教!不胜感激,我只有100分了,全送了!
 
没有人知道吗?
 
你怎么知道他得到硬盘的序列号后是采用怎样的加密方式呢/
如果你知道的话,反其道而行之,如果不知道,那就非常难办啦/
 
給你一個加密單元
在得到硬盘序列号后調用單元的函數進行加密,再修改一下。
就可以作為注册码了!
把注冊碼進行解密就是原來的硬盘序列号了!

unit uEncryptEx;

interface

uses Sysutils;

const
cKey='vincent';

Function EncryptEx(Src:string;Encrypt:Boolean;Key:string=cKey):string;

implementation

Function EncryptEx(Src:string;Encrypt:Boolean;Key:string=cKey):string;
var
KeyLen :integer;
KeyPos :integer;
offset :integer;
SrcPos :integer;
SrcAsc :integer;
TmpSrcAsc:integer;
Range :integer;
Desc :string;
begin
KeyLen:=length(Key);
if KeyLen=0 then Key:='vincent';
KeyPos:=0;
SrcPos:=0;
SrcAsc:=0;
Range:=256;
if Encrypt then
begin
Randomize;
offset:=Random(Range);
Desc:=Format('%1.2x',[offset]);
for SrcPos:=1 to Length(Src) do
begin
SrcAsc:=(ord(Src[SrcPos])+offset) MOD 255;
if KeyPos<KeyLen then
inc(KeyPos)
else KeyPos:=1;
SrcAsc:= SrcAsc xor ord(Key[KeyPos]);
Desc:=Desc+Format('%1.2x',[SrcAsc]);
offset:=SrcAsc;
end; //end for
end
else begin
offset:=strtoint('$'+Copy(Src,1,2));
SrcPos:=3;
repeat
SrcAsc:= strtoint('$'+Copy(Src,SrcPos,2));
if KeyPos<KeyLen then
inc(KeyPos)
else KeyPos:=1;
TmpSrcAsc:=SrcAsc xor ord(Key[KeyPos]);
if TmpSrcAsc<=offset then
TmpSrcAsc:=255+ TmpSrcAsc-offset
else TmpSrcAsc:=TmpSrcAsc-offset;
Desc:=Desc+chr(TmpSrcAsc);
offset:= SrcAsc;
SrcPos:= SrcPos+2;
until SrcPos>=length(Src);
end;

result:=Desc;
end;
end.
 
原来是要给自己的程序做注册码啊,我还以为是解密别人的软件呢/
不好意思。
UP/
 
顶部