首页
社区
课程
招聘
[原创][第八回] 第1 队 – 太虚伪了 crackeme简单分析
发表于: 2007-7-3 05:38 9593

[原创][第八回] 第1 队 – 太虚伪了 crackeme简单分析

2007-7-3 05:38
9593

还是没人写啊。苦力活还是交给我等菜菜吧。希望这篇过后牛能写个个把篇这个大赛的破文,让我等学习啊。

好了,这个魔方的CRACKEME,我还是很喜欢的。我觉得太虚伪了的创意实在令我欣赏,不管难度怎么样,我觉得 太虚伪了 还有那个断水流的走迷宫的CRACKEME无疑是最具有创意的。
下面做个简单分析,不对之处还望指出。

断在这里
004006C8  |.  85C0          TEST EAX,EAX
004006CA  |.  74 49         JE SHORT 虚伪.00400715
004006CC  |.  8D85 F0FEFFFF LEA EAX,DWORD PTR SS:[EBP-110]
004006D2  |.  68 00010000   PUSH 100                                 ; /Count = 100 (256.)
004006D7  |.  50            PUSH EAX                                 ; |Buffer
004006D8  |.  6A 69         PUSH 69                                  ; |ControlID = 69 (105.)
004006DA  |.  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |hWnd
004006DD  |.  FFD6          CALL ESI                                 ; \GetDlgItemTextA
004006DF  |.  85C0          TEST EAX,EAX
004006E1  |.  74 32         JE SHORT 虚伪.00400715
004006E3  |.  8D85 F0FEFFFF LEA EAX,DWORD PTR SS:[EBP-110]
004006E9  |.  50            PUSH EAX                                   ;参数1,假sn
004006EA  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
004006ED  |.  50            PUSH EAX                                   ;参数2,用户名
004006EE  |.  E8 BDFEFFFF   CALL 虚伪.004005B0                         ;  关键call
004006F3  |.  05 08000400   ADD EAX,40008
004006F8  |.  59            POP ECX
004006F9  |.  C1E0 04       SHL EAX,4
004006FC  |.  59            POP ECX
004006FD  |.  8D48 08       LEA ECX,DWORD PTR DS:[EAX+8]
00400700  |.  6A 00         PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
00400702  |.  51            PUSH ECX                                 ; |Title
00400703  |.  50            PUSH EAX                                 ; |Text
00400704  |.  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |hOwner
00400707  |.  FF15 00024000 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA

先f8走下来,可知过了CALL 虚伪.004005B0后eax=0
而显示信息的地方ecx=((eax add 40008) shl 4)+8=400088
而查看地址400088时发现
00400088  BC D3 D3 CD 00 00 00 00 B3 C9 B9 A6 00 00 00 00  加油....成功....
00400098  B9 A7 CF B2 00 47 65 74 44 6C 67 49 74 65 6D 54  恭喜.GetDlgItemT

当ECX=400098就注册成功了。因此可以算出来,必须要使eax=1
所以注册成功的条件就是经过CALL 虚伪.004005B0 后返回值eax=1

