name:ftldbp

sn:KFYTQlIDGBUP


首先用户名得是6位  并且为小写字母   并且不能出现 a  z等。这个简单。

然后就到了

401e07处   这里是处理算法的call    f7进去


就到了401bb0处  这里有一些花指令  可以不用管 只当是nop指令

然后这里对用户名和注册码 做了些限制

就是user1+0x1b=sn1 
     user2+0x1b=sn3
    user3+0x1b=sn5
   user4+0x1b=sn7
  user5+0x1b=sn9
user6+0x1b=sn11

   user1+0x20>=sn2
     user2+0x20>=sn4
    user3+0x20>=sn6
   user4+0x20>=sn8
  user5+0x20>=sn10
user6+0x20>=sn12

这里验证过了 就来到一个异常地方  是写非法内存异常。

另外还有一个anti  的call  就是call 004019f0   可以先把他NOP掉  并把4019f0这个CALL东西都NOP

下面就是那个异常处理程序了

直接在那下断 并且在下面  401c9e下段  然后F9   F9

就走到这了
00401C9E   > \C745 FC FFFFF>MOV DWORD PTR SS:[EBP-4],-1
00401CA5   .  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
00401CA8   .  64:890D 00000>MOV DWORD PTR FS:[0],ECX
00401CAF   .  5F            POP EDI
00401CB0   .  5E            POP ESI
00401CB1   .  5B            POP EBX
00401CB2   .  8BE5          MOV ESP,EBP
00401CB4   .  5D            POP EBP
00401CB5   .  C3            RET
00401CB6      CC            INT3

然后f8下来就到这了

004017F0   .  55            PUSH EBP
004017F1   .  8BEC          MOV EBP,ESP
004017F3   .  81EC 80000000 SUB ESP,80
004017F9   .  53            PUSH EBX
004017FA   .  56            PUSH ESI
004017FB   .  57            PUSH EDI
004017FC   .  C745 FC 88354>MOV DWORD PTR SS:[EBP-4],cm2.00403588    ;  ASCII "ABCDEFGHIJKLMNOPQRSTUVWXY"
00401803   .  50            PUSH EAX
00401804   .  33C0          XOR EAX,EAX
00401806   .  E8 00000000   CALL cm2.0040180B
0040180B   $  58            POP EAX
0040180C   .  57            PUSH EDI
0040180D   .  8D78 04       LEA EDI,DWORD PTR DS:[EAX+4]
00401810   .  58            POP EAX
00401811   .  5F            POP EDI
00401812   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00401815   .  8945 F8       MOV DWORD PTR SS:[EBP-8],EAX
00401818   .  C745 D8 00000>MOV DWORD PTR SS:[EBP-28],0
0040181F   >  837D D8 18    CMP DWORD PTR SS:[EBP-28],18


走到这后发现 不论怎么走都得走到这里



