首页
社区
课程
招聘
[原创]lelfei's Game CrackMe 01----破文+注册机 [***算我菜鸟什么也没说:)***
发表于: 2007-10-21 21:33 6846

[原创]lelfei's Game CrackMe 01----破文+注册机 [***算我菜鸟什么也没说:)***

2007-10-21 21:33
6846
呵呵,学了一小部分汇编以后果然比以前顺手多了:)

这是我的第一次很完整的独立做的算法分析,所以还希望请各位指教

首先用DeDeDark分析,DELPHI^-^呵呵
载入OD

004541EC > .  55            PUSH EBP                                 ;  <-TForm1@Button1Click
004541ED   .  8BEC          MOV EBP,ESP
004541EF   .  B9 49000000   MOV ECX,49
004541F4   >  6A 00         PUSH 0
004541F6   .  6A 00         PUSH 0
004541F8   .  49            DEC ECX
004541F9   .^ 75 F9         JNZ SHORT GameCM01.004541F4
004541FB   .  53            PUSH EBX
004541FC   .  56            PUSH ESI                                 ;  GameCM01.0042CC54
004541FD   .  57            PUSH EDI
004541FE   .  8BD8          MOV EBX,EAX
00454200   .  33C0          XOR EAX,EAX
00454202   .  55            PUSH EBP
00454203   .  68 05454500   PUSH <GameCM01.->System.@HandleFinally;>
00454208   .  64:FF30       PUSH DWORD PTR FS:[EAX]
0045420B   .  64:8920       MOV DWORD PTR FS:[EAX],ESP
0045420E   .  8D95 E0FDFFFF LEA EDX,DWORD PTR SS:[EBP-220]
00454214 > .  8B83 FC020000 MOV EAX,DWORD PTR DS:[EBX+2FC]           ;  *Edit1:TEdit
0045421A > .  E8 F1EEFDFF   CALL GameCM01.00433110                   ;  ->Controls.TControl.GetText(TControl):TCaption;
0045421F   .  8B85 E0FDFFFF MOV EAX,DWORD PTR SS:[EBP-220]           ;  [ebp-220]=edit1
00454225 > .  E8 B202FBFF   CALL GameCM01.004044DC                   ;  ->System.@LStrLen(String):Integer;<+>
0045422A   .  85C0          TEST EAX,EAX
0045422C   .  0F8E A5020000 JLE GameCM01.004544D7                    ;  when eax=0, then game over
00454232   .  8D95 DCFDFFFF LEA EDX,DWORD PTR SS:[EBP-224]
00454238 > .  8B83 04030000 MOV EAX,DWORD PTR DS:[EBX+304]           ;  *Edit2:TEdit
0045423E > .  E8 CDEEFDFF   CALL GameCM01.00433110                   ;  ->Controls.TControl.GetText(TControl):TCaption;
00454243   .  8B85 DCFDFFFF MOV EAX,DWORD PTR SS:[EBP-224]           ;  falsecode([ebp-224])
00454249 > .  E8 8E02FBFF   CALL GameCM01.004044DC                   ;  ->System.@LStrLen(String):Integer;<+>
0045424E   .  83F8 09       CMP EAX,9                                ;  len(edit2)<9?
00454251   .  0F8C 80020000 JL GameCM01.004544D7                     ;  over
00454257   .  33FF          XOR EDI,EDI                              ;  edi=0
00454259   .  55            PUSH EBP
0045425A   .  68 B1444500   PUSH <GameCM01.->System.@HandleAnyExcept>
0045425F   .  64:FF37       PUSH DWORD PTR FS:[EDI]
00454262   .  64:8927       MOV DWORD PTR FS:[EDI],ESP               ;  SEH的事情
00454265   .  8D95 D8FDFFFF LEA EDX,DWORD PTR SS:[EBP-228]
0045426B > .  8B83 FC020000 MOV EAX,DWORD PTR DS:[EBX+2FC]           ;  *Edit1:TEdit
00454271 > .  E8 9AEEFDFF   CALL GameCM01.00433110                   ;  ->Controls.TControl.GetText(TControl):TCaption;
00454276   .  8B95 D8FDFFFF MOV EDX,DWORD PTR SS:[EBP-228]           ;  len edit1
0045427C   .  8D85 E4FEFFFF LEA EAX,DWORD PTR SS:[EBP-11C]
00454282   .  B9 FF000000   MOV ECX,0FF
00454287 > .  E8 2C02FBFF   CALL GameCM01.004044B8                   ;  ->System.@LStrToString;
0045428C   .  8D95 D4FDFFFF LEA EDX,DWORD PTR SS:[EBP-22C]
00454292 > .  8B83 04030000 MOV EAX,DWORD PTR DS:[EBX+304]           ;  *Edit2:TEdit
00454298 > .  E8 73EEFDFF   CALL GameCM01.00433110                   ;  ->Controls.TControl.GetText(TControl):TCaption;
0045429D   .  8B95 D4FDFFFF MOV EDX,DWORD PTR SS:[EBP-22C]           ;  //用户名
004542A3   .  8D85 E4FDFFFF LEA EAX,DWORD PTR SS:[EBP-21C]
004542A9   .  B9 FF000000   MOV ECX,0FF
004542AE > .  E8 0502FBFF   CALL GameCM01.004044B8                   ;  ->System.@LStrToString;
004542B3   .  33C0          XOR EAX,EAX
004542B5   .  8945 F8       MOV DWORD PTR SS:[EBP-8],EAX
004542B8   .  EB 4B         JMP SHORT GameCM01.00454305
004542BA   >  8D85 D0FDFFFF LEA EAX,DWORD PTR SS:[EBP-230]           ;  copy 自己到下一字节(Love12==>Love12Love12)
004542C0   .  8D95 E4FEFFFF LEA EDX,DWORD PTR SS:[EBP-11C]
004542C6 > .  E8 B501FBFF   CALL GameCM01.00404480                   ;  ->System.@LStrFromString(String;String;ShortString;ShortString);<+>
004542CB   .  8D85 D0FDFFFF LEA EAX,DWORD PTR SS:[EBP-230]
004542D1   .  50            PUSH EAX
004542D2   .  8D85 CCFDFFFF LEA EAX,DWORD PTR SS:[EBP-234]
004542D8   .  8D95 E4FEFFFF LEA EDX,DWORD PTR SS:[EBP-11C]
004542DE > .  E8 9D01FBFF   CALL GameCM01.00404480                   ;  ->System.@LStrFromString(String;String;ShortString;ShortString);<+>
004542E3   .  8B95 CCFDFFFF MOV EDX,DWORD PTR SS:[EBP-234]
004542E9   .  58            POP EAX
004542EA > .  E8 F501FBFF   CALL GameCM01.004044E4                   ;  ->System.@LStrCat;
004542EF   .  8B95 D0FDFFFF MOV EDX,DWORD PTR SS:[EBP-230]
004542F5   .  8D85 E4FEFFFF LEA EAX,DWORD PTR SS:[EBP-11C]
004542FB   .  B9 FF000000   MOV ECX,0FF
00454300 > .  E8 B301FBFF   CALL GameCM01.004044B8                   ;  ->System.@LStrToString;
00454305   >  80BD E4FEFFFF>CMP BYTE PTR SS:[EBP-11C],9
0045430C   .^ 72 AC         JB SHORT GameCM01.004542BA               ;  <=9?
0045430E   .  BE 01000000   MOV ESI,1
00454313   .  8D85 E5FEFFFF LEA EAX,DWORD PTR SS:[EBP-11B]           ;  EAX指向储存用户名的[EBP-11B]
00454319   .  8945 E8       MOV DWORD PTR SS:[EBP-18],EAX            ;  [EBP-18]=用户名的地址
0045431C   .  8D85 E5FDFFFF LEA EAX,DWORD PTR SS:[EBP-21B]
00454322   .  8945 E4       MOV DWORD PTR SS:[EBP-1C],EAX            ;  [EBP-1C]=密码的地址
00454325   .  8D4D EF       LEA ECX,DWORD PTR SS:[EBP-11]            ;  ecx=ebp-11的地址
00454328   >  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]            ;  用户名的地址
0045432B   .  0FB600        MOVZX EAX,BYTE PTR DS:[EAX]              ;  取用户名第一位
0045432E   .  8B55 E4       MOV EDX,DWORD PTR SS:[EBP-1C]            ;  密码的地址
00454331   .  0FB612        MOVZX EDX,BYTE PTR DS:[EDX]              ;  取密码第一位
00454334   .  2BC2          SUB EAX,EDX                              ;  eax=eax-edx
00454336   .  99            CDQ                                      ;   把 EAX 扩展,成为 EDX:EAX 的 QWORD(64 位长)
00454337   .  33C2          XOR EAX,EDX
00454339   .  2BC2          SUB EAX,EDX                              ;  这一段是取密码,用户名的第N位的差的绝对值
0045433B   .  8801          MOV BYTE PTR DS:[ECX],AL                 ;  差存在[ecx](13f94b)里面
0045433D   .  8BD6          MOV EDX,ESI                              ;  edx=esi
0045433F   .  4A            DEC EDX
00454340   .  83EA 02       SUB EDX,2                                ;  edx=edx-3
00454343   .  7C 27         JL SHORT GameCM01.0045436C               ;  如果不是负数(ZF<>0F,没出来),也就是位数>=3
00454345   .  42            INC EDX                                  ;  edx=edx+1
00454346   .  C745 FC 02000>MOV DWORD PTR SS:[EBP-4],2               ;  [EBP-4]=[13F958]=2
0045434D   .  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]            ;  上一次的差的地址到EAX中
00454350   >  8A18          MOV BL,BYTE PTR DS:[EAX]                 ;  BL=上(指针)次的差
00454352   .  3A19          CMP BL,BYTE PTR DS:[ECX]                 ;  如果上(指针)次的差<>这次的差
00454354   .  75 0F         JNZ SHORT GameCM01.00454365
00454356   .  64:8F05 00000>POP DWORD PTR FS:[0]
0045435D   .  83C4 08       ADD ESP,8
00454360   .  E9 72010000   JMP GameCM01.004544D7                    ;  go to hell 见鬼
00454365   >  FF45 FC       INC DWORD PTR SS:[EBP-4]                 ;  [ebp-4]=[ebp-4]+1
00454368   .  40            INC EAX                                  ;  eax=eax+1,记录指针+1
00454369   .  4A            DEC EDX                                  ;  edx=edx-1
0045436A   .^ 75 E4         JNZ SHORT GameCM01.00454350              ;  如果EDX=0 then..变形CMP,意思是循环(指针-2)次
0045436C   >  46            INC ESI                                  ;  inc(位数),解释上面循环,就是每次的差都各不相同
0045436D   .  41            INC ECX                                  ;  inc ecx,结合上面,每次存差的地址+1
0045436E   .  FF45 E4       INC DWORD PTR SS:[EBP-1C]                ;  密码地址+1
00454371   .  FF45 E8       INC DWORD PTR SS:[EBP-18]                ;  用户名位置+1
00454374   .  83FE 0A       CMP ESI,0A                               ;  如果位数<>10
00454377   .^ 75 AF         JNZ SHORT GameCM01.00454328              ;  跳啊!
00454379   .  33C0          XOR EAX,EAX                              ;  终于出来了~EAX=0,常规性清0
0045437B   .  8A45 F1       MOV AL,BYTE PTR SS:[EBP-F]               ;  al=第3个差
0045437E   .  33D2          XOR EDX,EDX                              ;  edx=0
00454380   .  8A55 F3       MOV DL,BYTE PTR SS:[EBP-D]               ;  dl=第5个差
00454383   .  03C2          ADD EAX,EDX                              ;  ax=第3个差+第5个差
00454385   .  33D2          XOR EDX,EDX
00454387   .  8A55 F5       MOV DL,BYTE PTR SS:[EBP-B]               ;  dl=第7个差
0045438A   .  03C2          ADD EAX,EDX                              ;  ax=第3个差+第5个差+第7个差
0045438C   .  83F8 0F       CMP EAX,0F                               ;  如果是16的话(汗~)
0045438F   .  74 03         JE SHORT GameCM01.00454394               ;  跳
00454391      FF45 F8       INC DWORD PTR SS:[EBP-8]                 ;  标志:(ebp-8)=1
00454394   >  66:C785 E4FEF>MOV WORD PTR SS:[EBP-11C],4B01           ;  强制将用户名头4个字节改为014b
0045439D   .  BE 01000000   MOV ESI,1                                ;  esi=1
004543A2   .  8D45 EF       LEA EAX,DWORD PTR SS:[EBP-11]            ;  eax=差的序列的开始指针
004543A5   >  8BD6          MOV EDX,ESI                              ;  又是一个循环……吐血 edx=esi
004543A7   .  4A            DEC EDX
004543A8   .  8D1452        LEA EDX,DWORD PTR DS:[EDX+EDX*2]         ;  无用功,edx=edx*3
004543AB   .  33C9          XOR ECX,ECX                              ;  ecx=0
004543AD   .  8A4C15 EF     MOV CL,BYTE PTR SS:[EBP+EDX-11]          ;  cl=第(esi*3-2)次的差
004543B1   .  33DB          XOR EBX,EBX                              ;  ebx=0,看样子大动工啊:)
004543B3   .  8A5C15 F0     MOV BL,BYTE PTR SS:[EBP+EDX-10]          ;  bl=第(esi*3-1)次的差
004543B7   .  03CB          ADD ECX,EBX                              ;  ecx=ecx+ebx
004543B9   .  0FB65415 F1   MOVZX EDX,BYTE PTR SS:[EBP+EDX-F]        ;  取第ESI*3个
004543BE   .  03CA          ADD ECX,EDX                              ;  ecx=ecx+edx
004543C0   .  83F9 0F       CMP ECX,0F                               ;  如果ECX=16的话
004543C3   .  74 03         JE SHORT GameCM01.004543C8               ;  走
004543C5      FF45 F8       INC DWORD PTR SS:[EBP-8]                 ;  又一个标志-_-
004543C8   >  33D2          XOR EDX,EDX                              ;  edx=0
004543CA   .  8A10          MOV DL,BYTE PTR DS:[EAX]                 ;  dl=第ESI个差
004543CC   .  33C9          XOR ECX,ECX
004543CE   .  8A48 03       MOV CL,BYTE PTR DS:[EAX+3]               ;  Cl=第ESI+3个差
004543D1   .  03D1          ADD EDX,ECX                              ;  EDX=EDX+ECX
004543D3   .  33C9          XOR ECX,ECX
004543D5   .  8A48 06       MOV CL,BYTE PTR DS:[EAX+6]               ;  CL=第ESI+6个差
004543D8   .  03D1          ADD EDX,ECX                              ;  edx=edx+ecx
004543DA   .  83FA 0F       CMP EDX,0F                               ;  又是一个标志……
004543DD   .  74 03         JE SHORT GameCM01.004543E2
004543DF      FF45 F8       INC DWORD PTR SS:[EBP-8]
004543E2   >  46            INC ESI                                  ;  循环次数+1
004543E3   .  40            INC EAX                                  ;  指针+1
004543E4   .  83FE 04       CMP ESI,4                                ;  到4次的出去
004543E7   .^ 75 BC         JNZ SHORT GameCM01.004543A5
004543E9   .  8D85 C8FDFFFF LEA EAX,DWORD PTR SS:[EBP-238]
004543EF   .  8D95 E4FEFFFF LEA EDX,DWORD PTR SS:[EBP-11C]
004543F5 > .  E8 8600FBFF   CALL GameCM01.00404480                   ;  ->System.@LStrFromString(String;String;ShortString;ShortString);<+>
004543FA   .  8D85 C8FDFFFF LEA EAX,DWORD PTR SS:[EBP-238]
00454400   .  BA 1C454500   MOV EDX,GameCM01.0045451C                ;  !
00454405 > .  E8 DA00FBFF   CALL GameCM01.004044E4                   ;  ->System.@LStrCat;
0045440A   .  8B95 C8FDFFFF MOV EDX,DWORD PTR SS:[EBP-238]
00454410   .  8D85 E4FEFFFF LEA EAX,DWORD PTR SS:[EBP-11C]           ;  第2位变成"!"???
00454416   .  B9 FF000000   MOV ECX,0FF
0045441B > .  E8 9800FBFF   CALL GameCM01.004044B8                   ;  ->System.@LStrToString;
00454420   .  33C0          XOR EAX,EAX                              ;  将第2位变成!,前两位CONST='K!',最前面一项=0
00454422   .  8A45 EF       MOV AL,BYTE PTR SS:[EBP-11]              ;  al 第一个差
00454425   .  33D2          XOR EDX,EDX
00454427   .  8A55 F3       MOV DL,BYTE PTR SS:[EBP-D]               ;  dl 第5个差
0045442A   .  03C2          ADD EAX,EDX                              ;  eax=eax+edx
0045442C   .  33D2          XOR EDX,EDX
0045442E   .  8A55 F7       MOV DL,BYTE PTR SS:[EBP-9]               ;  dl 第9个差
00454431   .  03C2          ADD EAX,EDX                              ;  eax=eax+edx
00454433   .  83F8 0F       CMP EAX,0F
00454436   .  74 03         JE SHORT GameCM01.0045443B               ;  标志
00454438      FF45 F8       INC DWORD PTR SS:[EBP-8]
0045443B   >  8D85 C0FDFFFF LEA EAX,DWORD PTR SS:[EBP-240]           ;  目前一片空白……
00454441   .  8D95 E4FEFFFF LEA EDX,DWORD PTR SS:[EBP-11C]           ;  密码....
00454447 > .  E8 3400FBFF   CALL GameCM01.00404480                   ;  ->System.@LStrFromString(String;String;ShortString;ShortString);<+>
0045444C   .  8B8D C0FDFFFF MOV ECX,DWORD PTR SS:[EBP-240]           ;  刚才的空白变成了7C4BE3??
00454452   .  8D85 C4FDFFFF LEA EAX,DWORD PTR SS:[EBP-23C]           ;  又是一片空白
00454458   .  BA 28454500   MOV EDX,GameCM01.00454528                ;  o
0045445D > .  E8 C600FBFF   CALL GameCM01.00404528                   ;  ->System.@LStrCat3;
00454462   .  8B95 C4FDFFFF MOV EDX,DWORD PTR SS:[EBP-23C]           ;  空白又变成了8c4be3
00454468   .  8D85 E4FEFFFF LEA EAX,DWORD PTR SS:[EBP-11C]
0045446E   .  B9 FF000000   MOV ECX,0FF
00454473 > .  E8 4000FBFF   CALL GameCM01.004044B8                   ;  ->System.@LStrToString;
00454478   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  7c和8C的ASCII。。。EDX ASCII "OK!...."
0045447B   .  99            CDQ                                      ;  上面的MOV:还记得之前的EBP-4吗。。
0045447C      F77D F8       IDIV DWORD PTR SS:[EBP-8]                ;  eax=eax / [ebp-8] 如果EBP-8=0(HAN~)就OK
0045447F      8BF0          MOV ESI,EAX
00454481      8D95 BCFDFFFF LEA EDX,DWORD PTR SS:[EBP-244]           ;  空白区域
00454487   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  9
0045448A   .  03C6          ADD EAX,ESI                              ;  eax=eax+eax / [ebp-8]
0045448C > .  E8 233DFBFF   CALL GameCM01.004081B4                   ;  ->SysUtils.IntToStr(Integer):AnsiString;overload;
00454491   .  8B95 BCFDFFFF MOV EDX,DWORD PTR SS:[EBP-244]
00454497   .  8D85 E4FDFFFF LEA EAX,DWORD PTR SS:[EBP-21C]           ;  纯洁的密码……
0045449D   .  B9 FF000000   MOV ECX,0FF
004544A2 > .  E8 1100FBFF   CALL GameCM01.004044B8                   ;  ->System.@LStrToString;
004544A7   .  33C0          XOR EAX,EAX                              ;  上来就把前2位纯洁的覆盖掉了-_-
004544A9   .  5A            POP EDX
004544AA   .  59            POP ECX
004544AB   .  59            POP ECX                                  ;  SEH准备..
004544AC   .  64:8910       MOV DWORD PTR FS:[EAX],EDX
004544AF      EB 26         JMP SHORT GameCM01.004544D7
004544B1 >  ^ E9 8EF4FAFF   JMP GameCM01.00403944                    ;  ->System.@HandleAnyException;
004544B6   .  8D85 B8FDFFFF LEA EAX,DWORD PTR SS:[EBP-248]
004544BC   .  8D95 E4FEFFFF LEA EDX,DWORD PTR SS:[EBP-11C]
004544C2 > .  E8 B9FFFAFF   CALL GameCM01.00404480                   ;  ->System.@LStrFromString(String;String;ShortString;ShortString);<+>
004544C7   .  8B85 B8FDFFFF MOV EAX,DWORD PTR SS:[EBP-248]
004544CD > .  E8 5E35FDFF   CALL GameCM01.00427A30                   ;  ->Dialogs.ShowMessage(AnsiString);  完成使命
004544D2 > .  E8 D5F7FAFF   CALL GameCM01.00403CAC                   ;  ->System.@DoneExcept;
004544D7   >  33C0          XOR EAX,EAX