现在f7进去看看把。
004005BC  |.  BE 40004000   MOV ESI,虚伪.00400040
004005C1  |.  8D7D BC       LEA EDI,DWORD PTR SS:[EBP-44]
004005C4  |.  F3:A5         REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]        ;  ds:[esi]中是初始的数据
004005C6  |.  56            PUSH ESI
004005C7  |.  8B75 08       MOV ESI,DWORD PTR SS:[EBP+8]                          ;  用户名放入esi
004005CA  |.  33C0          XOR EAX,EAX
004005CC  |.  99            CDQ
004005CD  |>  AC            /LODS BYTE PTR DS:[ESI]
004005CE  |.  84C0          |TEST AL,AL
004005D0  |.  74 07         |JE SHORT 虚伪.004005D9
004005D2  |.  C1CA 0D       |ROR EDX,0D
004005D5  |.  03D0          |ADD EDX,EAX
004005D7  |.^ EB F4         \JMP SHORT 虚伪.004005CD                          ;  这里对用户名做了简单的循环运算。
004005D9  |>  5E            POP ESI
004005DA  |.  8955 F8       MOV DWORD PTR SS:[EBP-8],EDX                          ;  运算结果放到ebp-8=x1
004005DD  |.  32DB          XOR BL,BL
004005DF  |>  80FB 02       /CMP BL,2
004005E2  |.  75 0D         |JNZ SHORT 虚伪.004005F1
004005E4  |.  8D45 BC       |LEA EAX,DWORD PTR SS:[EBP-44]
004005E7  |.  50            |PUSH EAX
004005E8  |.  6A 06         |PUSH 6
004005EA  |.  E8 21FDFFFF   |CALL 虚伪.00400310
004005EF  |.  59            |POP ECX
004005F0  |.  59            |POP ECX
004005F1  |>  0FB6C3        |MOVZX EAX,BL
004005F4  |.  0FB67405 F8   |MOVZX ESI,BYTE PTR SS:[EBP+EAX-8]                    ;  取x1第bl个字节
004005F9  |.  8D45 BC       |LEA EAX,DWORD PTR SS:[EBP-44]
004005FC  |.  50            |PUSH EAX
004005FD  |.  8BC6          |MOV EAX,ESI
004005FF  |.  C1E8 04       |SHR EAX,4                                            ;  右移4位
00400602  |.  6A 06         |PUSH 6
00400604  |.  99            |CDQ
00400605  |.  59            |POP ECX
00400606  |.  F7F9          |IDIV ECX                                             ;  mod 6的结果入栈
00400608  |.  52            |PUSH EDX
00400609  |.  E8 02FDFFFF   |CALL 虚伪.00400310
0040060E  |.  8D45 BC       |LEA EAX,DWORD PTR SS:[EBP-44]                        ; |
00400611  |.  50            |PUSH EAX                                             ; |Arg2
00400612  |.  8BC6          |MOV EAX,ESI                                          ; |
00400614  |.  83E0 0F       |AND EAX,0F                                           ; |
00400617  |.  6A 06         |PUSH 6                                               ; |
00400619  |.  99            |CDQ                                                  ; |
0040061A  |.  59            |POP ECX                                              ; |
0040061B  |.  F7F9          |IDIV ECX                                             ; |
0040061D  |.  52            |PUSH EDX                                             ; |Arg1
0040061E  |.  E8 EDFCFFFF   |CALL 虚伪.00400310                                     ; \虚伪.00400310
00400623  |.  83C4 10       |ADD ESP,10
00400626  |.  FEC3          |INC BL
00400628  |.  80FB 04       |CMP BL,4                                             ;  循环4次
0040062B  |.^ 72 B2         \JB SHORT 虚伪.004005DF                      ;以上是以用户名为参数把初始的字串顺序打乱

这是程序的初始字串
A0 D1 A2 F7 E4 A5 D4 A7 A4 A9
B0 B9 E8 B7 B2 B5 F4 B1 B8 E9
C0 D7 D8 D3 E6 C5 F2 C7 C2 E7
D0 C1 E2 E3 F6 D5 C6 B3 A6 D9
E0 A1 F8 A3 A8 E5 C8 F9 D2 C3
F0 F1 D6 F3 C4 F5 B6 E1 B4 C9

这个是用户名kyo327经过上面的变化后转换后的字串。
A0 D1 E2 E1 E8 A5 B6 B9 A2 D7
B0 D3 C4 F1 E4 B5 C8 B1 B2 C3
C0 B3 F6 A7 C2 C5 D8 F7 A4 E7
D0 B7 C6 E3 D2 D5 F8 A9 E6 A3
E0 D9 A6 A1 F4 E5 B4 F9 F2 F3
F0 C1 B8 E9 D4 F5 D6 C7 A8 C9

再接着看下面
0040062D  |.  8B75 0C       MOV ESI,DWORD PTR SS:[EBP+C]                          ;  假码进入esi
00400630  |.  83C9 FF       OR ECX,FFFFFFFF
00400633  |.  8BFE          MOV EDI,ESI
00400635  |.  33C0          XOR EAX,EAX
00400637  |.  F2:AE         REPNE SCAS BYTE PTR ES:[EDI]
00400639  |.  F7D1          NOT ECX
0040063B  |.  49            DEC ECX
0040063C  |.  8AD8          MOV BL,AL
0040063E  |.  8BF9          MOV EDI,ECX
00400640  |.  74 22         JE SHORT 虚伪.00400664                                  ;  以SN长度做循环
00400642  |>  8A0430        /MOV AL,BYTE PTR DS:[EAX+ESI]
00400645  |.  2C 30         |SUB AL,30
00400647  |.  3C 09         |CMP AL,9                                             ;  sn每一位减30和9比较
00400649  |.  76 02         |JBE SHORT 虚伪.0040064D
0040064B  |.  04 F9         |ADD AL,0F9                                           ;  否则要add 0f9
0040064D  |>  8D4D BC       |LEA ECX,DWORD PTR SS:[EBP-44]
00400650  |.  34 0C         |XOR AL,0C                                            ;  小于等于9的话xor 0c就入栈
00400652  |.  51            |PUSH ECX
00400653  |.  50            |PUSH EAX
00400654  |.  E8 B7FCFFFF   |CALL 虚伪.00400310
00400659  |.  FEC3          |INC BL
0040065B  |.  59            |POP ECX
0040065C  |.  0FB6C3        |MOVZX EAX,BL
0040065F  |.  3BC7          |CMP EAX,EDI
00400661  |.  59            |POP ECX
00400662  |.^ 72 DE         \JB SHORT 虚伪.00400642

