首页
社区
课程
招聘
[原创]看雪论坛原来的一个crackme自己分析算法后的delphi注册机
发表于: 2008-2-15 11:17 4343

[原创]看雪论坛原来的一个crackme自己分析算法后的delphi注册机

2008-2-15 11:17
4343
这个crackme里面用了大数算法,有兄弟用C++很容易实现了它的算法,我想用delphi实现一下,结果成功了,你自己可以试,虽然delphi里有成形的inttothex函数,但没办法用的,另外,把longword改成longint会溢出的.

procedure TForm1.Button1Click(Sender: TObject);
var  username,out_strL,out_strR:string;
     user_length,i:integer;
     Teax,Tebx,out_intL,out_intR:longword;
begin
  username:=form1.Edit1.Text;
  user_length:=length(username);
  i:=0;
  out_intL:=0;
  out_intR:=0;
  out_strL:='';
  out_strR:='';
  Tebx:=$654789;
  for i:=1 to user_length do
    begin
    Teax:=ord(username[user_length-i+1]);
    Tebx:=Tebx-1;
    Teax:=Tebx*2;
    Tebx:=Tebx+Teax;
    Tebx:=Tebx-1;
    out_intR:=out_intR+ord(username[i])*4;
    end;
  out_intL:=Tebx;

  out_strL:=Bint_Hex(out_intL);
  out_strR:=IntTostr(out_intR);
  form1.edit2.text:='BS-'+out_strL+'-'+out_strR;
end;

function Bint_Hex(bignum:longword): string;
    var j,yushu:integer;
        out_string,biaoge:string;
        tempchar:char;
  begin
    biaoge:='0123456789ABCDEF' ; //初始化表格
    //用求模和求余的方式把一个大数变成HEX串
    while bignum>=16 do
    begin
      yushu:=bignum mod 16 ;
      out_string:=out_string +biaoge[yushu+1];
      bignum:=bignum div 16;
    end ;
    out_string:=out_string +biaoge[bignum+1];
    //字符串自身逆向
    for j:=1 to length(out_string) div 2 do
    begin
      tempchar:=out_string[j];
      out_string[j]:=out_string[length(out_string)-j+1];
      out_string[length(out_string)-j+1]:=tempchar;
    end;
    result:=out_string;
  end;
end.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//