吐血!花了我大约4个小时。主要原因是我太菜了…………

总结一下算法。

1 如果注册名长度<9 then 注册名不断复制自己,直到长度超过9
2 判断注册号长度,<>9去死
3 abs(asc(每位注册号)-asc(每位注册名)),存入数组
4 双循环,如果数组中有相等的量且当前位数>3,去死!
5 判断
差数组中的元素
1,2,3  =15
1,4,7  =15
2,5,8  =15
3,6,9  =15
1,5,9  =15
3,5,7  =15
(例:1 2 3=15意思是数组中的1 2 3的和是否为15,就是说abs(asc(1,3,5)-asc(1,3,5))是否为15)
6 如果其中有1个不是15,就把标志+1
7 最后用一个中间迷惑你的数除以标志,如果这个数<>0,就进不了SEH,就注册失败

虽说这是个不定方程,也有很多组解。但是我被折磨得够戗,所以简单写了个求1组的程序
Private Sub Command1_Click()
For a1 = 1 To 9
For a2 = 1 To 9
  For a3 = 1 To 9
   For a4 = 1 To 9
    For a5 = 1 To 9
     For a6 = 1 To 9
      For a7 = 1 To 9
       For a8 = 1 To 9
        a9 = 45 - (a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8)
         If a1 + a2 + a3 = 15 And a1 + a4 + a7 = 15 And a2 + a5 + a8 = 15 And a3 + a6 + a9 = 15 And a1 + a5 + a9 = 15 And a3 + a5 + a7 = 15 Then
          If a9 > 0 And a1 * a2 * a3 * a4 * a5 * a6 * a7 * a8 * a9 = 362880 Then
           Open App.Path + "\ok.txt" For Append As #1
             Print #1, a1, a2, a3, a4, a5, a6, a7, a8, a9
           Close #1
           MsgBox "finish!"
           Exit Sub
          End If
         End If
        
       Next
      Next
     Next
    Next
   Next
  Next