00400664  |>  32DB          XOR BL,BL
00400666  |>  0FB6CB        /MOVZX ECX,BL
00400669  |.  8BC1          |MOV EAX,ECX
0040066B  |.  6A 0A         |PUSH 0A
0040066D  |.  99            |CDQ
0040066E  |.  5E            |POP ESI
0040066F  |.  8A4C0D BC     |MOV CL,BYTE PTR SS:[EBP+ECX-44]                      ;  取经过密码转换后的每一位
00400673  |.  F7FE          |IDIV ESI
00400675  |.  B2 06         |MOV DL,6
00400677  |.  F6EA          |IMUL DL
00400679  |.  2AC8          |SUB CL,AL
0040067B  |.  80C1 60       |ADD CL,60
0040067E  |.  3ACB          |CMP CL,BL
00400680  |.  75 0F         |JNZ SHORT 虚伪.00400691                              ;可以看到这个跳转一实现就完蛋
00400682  |.  FEC3          |INC BL
00400684  |.  80FB 3C       |CMP BL,3C                                            ;  以3c作为循环次数
00400687  |.^ 72 DD         \JB SHORT 虚伪.00400666
00400689  |.  6A 01         PUSH 1
0040068B  |.  58            POP EAX
0040068C  |>  5F            POP EDI
0040068D  |.  5E            POP ESI
0040068E  |.  5B            POP EBX
0040068F  |.  C9            LEAVE
00400690  |.  C3            RET
00400691  |>  33C0          XOR EAX,EAX
先看00400664到00400691这段代码的意思吧
设循环次数为x,设密码经过上面变化后的字串为pass.而pass[i]表示第i位.
那么这段代码就是检查x从0到3c每一次都使下面的式子成立即可成功注册。  
(pass[i]-(x/0a)*6)+60 cmp x
那么最终pass字串将是这样的形式:
pass[i]=x-60+(x/0a)*6    (把x=0,1,……,3c)带入可求出pass为:

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9
E0 E1 E2 E3 E4 E5 E6 E7 E8 E9
F0 F1 F2 F3 F4 F5 F6 F7 F8 F9

因此现在最关键就是CALL 虚伪.00400310。同样f7进去看看。

