上面这篇是前几天的,今晚再贴个破破烂烂的序列机。 (2千字)
今晚忙里偷闲写了个序列机,手头没VC,只好用DELPHI,其实也就是把那段代码套过来。下面是序列机的源程序:unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask;
type
TForm1 = class(TForm)
MaskEdit1: TMaskEdit;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
j:integer;
inputstr:string;
adr:Pointer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
label
L_0043AEF8,L_0043AF0B,L_0043AF19,L_0043AF27,L_0043AF0D;
begin
inputstr:=self.maskedit1.text;
adr:=Pchar(inputstr);
asm
push ebp
mov ebp, 13h
test bp, bp
L_0043AEF8: mov eax, 00000081h
push edi
mov edi, adr
push esi
L_0043AF0B: mov cl, byte ptr [edi] //读一个字符
L_0043AF0D: mov esi, 00000008h //对每一个字符要进行八次循环。
and ecx, 000000FFh
inc edi
L_0043AF19: mov edx, eax
xor edx, ecx
test dl, 01h
je L_0043AF27
xor eax, 00010810h
L_0043AF27: shr eax, 1
shr ecx, 1
dec esi //小循环变量减1,要进行8次
jne L_0043AF19 //小循环
add ebp, 0000FFFFh //大循环变量减1,要进行0x13次
test bp, bp
jne L_0043AF0B //大循环
not eax
xor ecx, ecx
pop esi
mov cl, ah
pop edi
mov ch, al
pop ebp
mov eax, ecx
mov j, eax
end;
self.Edit1.Text:=format('%s%5.5d',[inputstr,j]);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
messagebox(self.handle,'NetScanTools Pro 2000安装序列号生成器。'+#10+#13+'在框中输满所有数字即可生成序列号。'+#10+#13+#10+#13+'该破序列机
end;
end.
