unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Registry, StdCtrls, Buttons;type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    GetKeySpeedButton: TSpeedButton;
    CheckBox1: TCheckBox;
    Label4: TLabel;
    procedure GetKeySpeedButtonClick(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  Family, Model, Stepping: Byte;implementation{$R *.dfm}//获得CPU信息的过程,用汇编代码写的
procedure GetCpuID;
asm
  PUSH EAX
  MOV  EAX, 1
  DW   $A20F  //汇编指令CPUID的机器代码
  MOV  Stepping, AL
  AND  Stepping, 0FH  //取得CPU STEPPING数送入到变量Stepping中
  AND  AL, 0F0H
  SHR  AL, 4
  MOV  Model, AL  //取得CPU MODEL数送入到变量Model中
  SHR  AX, 8
  AND  AL, 0FH
  MOV  Family, AL  //取得CPU FAMILYG数送入到变量Family中
  POP  EAX
end;//RSA的加密和解密函数,等价于(m^e) mod n(即m的e次幂对n求余)
function Encrypt_Decrypt(m: Int64; e: Int64=$2C86F9; n: Int64=$69AAA0E3): Int64;
var
  a, b, c: Int64;
begin
  a:=m;
  b:=e;
  c:=1;
  while b<>0 do
    if (b mod 2)=0
      then begin
             b:=b div 2;
             a:=(a * a) mod n;
           end
      else begin
             b:=b - 1;
             c:=(a * c) mod n;
           end;
  Result:=c;
end;procedure TForm1.GetKeySpeedButtonClick(Sender: TObject);
var
  ID, UserName, CpuVer: String;
  s: Array [1..4] of Cardinal;
  temp, Num1, Num2: Cardinal;
  Code1, Code2: Int64;
  i, ascii: Byte;
  Reg: TRegistry;
begin
  if (Edit1.Text='') and (CheckBox1.Checked=False)
    then Application.MessageBox('请输入注册申请码!', '警告', MB_OK);
  if (Edit1.Text='') and (CheckBox1.Checked=True)
    then Application.MessageBox('请输入注册者姓名!', '警告', MB_OK);
  if (CheckBox1.Checked=true) and (Edit1.Text<>'')
    then begin
           UserName:=Edit1.Text;  //从Edit1.Text中取得用户名
           GetCpuID;  //调用过程GetCpuID
           CpuVer:='Level '+IntToStr(Family)+'  Rev. '+IntToStr(Model)+'.'+IntToStr(Stepping);
           temp:=1;
           i:=1;
           while UserName[i]<>#0 do begin
             ascii:=ord(UserName[i]);  //函数ord()的作用为取得字符的ASCII码
             temp:=(temp*ascii+$D0878) mod $F4240;
             inc(i);
           end;
           i:=1;
           while CpuVer[i]<>#0 do begin
             ascii:=ord(CpuVer[i]);
             temp:=(temp*ascii+$2597D) mod $F4240;
             inc(i);
           end;
           ID:=IntToStr(temp);
         end;
  if (CheckBox1.Checked=false) and (Edit1.Text<>'')
    then ID:=Edit1.Text;
  ID:=ID+'1234567';
  SetLength(ID, 8);  //把字符串ID长度变为8个,并把后面的字符截掉  //下面四行语句是把字符串'You are big pig.'的内存数据送到变量s中
  s[1]:=$20756f59;
  s[2]:=$20657261;
  s[3]:=$20676962;
  s[4]:=$2e676970;
  Num1:=0;
  for i:=4 downto 2 do
    Num1:=(Num1+ord(ID[i])) shl 8;
  Num1:=Num1+ord(ID[1]);
  Num2:=0;
  for i:=8 downto 6 do
    Num2:=(Num2+ord(ID[i])) shl 8;
  Num2:=Num2+ord(ID[5]);
  temp:=0;
  for i:=1 to 32 do begin
    temp:=temp+$9E3779B9;
    Num1:=Num1+(Num2 shl 4)+(s[1] xor Num2)+((Num2 shr 5) xor temp)+s[2];
    Num2:=Num2+(Num1 shl 4)+(s[3] xor Num1)+((Num1 shr 5) xor temp)+s[4];
  end;  Code1:=(Num1 mod $40000000) + 2;
  Code2:=($93E0014 shl 2)+ Num1 div $40000000 + 2;
  Code1:=Encrypt_Decrypt(Code1);
  code2:=Encrypt_Decrypt(Code2);
  if (CheckBox1.Checked=False) and (Edit1.Text<>'')
    then begin
           Edit2.Text:=IntToHex(Code1, 8);
           Edit3.Text:=IntToHex(Code2, 8);
         end;
  if (CheckBox1.Checked=True) and (Edit1.Text<>'')
     then begin
           Reg:=TRegistry.Create;
           Reg.RootKey:=HKEY_LOCAL_MACHINE;
           if Reg.OpenKey('Software\Wom', True)
             then begin
                    Reg.DeleteValue('Masters');
                    Reg.WriteString('Register', UserName);
                    Reg.WriteString('Register_1', IntToHex(Code1, 8));
                    Reg.WriteString('Register_2', IntToHex(Code2, 8));
                  end;
           Reg.Free;
           Application.MessageBox('自动注册完成!', '信息', MB_OK);
         end;
end;procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked=true
    then begin
           GetKeySpeedButton.Caption:='自动注册';
           Label1.Caption:='注册者姓名';
           Edit1.MaxLength:=0;
           Label2.Visible:=false;
           Label3.Visible:=false;
           Edit2.Visible:=false;
           Edit3.Visible:=false;
         end
    else begin
           GetKeySpeedButton.Caption:='取得注册码';
           Label1.Caption:='注册申请码';
           Edit1.MaxLength:=8;
           Label2.Visible:=true;
           Label3.Visible:=true;
           Edit2.Visible:=true;
           Edit3.Visible:=true;
         end;
end;end.

解决方案 »

  1.   

    good luck!
    找个题库做一做更直接。
      

  2.   

    别太紧张,我2000年考高程的时候,就看了两个星期的书,只要平时有基础,应该就没什么问题,不过一定要多做CASL习题。
      

  3.   

    祝你有花不完的钱,有*不完的美女!
    HEHE
    ================================================================
    我是中国鹰派!
    拒绝日货!打倒小日本!
      

  4.   

    一大堆高手,帮我解决这个问题好不好?
    http://www.csdn.net/expert/topic/1084/1084114.xml?temp=.1879694
      

  5.   

    过两天我也要考,不过可能没什么希望。下午的没复习过,到时看看有没有取巧的机会,否则就BYEBYE了。
    放松点!!明天只会越来越好。
      

  6.   

    给我也没用,
    ZZZZZ汇编看不懂呀!!:(
      

  7.   

    Good Luck ﹗ and Thanks!
      

  8.   

    thanks ,I sure you can.
      

  9.   

    哥们,挺住呀!!  Good luck!!
      

  10.   

    I hope your dreams come true !!!!
      

  11.   

    编译原理完全不懂,这part打算放弃算了:(
    还没看完,只剩两天,怎办~
      

  12.   

    我也要考啊,CASL还没有看呢,郁闷
      

  13.   

    没问题,我这么苯的人,94就pass了,只要练了就行
      

  14.   

    To: D_Q(A.Dai)(阿呆) 
    只可以用于以前的版本,仅供学习:)
      

  15.   

    祝通过
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  16.   

    Thanks a lot! Good luck! Receive Score!
      

  17.   

    Good Luck For You!!!