00400310  /$  55            PUSH EBP
00400311  |.  8BEC          MOV EBP,ESP
00400313  |.  8A55 08       MOV DL,BYTE PTR SS:[EBP+8]
00400316  |.  8B45 0C       MOV EAX,DWORD PTR SS:[EBP+C]
00400319  |.  0FB6CA        MOVZX ECX,DL
0040031C  |.  84D2          TEST DL,DL
0040031E  |.  8D0C89        LEA ECX,DWORD PTR DS:[ECX+ECX*4]
00400321  |.  53            PUSH EBX
00400322  |.  8D0C48        LEA ECX,DWORD PTR DS:[EAX+ECX*2]
00400325  |.  75 59         JNZ SHORT 虚伪.00400380
00400327  |.  8A58 12       MOV BL,BYTE PTR DS:[EAX+12]
0040032A  |.  8A50 11       MOV DL,BYTE PTR DS:[EAX+11]
0040032D  |.  885D 0B       MOV BYTE PTR SS:[EBP+B],BL
00400330  |.  8A58 13       MOV BL,BYTE PTR DS:[EAX+13]
00400333  |.  885D 0F       MOV BYTE PTR SS:[EBP+F],BL
00400336  |.  8A58 27       MOV BL,BYTE PTR DS:[EAX+27]
00400339  |.  8858 11       MOV BYTE PTR DS:[EAX+11],BL
0040033C  |.  8A58 24       MOV BL,BYTE PTR DS:[EAX+24]
0040033F  |.  8858 12       MOV BYTE PTR DS:[EAX+12],BL
00400342  |.  8A58 21       MOV BL,BYTE PTR DS:[EAX+21]
00400345  |.  8858 13       MOV BYTE PTR DS:[EAX+13],BL
00400348  |.  8A58 35       MOV BL,BYTE PTR DS:[EAX+35]
0040034B  |.  8858 27       MOV BYTE PTR DS:[EAX+27],BL
0040034E  |.  8A58 34       MOV BL,BYTE PTR DS:[EAX+34]
00400351  |.  8858 24       MOV BYTE PTR DS:[EAX+24],BL
00400354  |.  8A58 33       MOV BL,BYTE PTR DS:[EAX+33]
00400357  |.  8858 21       MOV BYTE PTR DS:[EAX+21],BL
0040035A  |.  8A58 15       MOV BL,BYTE PTR DS:[EAX+15]
0040035D  |.  8858 35       MOV BYTE PTR DS:[EAX+35],BL
00400360  |.  8A58 18       MOV BL,BYTE PTR DS:[EAX+18]
00400363  |.  8858 34       MOV BYTE PTR DS:[EAX+34],BL
00400366  |.  8A58 1B       MOV BL,BYTE PTR DS:[EAX+1B]
00400369  |.  8858 33       MOV BYTE PTR DS:[EAX+33],BL
0040036C  |.  8850 15       MOV BYTE PTR DS:[EAX+15],DL
0040036F  |.  8A55 0B       MOV DL,BYTE PTR SS:[EBP+B]
00400372  |.  8850 18       MOV BYTE PTR DS:[EAX+18],DL
00400375  |.  8A55 0F       MOV DL,BYTE PTR SS:[EBP+F]
00400378  |.  8850 1B       MOV BYTE PTR DS:[EAX+1B],DL
0040037B  |.  E9 D2010000   JMP 虚伪.00400552
00400380  |>  80FA 01       CMP DL,1
00400383  |.  75 59         JNZ SHORT 虚伪.004003DE
00400385  |.  8A58 2A       MOV BL,BYTE PTR DS:[EAX+2A]
00400388  |.  8A50 2B       MOV DL,BYTE PTR DS:[EAX+2B]
0040038B  |.  885D 0B       MOV BYTE PTR SS:[EBP+B],BL
0040038E  |.  8A58 29       MOV BL,BYTE PTR DS:[EAX+29]
00400391  |.  885D 0F       MOV BYTE PTR SS:[EBP+F],BL
00400394  |.  8A58 21       MOV BL,BYTE PTR DS:[EAX+21]
00400397  |.  8858 2B       MOV BYTE PTR DS:[EAX+2B],BL
0040039A  |.  8A58 20       MOV BL,BYTE PTR DS:[EAX+20]
0040039D  |.  8858 2A       MOV BYTE PTR DS:[EAX+2A],BL
004003A0  |.  8A58 1F       MOV BL,BYTE PTR DS:[EAX+1F]
004003A3  |.  8858 29       MOV BYTE PTR DS:[EAX+29],BL
004003A6  |.  8A58 03       MOV BL,BYTE PTR DS:[EAX+3]
004003A9  |.  8858 21       MOV BYTE PTR DS:[EAX+21],BL
004003AC  |.  8A58 02       MOV BL,BYTE PTR DS:[EAX+2]
004003AF  |.  8858 20       MOV BYTE PTR DS:[EAX+20],BL
004003B2  |.  8A58 01       MOV BL,BYTE PTR DS:[EAX+1]
004003B5  |.  8858 1F       MOV BYTE PTR DS:[EAX+1F],BL
004003B8  |.  8A58 17       MOV BL,BYTE PTR DS:[EAX+17]
004003BB  |.  8858 03       MOV BYTE PTR DS:[EAX+3],BL
004003BE  |.  8A58 16       MOV BL,BYTE PTR DS:[EAX+16]
004003C1  |.  8850 17       MOV BYTE PTR DS:[EAX+17],DL
004003C4  |.  8A55 0B       MOV DL,BYTE PTR SS:[EBP+B]
004003C7  |.  8858 02       MOV BYTE PTR DS:[EAX+2],BL
004003CA  |.  8A58 15       MOV BL,BYTE PTR DS:[EAX+15]
004003CD  |.  8850 16       MOV BYTE PTR DS:[EAX+16],DL
004003D0  |.  8A55 0F       MOV DL,BYTE PTR SS:[EBP+F]
004003D3  |.  8858 01       MOV BYTE PTR DS:[EAX+1],BL
004003D6  |.  8850 15       MOV BYTE PTR DS:[EAX+15],DL
004003D9  |.  E9 74010000   JMP 虚伪.00400552
004003DE  |> \80FA 02       CMP DL,2
004003E1  |.  75 59         JNZ SHORT 虚伪.0040043C
004003E3  |.  8A58 10       MOV BL,BYTE PTR DS:[EAX+10]                             ;  第17位
004003E6  |.  8A50 13       MOV DL,BYTE PTR DS:[EAX+13]                             ;  第20位
004003E9  |.  885D 0B       MOV BYTE PTR SS:[EBP+B],BL
004003EC  |.  8A58 0D       MOV BL,BYTE PTR DS:[EAX+D]                              ;  第20位=bl再存到bp+f里
004003EF  |.  885D 0F       MOV BYTE PTR SS:[EBP+F],BL
004003F2  |.  8A58 09       MOV BL,BYTE PTR DS:[EAX+9]                              ;  第10位
004003F5  |.  8858 13       MOV BYTE PTR DS:[EAX+13],BL                             ;  第10位填到第20位
004003F8  |.  8A58 06       MOV BL,BYTE PTR DS:[EAX+6]
004003FB  |.  8858 10       MOV BYTE PTR DS:[EAX+10],BL                             ;  第7位填到17位
004003FE  |.  8A58 03       MOV BL,BYTE PTR DS:[EAX+3]
00400401  |.  8858 0D       MOV BYTE PTR DS:[EAX+D],BL                              ;  第4位填到14位
00400404  |.  8A58 3B       MOV BL,BYTE PTR DS:[EAX+3B]                             ;  第60位填到第10位
00400407  |.  8858 09       MOV BYTE PTR DS:[EAX+9],BL
0040040A  |.  8A58 38       MOV BL,BYTE PTR DS:[EAX+38]                             ;  第57位填到第7位
0040040D  |.  8858 06       MOV BYTE PTR DS:[EAX+6],BL
00400410  |.  8A58 35       MOV BL,BYTE PTR DS:[EAX+35]                             ;  第54位填到第4位
00400413  |.  8858 03       MOV BYTE PTR DS:[EAX+3],BL
00400416  |.  8A58 29       MOV BL,BYTE PTR DS:[EAX+29]
00400419  |.  8858 3B       MOV BYTE PTR DS:[EAX+3B],BL                             ;  第42位填到第60位
0040041C  |.  8A58 2C       MOV BL,BYTE PTR DS:[EAX+2C]
0040041F  |.  8850 29       MOV BYTE PTR DS:[EAX+29],DL                             ;  原来的第20位填到42位
00400422  |.  8A55 0B       MOV DL,BYTE PTR SS:[EBP+B]
00400425  |.  8858 38       MOV BYTE PTR DS:[EAX+38],BL                             ;  第45位填到第57位
00400428  |.  8A58 2F       MOV BL,BYTE PTR DS:[EAX+2F]
0040042B  |.  8850 2C       MOV BYTE PTR DS:[EAX+2C],DL                             ;  原来的第17位填到现在的45位
0040042E  |.  8A55 0F       MOV DL,BYTE PTR SS:[EBP+F]
00400431  |.  8858 35       MOV BYTE PTR DS:[EAX+35],BL                             ;  第48位填到第 54位
00400434  |.  8850 2F       MOV BYTE PTR DS:[EAX+2F],DL                             ;  原来的第20位填到第48位

