首页
社区
课程
招聘
搞定TuneUp Utilities 2004!!
2004-10-24 09:08 11131

搞定TuneUp Utilities 2004!!

2004-10-24 09:08
11131
软件介绍:TuneUp Utilities 2004是一个来自德国的系统调整工具,它能够让你的系统跑的更顺畅。TuneUp Utilities 的功能应有尽有,主要工具包括:系统改造/分析、硬盘/登录文件清理、系统加速、记忆体最佳化、登录文件编辑、软件卸载、工作管理员、文件还原/清理。
下载地址:http://soft.yzvod.com/down.php?id=19024

---------------------------------------------------------------
当我用了这个软件后,我发现它太棒了,好的无法用言语来形容了,真佩服这个公司的开发人员的水平
但是未注册的版本有功能限制这就很不爽了啊,于是想分析这个软件的注册算法,但是当我去努力分析
它的时候,我遇到了困难,走了弯路,但最后还是把它拿下了。当然它的注册算法很复杂,让我分析的
找不到北,后来还是把它给爆破了,^_*,但是爆破它也不容易,我改了7处才成功...
这个软件用了MD5,CRC32,SHA1,几乎都是单向散列算法,我想这样的软件一般是明码比较,或者很容易
攻破的,单向并不可怕.但让我惊奇的是我竟然看到了Message Digest 6 ! MD6??难道MD5被攻破后
Ron Rivest又完善了MD5?? 我不得而知...,也许这个软件用了某种注册组件,我也不太清楚:-(

如果你试图去分析它的主程序integrator.exe,找出它的注册算法或者爆破点,那么你最终一定会无功
而返^_^
用PeID查integrator.exe,Borland Delphi 6.0 - 7.0,接着分析它的密码学算法,没有,呵呵
在程序的目录中有很多的*.bpl文件,这些是Delph的动态链接库(组件?),那么我们根据.bpl的文件名就
可以判断它的功能了
AppInitialization.bpl  程序初始化
DEC.bpl  这个我要说一下啦 一看就是decryption,加密模块,^_*,我喜欢,用PeID的Krypto Analyzer
      分析了一下13种密码学算法,呵呵,不要被吓倒了啊,虽然其中的BlowFish,MD5,CRC16&32,
            TWOFISH,SHA1,RSA并不可怕,但也够受的啦
其它的模块并不重要,感兴趣你自己可以分析一下啊
程序启动的时候如果没有注册会有一个Nag,提示还可使用多少天,一开始我只是想分析注册算法,没有想去
掉它,但是后来我只有从它下手了^_*
如果想用MessageBoxA,RegQueryValueExA这样的断点来拦截它的话,你会发现这起不到任何作用^_*

用RegMon分析发现注册信息保存在
HKLM\SOFTWARE\TuneUp\Utilities\4.0
"Company"=""
"RegCode"=""
"UserName"=""
"UseCounter"=""
"ShowSplashScreen"=""(注:这个只有在注册了之后才会有)

用OllyDBG装载它,然后右击=>查看=>模块"Appini",给RTL60.System::LStrCmp全部下断,其它的
vcl60.Forms::TApplication::MessageBox
DEC.Hcmngr::THashManager::CalcString
DEC.Hcmngr::THashManager::SetAlgorithm
MainCont.Turegistry::GetProductRegDateTimeValue
MainCont.Turegistry::GetProductRegDWORDValue
像这些东东,一看就知道是什么用了,下不下断都无所谓,呵呵,为了保险我都下了

当我跟第一遍的时候我在下面的这个地方发现了调用那个Nag的call

0054B0CB     E8 24EAFFFF         call AppIniti.Ufrmnagscreen::ShowNagscreen

把这个call Nop掉就可以去掉开始的Nag了

第一个
00543986     8B45 9C             mov eax,dword ptr ss:[ebp-64]
00543989     8B55 D0             mov edx,dword ptr ss:[ebp-30]
0054398C     E8 7FD7FFFF         call <jmp.&rtl60.System::LStrCmp>
00543991    /74 1E               jne short AppIniti.005439B1           //chenge to je           
00543993    |8D45 EC             lea eax,dword ptr ss:[ebp-14]
00543996    |50                  push eax
00543997    |8B45 EC             mov eax,dword ptr ss:[ebp-14]
0054399A    |E8 51D7FFFF         call <jmp.&rtl60.System::LStrLen>
0054399F    |8BC8                mov ecx,eax
005439A1    |49                  dec ecx
005439A2    |BA 01000000         mov edx,1
005439A7    |8B45 EC             mov eax,dword ptr ss:[ebp-14]
005439AA    |E8 81D7FFFF         call <jmp.&rtl60.System::LStrCopy>
005439AF    |EB 07               jmp short AppIniti.005439B8
005439B1    \33DB                xor ebx,ebx
005439B3     E9 17030000         jmp AppIniti.00543CCF

第二个
005439F2     E8 D9F5FFFF         call AppIniti.Turegcode::CalcShortHash
005439F7     8B45 94             mov eax,dword ptr ss:[ebp-6C]
005439FA     50                  push eax
005439FB     8D4D 8C             lea ecx,dword ptr ss:[ebp-74]
005439FE     BA 02000000         mov edx,2
00543A03     8B45 EC             mov eax,dword ptr ss:[ebp-14]
00543A06     E8 C9E5FFFF         call <jmp.&MainControls.Stringhelper::Ri>
00543A0B     8B55 8C             mov edx,dword ptr ss:[ebp-74]
00543A0E     58                  pop eax
00543A0F     E8 FCD6FFFF         call <jmp.&rtl60.System::LStrCmp>
00543A14     75 07               je short AppIniti.00543A1D                //chenge to jnz
00543A16     33DB                xor ebx,ebx
00543A18     E9 B2020000         jmp AppIniti.00543CCF
00543A1D     8D45 EC             lea eax,dword ptr ss:[ebp-14]

第三个
00543A92     E8 59D6FFFF         call <jmp.&rtl60.System::LStrLen>
00543A97     83F8 0E             cmp eax,0E
00543A9A     75 07               je short AppIniti.00543AA3           //chenge to jnz
00543A9C     33DB                xor ebx,ebx
00543A9E     E9 2C020000         jmp AppIniti.00543CCF
00543AA3     8D4D FC             lea ecx,dword ptr ss:[ebp-4]

第四个
005443D6    /74 1E               jnz short AppIniti.005443F6              //chenge to je
005443D8    |8D45 F8             lea eax,dword ptr ss:[ebp-8]
005443DB    |50                  push eax
005443DC    |8B45 F8             mov eax,dword ptr ss:[ebp-8]
005443DF    |E8 0CCDFFFF         call <jmp.&rtl60.System::LStrLen>
005443E4    |8BC8                mov ecx,eax
005443E6    |49                  dec ecx
005443E7    |BA 01000000         mov edx,1
005443EC    |8B45 F8             mov eax,dword ptr ss:[ebp-8]
005443EF    |E8 3CCDFFFF         call <jmp.&rtl60.System::LStrCopy>
005443F4    |EB 21               jmp short AppIniti.00544417
005443F6    \55                  push ebp
005443F7     8D55 9C             lea edx,dword ptr ss:[ebp-64]
005443FA     B8 1C355400         mov eax,AppIniti.Turegcodevalidation_tu2>
005443FF     E8 9CCDFFFF         call <jmp.&rtl60.System::LoadResString>

第五个
00544480    /EB 21               je short AppIniti.005444A3             //chenge to jmp
00544482    |55                  push ebp
00544483    |8D55 88             lea edx,dword ptr ss:[ebp-78]
00544486    |B8 1C355400         mov eax,AppIniti.Turegcodevalidation_tu2>
0054448B    |E8 10CDFFFF         call <jmp.&rtl60.System::LoadResString>
00544490    |8B55 88             mov edx,dword ptr ss:[ebp-78]
00544493    |B8 01000000         mov eax,1
00544498    |E8 83F9FFFF         call AppIniti.00543E20
0054449D    |59                  pop ecx
0054449E    |E9 A3030000         jmp AppIniti.00544846
005444A3    \8D45 F8             lea eax,dword ptr ss:[ebp-8]
005444A6     50                  push eax

第六个
00544520    /75 21               je short AppIniti.00544543             //chenge to jnz
00544522    |55                  push ebp
00544523    |8D55 84             lea edx,dword ptr ss:[ebp-7C]
00544526    |B8 1C355400         mov eax,AppIniti.Turegcodevalidation_tu2>
0054452B    |E8 70CCFFFF         call <jmp.&rtl60.System::LoadResString>
00544530    |8B55 84             mov edx,dword ptr ss:[ebp-7C]
00544533    |B8 01000000         mov eax,1
00544538    |E8 E3F8FFFF         call AppIniti.00543E20
0054453D    |59                  pop ecx
0054453E    |E9 03030000         jmp AppIniti.00544846
00544543    \8D45 FC             lea eax,dword ptr ss:[ebp-4]

第七个
00544811     E8 FAC8FFFF         call <jmp.&rtl60.System::LStrCmp>
00544816     75 0F               jnz short AppIniti.00544827        //nop nop
00544818     8B45 08             mov eax,dword ptr ss:[ebp+8]
0054481B     BA 30495400         mov edx,AppIniti.00544930                ; ASCII "OK"
00544820     E8 9BC8FFFF         call <jmp.&rtl60.System::LStrAsg>
00544825     EB 1F               jmp short AppIniti.00544846
00544827     55                  push ebp
00544828     8D95 54FFFFFF       lea edx,dword ptr ss:[ebp-AC]
0054482E     B8 3C355400         mov eax,AppIniti.Turegcodevalidation_tu2>
00544833     E8 68C9FFFF         call <jmp.&rtl60.System::LoadResString>
00544838     8B95 54FFFFFF       mov edx,dword ptr ss:[ebp-AC]
0054483E     33C0                xor eax,eax

我强烈推荐兄弟去下载用用它,呵呵,超爽的一个软件
如果你想知道为什么要这么改,那么为什么不去下载一个来自己分析分析呢?
其实我是想分析它的注册算法,等有空的时候再看看吧,虽然不一定能成功 ^_*


[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞7
打赏
分享
最新回复 (21)
雪    币: 251
活跃值: (260)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
yesky1 5 2004-10-24 09:40
2
0
DEC很熟悉啊 :)
我做过一个这个控件的ida sig文件,估计对你分析算法有帮助
附件:DelphiCipher.rar
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
cnbragon 18 2004-10-24 10:10
3
0
谢谢yesky1兄:D
雪    币: 85496
活跃值: (198820)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 2004-10-24 23:21
4
0
支持!!!
雪    币: 255
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
kimmal 1 2004-10-25 00:30
5
0
支持~!
这几天我也遇到个CRC32+MD5+Base64的,
没办法写不了注册机,只好爆了~!
雪    币: 318
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kk378 2004-10-27 11:00
6
0
厉害,再学学。。。。。
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
海角虹楼 2004-10-27 11:56
7
0
支持你们   暴破也没什么不好的,反正不影响功能,哈哈

佩服你们:D
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2004-10-27 12:47
8
0
先支持,过几天研究!
雪    币: 205
活跃值: (166)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
arryang 1 2004-10-27 17:53
9
0
这里真是藏龙卧虎,这么多牛人
雪    币: 216
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
analog 2 2004-10-27 20:45
10
0
厉害,向你学习。我也分析过这程序,由于当时还不了解那些加密算法,所以看到这么多加密算法就没再分析下去,想不到竟然让兄弟爆破了
雪    币: 224
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
blackjake 2006-1-5 12:51
11
0
我也是想分析他的算法,后来绝望了,最后只有把他爆破了。不过在rackserial上下了个2006的patch,正在分析,哪位兄弟先弄出来了,一定要分享啊!
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dINO 2006-1-5 17:04
12
0
最初由 cnbragon 发布
软件介绍:TuneUp Utilities 2004是一个来自德国的系统调整工具,它能够让你的系统跑的更顺畅。TuneUp Utilities 的功能应有尽有,主要工具包括:系统改造/分析、硬盘/登录文件清理、系统加速、记忆体最佳化、登录文件编辑、软件卸载、工作管理员、文件还原/清理。
下载地址:http://soft.yzvod.com/down.php?id=19024

---------------------------------------------------------------
当我用了这个软件后,我发现它太棒了,好的无法用言语来形容了,真佩服这个公司的开发人员的水平
........


好象上这样的:
RSA-126:
N=0x36738CA54B2F1ACA216E31571FBFF93F
D=0x298BEFDA68E5CD3BEDC7E17CC861697F
P=0x789CB5C43ADD1A69
Q=0x7392C6B4FED27167
E=0x11DC0530C43E347ABF
-----------------------------------------------------------------------------------
MD5(dino|saur)=0x153CF774A2811E648E20CF798CE95EED
pick 0x153CF774A2811E648E

M=0x7(const)+0x153CF774A2811E648E+E008AFBA00
M'=MEmodN
=0x1120EAC24C0EC0926DFBD6EB27377CF7

SHA-1(1120EAC24C0EC0926DFBD6EB27377CF7)
=0xC1EB756FB06BA7DB7D17E19A3E35F9B51A2F9897
pick first 4 bytes=C1EB

Base32(1120EAC24C0EC0926DFBD6EB27377CF7+C1EB)
="CESQXSUNB5AKE5R545XUQP5689A8Y"
-------------------------------------------------------------------------------------
pick 2st of the result=E(45h) div 0x1D=2<B> -->0x0B
pick 0Bst of the result=K(4Bh) div 0x0F=5<0>  0+0=0
pick 0st of 'BCDEFGHJKLMNPQRSTUVWXY123456789'='B'

serial=CESQXSUNB5AKE5R545XUQP5689A8YB
雪    币: 195
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5151 2006-1-6 08:54
13
0
[转帖]TuneUp Utilities 2004注册机附件:pdxkg.rar
雪    币: 425
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
鸡蛋壳 2006-1-6 11:58
14
0
能不能搞几个绝对性的难点,这种难度只能挠痒痒。
雪    币: 425
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
鸡蛋壳 2006-1-6 12:00
15
0
TracePlus Win32
这个最近碰到的,难度还可以,有兴趣玩玩
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
cnbragon 18 2006-1-6 12:29
16
0
最初由 鸡蛋壳 发布
能不能搞几个绝对性的难点,这种难度只能挠痒痒。


呵呵,这个是一年前写的贴子,又被顶出来了。

关于Tuneup utilities 2006给出它的注册机部分源码,算是对各犹未尽玩家的补充吧

var
  Form1: TForm1;
  chr32 : Array[1..32] Of char = ('A','B','C','D','E','F','G','H','J','K','L',
                                'M','N','P','Q','R','S','T','U','V','W','X',
                                'Y','1','2','3','4','5','6','7','8','9');
implementation

uses FGInt, FGIntRSA;

{$R *.dfm}

function PreprocessUserData(var S:string) :string ;
begin
  Result:=S;
  Result:=AnsiReplaceStr(Result,' ','');
  Result:=AnsiReplaceStr(Result,'.','');
  Result:=AnsiReplaceStr(Result,',','');
  Result:=AnsiReplaceStr(Result,';','');
  Result:=AnsiReplaceStr(Result,'+','');
  Result:=AnsiReplaceStr(Result,'-','');
  Result:=AnsiReplaceStr(Result,'&','');
  Result:=AnsiReplaceStr(Result,#223,'ss');
  Result:=AnsiReplaceStr(Result,#228,'ae');
  Result:=AnsiReplaceStr(Result,#246,'oe');
  Result:=AnsiReplaceStr(Result,#252,'ue');
  Result:=AnsiReplaceStr(Result,#200,'Ae');
  Result:=AnsiReplaceStr(Result,#214,'Oe');
  Result:=AnsiReplaceStr(Result,#220,'Ue');
end ;

function HashUserData(const S:string):string ;
var
  HashManager1:THashManager;
  strTemp:String;
begin
  HashManager1:=THashManager.Create(nil);
  HashManager1.Algorithm:='Message Digest 5';
  HashManager1.CalcString(S);
  strTemp:=HashManager1.Digest;
  HashManager1.Destroy;
  Result:=copy(strTemp,1,9);
end;

function CalcShortHash(const S:string):string;
var
  HashManager2:THashManager;
  strTemp:String;
begin
  HashManager2:=THashManager.Create(nil);
  HashManager2.Algorithm:='SHA1';
  HashManager2.CalcString(S);
  strTemp:=HashManager2.Digest;
  HashManager2.Destroy;
  Result:=copy(strTemp,1,2);
end;

Procedure Base32to256(str32 : String; Var str256 : String);
Var
   i, len8 : longint;
   g : char;
   str2:String;
Begin
   ConvertBase32To2(str32,str2);
   Strlcopy(PAnsiChar(str2),PAnsiChar(str2),(strlen(PAnsiChar(str2))-1));
   str256 := '';
   //While (length(str2) Mod 8) <> 0 Do str2 := '0' + str2;
   len8 := length(str2) Div 8;
   For i := 1 To len8 Do
   Begin
      zeronetochar8(g, copy(str2, 1, 8));
      str256 := str256 + g;
      delete(str2, 1, 8);
   End;
End;

Procedure Base256to32(str256 : String; Var str32 : String);
Var
   i, len5{,iMod }: longint;
   g : integer;
   str2:string;
   temp:char;
Begin
   ConvertBase256To2(str256,str2);
   str32 := '';
   str2:=str2+'0';
   {iMod:=length(str2) mod 5;
   For i:=0 To iMod Do
   Begin
     str2:=str2+'0';
   End; }
   len5 := length(str2) Div 5;
   For i := 1 To len5 Do
   Begin
      zeronetochar5(g, copy(str2, 1, 5));
      temp:=chr32[g];
      {if temp='V' then temp:='U';
      if temp='1' then temp:='L';
      if temp='2' then temp:='Y';
      if temp='3' then temp:='E';
      if temp='4' then temp:='A';
      if temp='5' then temp:='S';
      if temp='6' then temp:='G';
      if temp='7' then temp:='J';
      if temp='8' then temp:='B';
      if temp='9' then temp:='F';}
      str32 := str32 + temp;
      delete(str2, 1, 5);
   End;
End;

procedure TForm1.Button1Click(Sender: TObject);
var
  HugeIntP,HugeIntQ,HugeIntN,HugeIntPhi,HugeIntE,HugeIntD,HugeInt_NULL:TFGInt;
  str_Orig,str_Temp1,str_Temp2,str_Temp3,str_Hash,string_E,string_Name,string_Company,string_SN,string_User:string;
  str_32,str_256,str_2:string;
  i,j,k,iMod:Integer;
  bool_find:boolean;
  chr_Temp:Char;
  str_Re1,str_Re2:String;
  Reg: TRegistry;
begin
  Base10StringToFGInt('72378278544376610161864186209559902527',HugeIntN);
  Base10StringToFGInt('55224941890616846913011184334819912063',HugeIntD);
  Base10StringToFGInt('8691021235324000873',HugeIntP);
  Base10StringToFGInt('8327937141633085799',HugeIntQ);
  HugeIntP.Number[1]:=HugeIntP.Number[1]-1;
  HugeIntQ.Number[1]:=HugeIntQ.Number[1]-1;
  FGIntMul(HugeIntP,HugeIntQ,HugeIntPhi);
  FGIntModInv(HugeIntD,HugeIntPhi,HugeIntE);
  FGIntToBase10String(HugeIntE,string_E);
  //Edit1.Text:=string_E;
  string_Name:=Edit1.Text;
  string_Name:=Trim(string_Name);
  string_Name:=LowerCase(string_Name);
  string_Company:=Edit2.Text;
  string_Company:=Trim(string_Company);
  string_Company:=LowerCase(string_Company);
  string_User:=string_Name+'|'+string_Company;
  string_User:=PreprocessUserData(string_User);
  string_User:=string_User+'+'+'TU2006';
  str_Hash:=HashUserData(string_User);
  str_Orig:=#00#00#6#1#00+str_Hash;
  For j:=0 To 255 Do
  Begin
    For k:=0 To 255 Do
    Begin
      For i:=0 To 31 Do
        Begin
          RSAEncrypt(str_Orig,HugeIntE,HugeIntN,str_Temp1);
          if strlen(PAnsiChar(str_Temp1))<>15 then
          begin
            str_Temp1:='';
            Inc(str_Orig[5]);
          end
          else
          begin
            bool_find:=True;
            Break;
          end
        End;
      If bool_find=True then
        Break
      else
      Inc(str_Orig[2]);
    End;
    If bool_find=True then
        Break
      else
    Inc(str_Orig[1]);
  End;
  str_Orig:=str_Temp1+CalcShortHash(str_Temp1+#32#36#65);
  Base256To32(str_Orig,str_32);
  chr_Temp:=str_32[12];
  iMod:=Ord(chr_Temp) mod 29;
  chr_Temp:=str_32[iMod+1];
  iMod:=Ord(chr_Temp) mod 15;
  iMod:=iMod+iMod+1;
  chr_Temp:=chr32[iMod];
  
  Randomize;
  iMod:=RandomRange(1,32);
  
  str_32:=str_32+chr32[iMod];
  iMod:=RandomRange(1,32);
  
  str_32:=str_32+chr32[iMod]+chr_Temp;
  Insert('-',str_32,6);
  Insert('-',str_32,12);
  Insert('-',str_32,18);
  Insert('-',str_32,24);
  Insert('-',str_32,30);
  Edit3.Text:=str_32;
  Reg:=TRegistry.Create;
  try
    Reg.RootKey:=HKEY_CURRENT_USER;
    Reg.OpenKey('Software\TuneUp\Utilities\5.0',true);
    Reg.WriteString('RegCode',str_32);
    str_Re1:=Reg.ReadString('RegCode');
  finally
    Reg.Free;
    Edit4.Text:= str_Re1;
  end;
end;
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dINO 2006-1-6 14:08
17
0
最初由 cnbragon 发布


呵呵,这个是一年前写的贴子,又被顶出来了。

关于Tuneup utilities 2006给出它的注册机部分源码,算是对各犹未尽玩家的补充吧
........


辛苦~~~
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2001nman 2006-1-7 16:12
18
0
有水平!佩服.学习学习.
雪    币: 214
活跃值: (100)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
randomizer 2 2006-1-13 15:15
19
0
请问版主ThashManager这个类在哪里能找到 ?
雪    币: 214
活跃值: (100)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
randomizer 2 2006-1-18 17:15
20
0
请问各位THashManager这个类在哪里能找到 ?
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
cnbragon 18 2006-1-19 13:26
21
0
最初由 randomizer 发布
请问各位THashManager这个类在哪里能找到 ?


DEC-Delphi Encryption Component
雪    币: 214
活跃值: (100)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
randomizer 2 2006-1-20 09:38
22
0
谢谢版主。
不过文中的ConvertBase32To2ConvertBase256To2在哪里能找到啊?
游客
登录 | 注册 方可回帖
返回