Next
Next
End Sub

最后得出一组解是276951438,再编个注册机就OK了:)

注册机代码:
=================
Dim dddx(1000), dddx2(1000), dddx3(1000)
Function ok(s1 As String, s2 As String) '差重复吗?
'If s1 > s2 Then
'w = s1
's1 = s2
's2 = w
'End If
For i = 1 To Len(s2)
  dddx(i) = Asc(Mid(s1, i, 1))
  dddx2(i) = Asc(Mid(s2, i, 1))
  dddx3(i) = Abs(dddx(i) - dddx2(i))
Next
ok = True
For i = 1 To Len(s2)
  For j = i + 1 To Len(s2)
   If dddx3(i) = dddx3(j) Then
   ok = False
   

   End If
  Next
Next

End Function
Private Sub Command1_Click()
Dim tx As String, x As String
1 Randomize
ab = Text1.Text
'For i = 1 To 9
'pp = Int(Rnd * 24) + 65
'Debug.Print pp
'ab = ab + Chr(pp)
'Next
'276951438
tx = ab + ab + ab + ab + ab + ab + ab + ab + ab
tx = Mid(tx, 1, 9)
Randomize
did = Int(Rnd * 2) + 1
If did = 2 Then did = -1
x11 = Chr(Asc(Mid(tx, 1, 1)) + 2 * did)