00400437  |.  E9 16010000   JMP 虚伪.00400552
0040043C  |>  80FA 03       CMP DL,3
0040043F  |.  75 59         JNZ SHORT 虚伪.0040049A
00400441  |.  8A58 0E       MOV BL,BYTE PTR DS:[EAX+E]
00400444  |.  8A50 0B       MOV DL,BYTE PTR DS:[EAX+B]
00400447  |.  885D 0B       MOV BYTE PTR SS:[EBP+B],BL
0040044A  |.  8A58 11       MOV BL,BYTE PTR DS:[EAX+11]
0040044D  |.  885D 0F       MOV BYTE PTR SS:[EBP+F],BL
00400450  |.  8A58 31       MOV BL,BYTE PTR DS:[EAX+31]
00400453  |.  8858 0B       MOV BYTE PTR DS:[EAX+B],BL
00400456  |.  8A58 2E       MOV BL,BYTE PTR DS:[EAX+2E]
00400459  |.  8858 0E       MOV BYTE PTR DS:[EAX+E],BL
0040045C  |.  8A58 2B       MOV BL,BYTE PTR DS:[EAX+2B]
0040045F  |.  8858 11       MOV BYTE PTR DS:[EAX+11],BL
00400462  |.  8A58 33       MOV BL,BYTE PTR DS:[EAX+33]
00400465  |.  8858 31       MOV BYTE PTR DS:[EAX+31],BL
00400468  |.  8A58 36       MOV BL,BYTE PTR DS:[EAX+36]
0040046B  |.  8858 2E       MOV BYTE PTR DS:[EAX+2E],BL
0040046E  |.  8A58 39       MOV BL,BYTE PTR DS:[EAX+39]
00400471  |.  8858 2B       MOV BYTE PTR DS:[EAX+2B],BL
00400474  |.  8A58 01       MOV BL,BYTE PTR DS:[EAX+1]
00400477  |.  8858 33       MOV BYTE PTR DS:[EAX+33],BL
0040047A  |.  8A58 04       MOV BL,BYTE PTR DS:[EAX+4]
0040047D  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
00400480  |.  8A55 0B       MOV DL,BYTE PTR SS:[EBP+B]
00400483  |.  8858 36       MOV BYTE PTR DS:[EAX+36],BL
00400486  |.  8A58 07       MOV BL,BYTE PTR DS:[EAX+7]
00400489  |.  8850 04       MOV BYTE PTR DS:[EAX+4],DL
0040048C  |.  8A55 0F       MOV DL,BYTE PTR SS:[EBP+F]
0040048F  |.  8858 39       MOV BYTE PTR DS:[EAX+39],BL
00400492  |.  8850 07       MOV BYTE PTR DS:[EAX+7],DL
00400495  |.  E9 B8000000   JMP 虚伪.00400552
0040049A  |>  80FA 04       CMP DL,4
0040049D  |.  75 56         JNZ SHORT 虚伪.004004F5
0040049F  |.  8A58 0C       MOV BL,BYTE PTR DS:[EAX+C]
004004A2  |.  8A50 0D       MOV DL,BYTE PTR DS:[EAX+D]
004004A5  |.  885D 0B       MOV BYTE PTR SS:[EBP+B],BL
004004A8  |.  8A58 0B       MOV BL,BYTE PTR DS:[EAX+B]
004004AB  |.  885D 0F       MOV BYTE PTR SS:[EBP+F],BL
004004AE  |.  8A58 1D       MOV BL,BYTE PTR DS:[EAX+1D]
004004B1  |.  8858 0D       MOV BYTE PTR DS:[EAX+D],BL
004004B4  |.  8A58 1A       MOV BL,BYTE PTR DS:[EAX+1A]
004004B7  |.  8858 0C       MOV BYTE PTR DS:[EAX+C],BL
004004BA  |.  8A58 17       MOV BL,BYTE PTR DS:[EAX+17]
004004BD  |.  8858 0B       MOV BYTE PTR DS:[EAX+B],BL
004004C0  |.  8A58 39       MOV BL,BYTE PTR DS:[EAX+39]
004004C3  |.  8858 1D       MOV BYTE PTR DS:[EAX+1D],BL
004004C6  |.  8A58 3A       MOV BL,BYTE PTR DS:[EAX+3A]
004004C9  |.  8858 1A       MOV BYTE PTR DS:[EAX+1A],BL
004004CC  |.  8A58 3B       MOV BL,BYTE PTR DS:[EAX+3B]
004004CF  |.  8858 17       MOV BYTE PTR DS:[EAX+17],BL
004004D2  |.  8A58 1F       MOV BL,BYTE PTR DS:[EAX+1F]
004004D5  |.  8858 39       MOV BYTE PTR DS:[EAX+39],BL
004004D8  |.  8A58 22       MOV BL,BYTE PTR DS:[EAX+22]
004004DB  |.  8850 1F       MOV BYTE PTR DS:[EAX+1F],DL
004004DE  |.  8A55 0B       MOV DL,BYTE PTR SS:[EBP+B]
004004E1  |.  8858 3A       MOV BYTE PTR DS:[EAX+3A],BL
004004E4  |.  8A58 25       MOV BL,BYTE PTR DS:[EAX+25]
004004E7  |.  8850 22       MOV BYTE PTR DS:[EAX+22],DL
004004EA  |.  8A55 0F       MOV DL,BYTE PTR SS:[EBP+F]
004004ED  |.  8858 3B       MOV BYTE PTR DS:[EAX+3B],BL
004004F0  |.  8850 25       MOV BYTE PTR DS:[EAX+25],DL
004004F3  |.  EB 5D         JMP SHORT 虚伪.00400552
004004F5  |>  80FA 05       CMP DL,5
004004F8  |.  0F85 86000000 JNZ 虚伪.00400584
004004FE  |.  8A58 08       MOV BL,BYTE PTR DS:[EAX+8]
00400501  |.  8A50 07       MOV DL,BYTE PTR DS:[EAX+7]
00400504  |.  885D 0B       MOV BYTE PTR SS:[EBP+B],BL
00400507  |.  8A58 09       MOV BL,BYTE PTR DS:[EAX+9]
0040050A  |.  885D 0F       MOV BYTE PTR SS:[EBP+F],BL
0040050D  |.  8A58 25       MOV BL,BYTE PTR DS:[EAX+25]
00400510  |.  8858 07       MOV BYTE PTR DS:[EAX+7],BL
00400513  |.  8A58 26       MOV BL,BYTE PTR DS:[EAX+26]
00400516  |.  8858 08       MOV BYTE PTR DS:[EAX+8],BL
00400519  |.  8A58 27       MOV BL,BYTE PTR DS:[EAX+27]
0040051C  |.  8858 09       MOV BYTE PTR DS:[EAX+9],BL
0040051F  |.  8A58 2F       MOV BL,BYTE PTR DS:[EAX+2F]
00400522  |.  8858 25       MOV BYTE PTR DS:[EAX+25],BL
00400525  |.  8A58 30       MOV BL,BYTE PTR DS:[EAX+30]
00400528  |.  8858 26       MOV BYTE PTR DS:[EAX+26],BL
0040052B  |.  8A58 31       MOV BL,BYTE PTR DS:[EAX+31]
0040052E  |.  8858 27       MOV BYTE PTR DS:[EAX+27],BL
00400531  |.  8A58 1B       MOV BL,BYTE PTR DS:[EAX+1B]
00400534  |.  8858 2F       MOV BYTE PTR DS:[EAX+2F],BL
00400537  |.  8A58 1C       MOV BL,BYTE PTR DS:[EAX+1C]
0040053A  |.  8850 1B       MOV BYTE PTR DS:[EAX+1B],DL
0040053D  |.  8A55 0B       MOV DL,BYTE PTR SS:[EBP+B]
00400540  |.  8858 30       MOV BYTE PTR DS:[EAX+30],BL
00400543  |.  8A58 1D       MOV BL,BYTE PTR DS:[EAX+1D]
00400546  |.  8850 1C       MOV BYTE PTR DS:[EAX+1C],DL
00400549  |.  8A55 0F       MOV DL,BYTE PTR SS:[EBP+F]
0040054C  |.  8858 31       MOV BYTE PTR DS:[EAX+31],BL
0040054F  |.  8850 1D       MOV BYTE PTR DS:[EAX+1D],DL
00400552  |>  8A51 07       MOV DL,BYTE PTR DS:[ECX+7]
00400555  |.  8A41 01       MOV AL,BYTE PTR DS:[ECX+1]
00400558  |.  8851 01       MOV BYTE PTR DS:[ECX+1],DL
0040055B  |.  8A51 09       MOV DL,BYTE PTR DS:[ECX+9]
0040055E  |.  8851 07       MOV BYTE PTR DS:[ECX+7],DL
00400561  |.  8A51 03       MOV DL,BYTE PTR DS:[ECX+3]
00400564  |.  8851 09       MOV BYTE PTR DS:[ECX+9],DL
00400567  |.  8A51 04       MOV DL,BYTE PTR DS:[ECX+4]
0040056A  |.  8841 03       MOV BYTE PTR DS:[ECX+3],AL
0040056D  |.  8A41 02       MOV AL,BYTE PTR DS:[ECX+2]
00400570  |.  8851 02       MOV BYTE PTR DS:[ECX+2],DL
00400573  |.  8A51 08       MOV DL,BYTE PTR DS:[ECX+8]
00400576  |.  8851 04       MOV BYTE PTR DS:[ECX+4],DL
00400579  |.  8A51 06       MOV DL,BYTE PTR DS:[ECX+6]
0040057C  |.  8851 08       MOV BYTE PTR DS:[ECX+8],DL
0040057F  |.  8841 06       MOV BYTE PTR DS:[ECX+6],AL
00400582  |.  EB 29         JMP SHORT 虚伪.004005AD
00400584  |>  80FA 06       CMP DL,6
00400587  |.  75 24         JNZ SHORT 虚伪.004005AD
00400589  |.  8A50 27       MOV DL,BYTE PTR DS:[EAX+27]
0040058C  |.  8A48 07       MOV CL,BYTE PTR DS:[EAX+7]
0040058F  |.  8850 07       MOV BYTE PTR DS:[EAX+7],DL                            ;  第40位放到第8位
00400592  |.  8A50 33       MOV DL,BYTE PTR DS:[EAX+33]
00400595  |.  8850 27       MOV BYTE PTR DS:[EAX+27],DL                           ;  第52位放到第40位
00400598  |.  8A50 1B       MOV DL,BYTE PTR DS:[EAX+1B]
0040059B  |.  8848 33       MOV BYTE PTR DS:[EAX+33],CL                           ;  第8位放到第52位
0040059E  |.  8A48 09       MOV CL,BYTE PTR DS:[EAX+9]
004005A1  |.  8850 09       MOV BYTE PTR DS:[EAX+9],DL                            ;  第28位放到第10位
004005A4  |.  8A50 35       MOV DL,BYTE PTR DS:[EAX+35]
004005A7  |.  8850 1B       MOV BYTE PTR DS:[EAX+1B],DL                           ;  第54位放到第28位
004005AA  |.  8848 35       MOV BYTE PTR DS:[EAX+35],CL                           ;  第10位放到第54位

