算法分析 好冷清啊,来一篇破文吧(2)

时间:2005-12-20 来源: 作者: 点击:
{ Public declarations } end; function GetHardDiskSerieNumber(): integer; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} function GetHardDiskSerieNumber: integer; var sysinfo:tsysteminfo; lp
  
    { Public declarations }
  end;
function GetHardDiskSerieNumber(): integer;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

function GetHardDiskSerieNumber: integer;
var
  sysinfo:tsysteminfo;
  lpRootPathName          : PChar; // address of root directory of the file system
  lpVolumeNameBuffer      : PChar; // address of name of the volume
  nVolumeNameSize          : DWORD; // length of lpVolumeNameBuffer
  lpVolumeSerialNumber    : DWORD; // address of volume serial number
  lpMaximumComponentLength : DWORD; // address of system's maximum filename length
  lpFileSystemFlags        : DWORD; // address of file system flags
  lpFileSystemNameBuffer  : PChar; // address of name of file system
  nFileSystemNameSize      : DWORD; // length of lpFileSystemNameBuffer
begin
  lpRootPathName:=pchar('c:\');
  windows.GetSystemInfo(sysinfo);
  GetMem( lpVolumeNameBuffer, MAX_PATH + 1 );
  GetMem( lpFileSystemNameBuffer, MAX_PATH + 1 );
  nVolumeNameSize    := MAX_PATH + 1;
  nFileSystemNameSize := MAX_PATH + 1;
  Windows.GetVolumeInformation(  lpRootPathName,
                                lpVolumeNameBuffer,
                                nVolumeNameSize,
                                @lpVolumeSerialNumber,
                                lpMaximumComponentLength,
                                lpFileSystemFlags,
                                lpFileSystemNameBuffer,
                                nFileSystemNameSize );
  Result := lpVolumeSerialNumber;
end;

procedure TForm1.aboutClick(Sender: TObject);
begin
  form2.show;
end;

procedure TForm1.exitprogramClick(Sender: TObject);
begin
  form1.Close;
end;

procedure TForm1.regClick(Sender: TObject);
label
  isregcode,quitloop;

var
  v1,v2,v3,v4,v5,v6,v7,v8:integer;
  hdid:longword;
  hdln:integer;
  idstr:string;
  i,j,k:integer;
  regcode:array[1..20] of char ;
  cmod:integer;
  cdiv:integer;
  lidbit,idbit:integer;
  idbitstr:string;
  newidbit:integer;
  regcodebit:integer;
  reg:TRegistry;
begin
  hdid:=GetHardDiskSerieNumber;
  hdln:=length(inttostr(hdid) );
  idstr:=inttostr(hdid); ;
  v1:=7;
  v2:=1;
  v3:=3;
  v4:=0;
  for i:=1 to 20 do
  begin
    v3:=((v3+1) mod ((6 mod hdln)+1))+1;
    v4:=v4+v1;
    v1:=(v1+$18b) mod $0A;
    idbitstr:='';
    for j:=1 to v3 do
    begin
      v4:=((v4+v2) mod hdln)+1;
      v2:=(v2+1) mod 6;
      idbitstr:=idbitstr+idstr[v4];
    end;
    newidbit:=strtoint(idbitstr);
    v5:=$85;
    v6:=$6f;
    v7:=$42;
    v8:=$a6;
    for k:=1 to 6 do
    begin
      regcodebit:=((newidbit mod (v5+1))+(newidbit mod (v6+1))+(newidbit mod (v7+1))) mod (v8+1);
      v5:=v5+2;
      v6:=v6-7;
      v7:=v7+5;
      v8:=v8-3;
      if (regcodebit>=48) and (regcodebit<=57) then goto isregcode;
      if (regcodebit>=65) and (regcodebit<=90) then goto isregcode;
      if (regcodebit>=97) and (regcodebit<=122) then goto isregcode;
    end;
    if regcodebit<61 then
    begin
      regcode[i]:=chr((regcodebit mod 10)+48);
      goto quitloop;
    end;
    if regcodebit>93 then
    begin
      regcode[i]:=chr((regcodebit mod 26)+97);
      goto quitloop;
    end;
    if (regcodebit<=93)  then
    begin
      regcode[i]:=chr((regcodebit mod 26)+65);
      goto quitloop;
    end;
isregcode:
    regcode[i]:=chr(regcodebit);
quitloop:
  end;

  Reg := TRegistry.Create;

  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.
------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容