Randomize
did = Int(Rnd * 2) + 1
If did = 2 Then did = -1
x12 = Chr(Asc(Mid(tx, 2, 1)) + 7 * did)

Randomize
did = Int(Rnd * 2) + 1
If did = 2 Then did = -1
x13 = Chr(Asc(Mid(tx, 3, 1)) + 6 * did)

Randomize
did = Int(Rnd * 2) + 1
If did = 2 Then did = -1
x14 = Chr(Asc(Mid(tx, 4, 1)) + 9 * did)

Randomize
did = Int(Rnd * 2) + 1
If did = 2 Then did = -1
x15 = Chr(Asc(Mid(tx, 5, 1)) + 5 * did)

Randomize
did = Int(Rnd * 2) + 1
If did = 2 Then did = -1
x16 = Chr(Asc(Mid(tx, 6, 1)) + 1 * did)

Randomize
did = Int(Rnd * 2) + 1
If did = 2 Then did = -1
x17 = Chr(Asc(Mid(tx, 7, 1)) + 4 * did)

Randomize
did = Int(Rnd * 2) + 1
If did = 2 Then did = -1
x18 = Chr(Asc(Mid(tx, 8, 1)) + 3 * did)

Randomize
did = Int(Rnd * 2) + 1
If did = 2 Then did = -1
x19 = Chr(Asc(Mid(tx, 9, 1)) + 8 * did)
x = x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19
w = ok(tx, x)