004005AD  |>  5B            POP EBX
004005AE  |.  5D            POP EBP
004005AF  \.  C3            RET

这个CALL很明显是分了7种情况进行计算的。
分别是dl=0,1,2,3,4,5,6这7种情况。
而入栈的参数是这样的:
00400645  |.  2C 30         |SUB AL,30
00400647  |.  3C 09         |CMP AL,9                                             ;  sn每一位减30和9比较
00400649  |.  76 02         |JBE SHORT 虚伪.0040064D
0040064B  |.  04 F9         |ADD AL,0F9                                           ;  否则要add 0f9
0040064D  |>  8D4D BC       |LEA ECX,DWORD PTR SS:[EBP-44]
00400650  |.  34 0C         |XOR AL,0C                                            ;  小于等于9的话xor 0c就入栈
00400652  |.  51            |PUSH ECX

那么把0,1,2,3,4,5,6代入可求出符合要求的SN只能是下面几个
CDEF8(?)9(@)A分别对应0,1,2,3,4,5,6
我还是只分析了等于2和6的情况。

由于知道这是个魔方,不过从dl=6看出,这个好象不是转面,应该是转角。

            
既然是魔方  前人已经总结出结果了。
http://www.wrongway.org/cube/solve.html
这个网页是有人给出的 是算魔方步骤的。把我这个状态输入进去 也就是用户名为kyo327的状态:
A0 D1 E2 E1 E8 A5 B6 B9 A2 D7
B0 D3 C4 F1 E4 B5 C8 B1 B2 C3
C0 B3 F6 A7 C2 C5 D8 F7 A4 E7
D0 B7 C6 E3 D2 D5 F8 A9 E6 A3
E0 D9 A6 A1 F4 E5 B4 F9 F2 F3
F0 C1 B8 E9 D4 F5 D6 C7 A8 C9
然后开始计算即可。好象很花时间哦。
不过好的算法在26步内可以还原任何打乱的魔方的。
不过这里多了个dl=6的情况,(可能是转角)。  可能会简单点,我不会玩魔方  也没时间学那个无聊东东  所以下面的工作给有兴趣的朋友来解决吧。
可用的序列号大家算了好多。列几个他人的结果吧。我偷懒,没时间算,呵呵。
哪位闲人可以用我的kyo327算一个出来,我在这里谢谢了。:)