004018BB   > \6A 00         PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
004018BD   .  68 60354000   PUSH cm2.00403560                        ; |Title = "错了!"
004018C2   .  68 54354000   PUSH cm2.00403554                        ; |Text = "继续努力!"
004018C7   .  0FBE0D F64040>MOVSX ECX,BYTE PTR DS:[4040F6]           ; |
004018CE   .  83E9 55       SUB ECX,55                               ; |
004018D1   .  F7D9          NEG ECX                                  ; |
004018D3   .  1BC9          SBB ECX,ECX                              ; |
004018D5   .  41            INC ECX                                  ; |
004018D6   .  51            PUSH ECX                                 ; |hOwner
004018D7   .  FF15 00324000 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
004018DD   .  8945 D8       MOV DWORD PTR SS:[EBP-28],EAX
004018E0   .  837D D8 00    CMP DWORD PTR SS:[EBP-28],0
004018E4   .  74 15         JE SHORT cm2.004018FB
004018E6   .  FF15 20304000 CALL DWORD PTR DS:[<&KERNEL32.GetCurrent>; [GetCurrentProcess

不过4018d7走完后  要看eax的取值  如果为0 就可以接着往下走


这时发现有这么一句
MOVSX ECX,BYTE PTR DS:[4040F6] 
SUB ECX,55


那么只要用户名最后一位为p即可。

这样就可以来到下面

004018FB   > \C745 D8 00000>MOV DWORD PTR SS:[EBP-28],0
00401902   .  C745 D0 05000>MOV DWORD PTR SS:[EBP-30],5
00401909   .  C745 CC 00000>MOV DWORD PTR SS:[EBP-34],0
00401910   >  837D D8 0C    CMP DWORD PTR SS:[EBP-28],0C
00401914   .  0F84 BB000000 JE cm2.004019D5
0040191A   .  8B45 D0       MOV EAX,DWORD PTR SS:[EBP-30]
0040191D   .  8D0C85 FCFFFF>LEA ECX,DWORD PTR DS:[EAX*4-4]
00401924   .  894D C8       MOV DWORD PTR SS:[EBP-38],ECX
00401927   >  8B55 D8       MOV EDX,DWORD PTR SS:[EBP-28]
0040192A   .  0FBE82 EC4040>MOVSX EAX,BYTE PTR DS:[EDX+4040EC]
00401931   .  8B4D C8       MOV ECX,DWORD PTR SS:[EBP-38]
00401934   .  0FBE540D DC   MOVSX EDX,BYTE PTR SS:[EBP+ECX-24]
00401939   .  8B4D C8       MOV ECX,DWORD PTR SS:[EBP-38]
0040193C   .  83C1 01       ADD ECX,1
0040193F   .  894D C8       MOV DWORD PTR SS:[EBP-38],ECX
00401942   .  3BC2          CMP EAX,EDX
00401944   .  74 13         JE SHORT cm2.00401959
00401946   .  8B55 CC       MOV EDX,DWORD PTR SS:[EBP-34]
00401949   .  83C2 01       ADD EDX,1
0040194C   .  8955 CC       MOV DWORD PTR SS:[EBP-34],EDX
0040194F   .  837D CC 04    CMP DWORD PTR SS:[EBP-34],4
00401953   .  7E 02         JLE SHORT cm2.00401957
00401955   .  EB 02         JMP SHORT cm2.00401959
00401957   >^ EB CE         JMP SHORT cm2.00401927
00401959   >  837D CC 05    CMP DWORD PTR SS:[EBP-34],5
0040195D   .  75 3F         JNZ SHORT cm2.0040199E
0040195F   .  C745 C4 78354>MOV DWORD PTR SS:[EBP-3C],cm2.00403578   ;  ASCII "ABCDEFGHIJKLMN"
00401966   .  C745 C0 68354>MOV DWORD PTR SS:[EBP-40],cm2.00403568   ;  ASCII "OPQRSTUVWXYZ"
0040196D   .  50            PUSH EAX
0040196E   .  8D85 C4FFFFFF LEA EAX,DWORD PTR SS:[EBP-3C]
00401974   .  50            PUSH EAX
00401975   .  FF75 C0       PUSH DWORD PTR SS:[EBP-40]
00401978   .  58            POP EAX
00401979   .  58            POP EAX
0040197A   .  58            POP EAX
0040197B   .  8945 CC       MOV DWORD PTR SS:[EBP-34],EAX
0040197E   .  837D CC 00    CMP DWORD PTR SS:[EBP-34],0
00401982   .  7E 07         JLE SHORT cm2.0040198B
00401984   .  E8 27FEFFFF   CALL cm2.004017B0
00401989   .  EB 0E         JMP SHORT cm2.00401999
0040198B   >  50            PUSH EAX
0040198C   .  8D85 C4FFFFFF LEA EAX,DWORD PTR SS:[EBP-3C]
00401992   .  50            PUSH EAX
00401993   .  FF75 C0       PUSH DWORD PTR SS:[EBP-40]
00401996   .  58            POP EAX
00401997   .  58            POP EAX
00401998   .  58            POP EAX
00401999   >  E8 12FEFFFF   CALL cm2.004017B0
0040199E   >  8B45 D8       MOV EAX,DWORD PTR SS:[EBP-28]
004019A1   .  83C0 02       ADD EAX,2
004019A4   .  8945 D8       MOV DWORD PTR SS:[EBP-28],EAX
004019A7   .  8B4D D0       MOV ECX,DWORD PTR SS:[EBP-30]
004019AA   .  83E9 01       SUB ECX,1
004019AD   .  894D D0       MOV DWORD PTR SS:[EBP-30],ECX
004019B0   .  EB 05         JMP SHORT cm2.004019B7
004019B2   $  F9            STC
004019B3   .  73 01         JNB SHORT cm2.004019B6
004019B5   .  C3            RET
004019B6   >  FFE8          JMP FAR EAX                              ;  非法使用寄存器
004019B8   ?  F6FF          IDIV BH
004019BA   ?  FFFF          ???                                      ;  未知命令
004019BC   .  837D D0 00    CMP DWORD PTR SS:[EBP-30],0
004019C0   .  75 07         JNZ SHORT cm2.004019C9
004019C2   .  C745 D0 06000>MOV DWORD PTR SS:[EBP-30],6
004019C9   >  C745 CC 00000>MOV DWORD PTR SS:[EBP-34],0
004019D0   .^ E9 3BFFFFFF   JMP cm2.00401910
004019D5   >  E8 96FDFFFF   CALL cm2.00401770
004019DA   .  5F            POP EDI
004019DB   .  5E            POP ESI
004019DC   .  5B            POP EBX
004019DD   .  8BE5          MOV ESP,EBP
004019DF   .  5D            POP EBP

来到这后就简单了

这里只要00401910   >  837D D8 0C    CMP DWORD PTR SS:[EBP-28],0C

只要ebp-28 =0x0c就行了  就能走到成功之处。


算法简单   只不过就那几个字母来回运算  没啥可说的。



自己随便写的 错误之处请谅解。  看不懂别怪我  呵呵