If w = False Then
dds = dds + 1
If dds >= 20 Then MsgBox "您输入的注册号获得验证码的几率渺茫……停止运算!", vbExclamation: Exit Sub
GoTo 1
End If

Text1.Text = ab
Text2.Text = x
End Sub

Private Sub Command2_Click()
MsgBox "Leifei's game crackme 01 Patch!" + vbCrLf + vbCrLf + "Build by NONAME剑人", vbExclamation
End Sub

Private Sub Form_Resize()
If Me.Height <> 2415 Then Me.Height = 2415
If Me.Width <> 4710 Then Me.Width = 4710
End Sub
==========================

这是我的第一篇真正完全靠自己破解的CM/软件,希望+精,谢谢:)

附:2组注册码:
User Name:NoNameSwordMan
Serial Sum:LhTXhdOtg

User Name:bbs.pediy.com
Serial:dim%kd`f

==========================
谢谢大家:)
                                                                                        2007-10-21

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 740
活跃值: (952)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
2
补上EXE注册机及相关用到的内容
上传的附件:
2007-10-21 21:40
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
很好,很详细 ,顶
2007-10-21 22:22
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
还是很多看不懂,学了多久呀??

我算法不会呀,给我说说,谢谢
2007-10-21 22:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢  不错
2007-10-21 23:04
0
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
6
3*3的格子

填入1-9的数字后,横,竖,斜之和=15即可!
这是那什么游戏来着!以前玩过!
2007-10-22 13:06
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
7
河图洛书八卦...
2007-10-22 13:32
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
8
恭喜!在不知道游戏原型的情况下解题,确实很麻烦~

PS:lelfei's Game CrackMe 02新鲜出炉,欢迎继续尝试!
2007-10-22 22:30
0
雪    币: 347
活跃值: (30)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
9
九宫格
2007-10-24 19:43
0
雪    币: 242
活跃值: (1664)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
10
分析的很详细,学习
2007-10-24 19:47
0
雪    币: 148
活跃值: (25)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
支持楼主.
2007-11-3 08:31
0
雪    币: 390
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习中....看来我还得继续潜水了,我只能找出明码比较的,这种对我来说还是很难了!
楼主还挺谦虚了 嘿嘿!算是大虾了
2007-11-3 10:07
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
LZ愈来愈厉害了!佩服
2007-11-3 15:55
0
雪    币: 177
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14

LZ太厉害了
我回去继续学习了~~
不懂算法~~
2007-11-3 19:34
0
游客
登录 | 注册 方可回帖
返回
//