user:kelly
key:DDDCAA@@@CCCFFFDDD??EE?DDDFFDDDCCCEE@EEE@E@@@CCDD??@FF

用户名pediy
注册码899FFDDDDDDFFFCCCCCCFCCC9CFFF9F999CCCFFFCDDDFFFDFFFDFFFDDDCFCCC8FFF888FFFDDDFDFFF888F8F9FFF9998FFF888FFFDDDFFDF8FFF888FDFFFDDDFFFCCCFCCFFFCCCFFF999F9FF8FF888FFF8FFF888FFF9FF999FFF9FFF999DDDFFFFFFDFDDDFFFDFDDDFD9FF999FFF9FFF999


[注意]APP应用上架合规检测服务,协助应用顺利上架!

收藏
免费 7
支持
分享
最新回复 (14)
雪    币: 461
活跃值: (93)
能力值: ( LV9,RANK:1170 )
在线值:
发帖
回帖
粉丝
2
终于抢到沙发了
2007-7-3 07:50
0
雪    币: 372
活跃值: (31)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
3
楼主好牛X,只能学习~~
2007-7-3 15:42
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
牛主好楼X,只能学习~~
2007-7-3 15:53
0
雪    币: 1946
活跃值: (268)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
5
牛主好楼X,只能学习~~
2007-7-3 16:08
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
6
牛主好楼X,只能学习~~
2007-7-3 16:46
0
雪    币: 405
活跃值: (10)
能力值: ( LV9,RANK:1130 )
在线值:
发帖
回帖
粉丝
7
真的好厉害,学习下。继续关注中~~~~~~~~~
2007-7-3 23:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这么多牛人灌水  
我也来个  嘎嘎
2007-7-15 01:27
0
雪    币: 228
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
9
厉害,学习中
2007-7-21 18:10
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
牛主好楼X,只能学习~~
2007-8-3 16:03
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
XXXXXX , 总之就是 XXXXXX
2007-8-3 18:42
0
雪    币: 340
活跃值: (51)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
我看了一会,头都大了.......
2007-8-4 13:52
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
最近没什么耐性,看不完。走人
2007-8-4 23:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
学习中........
2007-8-5 13:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
研究一下
谢谢楼主
2007-8-5 17:20
0
游客
登录 | 注册 方可回帖
返回
// // 统计代码