首页
社区
课程
招聘
评语编辑室7.31注册算法分析
发表于: 2005-1-13 15:02 7870

评语编辑室7.31注册算法分析

2005-1-13 15:02
7870

评语编辑室7.31注册算法分析

序列号的计算过程》》》》》》
0051251F   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00512522   .  BA E4255100   MOV EDX,UNPACKED.005125E4                ;  ASCII "ai533wead23678901twasdf3@"
00512527   .  E8 0024EFFF   CALL UNPACKED.0040492C
0051252C   .  E8 831EEFFF   CALL UNPACKED.004043B4
00512531   >  33DB          XOR EBX,EBX
00512533   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00512536   .  8B00          MOV EAX,DWORD PTR DS:[EAX]         ;  ASCII "ai533wead23678901twasdf3@"
00512538   .  E8 5326EFFF   CALL UNPACKED.00404B90
0051253D   .  8BD0          MOV EDX,EAX
0051253F   .  85D2          TEST EDX,EDX
00512541   .  7E 1B         JLE SHORT UNPACKED.0051255E
00512543   .  B8 01000000   MOV EAX,1
00512548   >  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4]
0051254B   .  8B09          MOV ECX,DWORD PTR DS:[ECX]         ;  ASCII "ai533wead23678901twasdf3@"
0051254D   .  0FB64C01 FF   MOVZX ECX,BYTE PTR DS:[ECX+EAX-1]
00512552   .  8D70 11       LEA ESI,DWORD PTR DS:[EAX+11]
00512555   .  0FAFCE        IMUL ECX,ESI
00512558   .  03D9          ADD EBX,ECX
0051255A   .  40            INC EAX
0051255B   .  4A            DEC EDX
0051255C   .^ 75 EA         JNZ SHORT UNPACKED.00512548
0051255E   >  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
00512561   .  8D83 0D730500 LEA EAX,DWORD PTR DS:[EBX+5730D]
00512567   .  E8 806EEFFF   CALL UNPACKED.004093EC
0051256C   .  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
0051256F   .  50            PUSH EAX
00512570   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00512573   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
00512575   .  E8 1626EFFF   CALL UNPACKED.00404B90
0051257A   .  8BD0          MOV EDX,EAX
0051257C   .  83EA 05       SUB EDX,5
0051257F   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00512582   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
00512584   .  B9 05000000   MOV ECX,5
00512589   .  E8 5A28EFFF   CALL UNPACKED.00404DE8
0051258E   .  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
00512591   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00512594   .  BA 08265100   MOV EDX,UNPACKED.00512608                ;  ASCII "P7.3-"
00512599   .  E8 3E26EFFF   CALL UNPACKED.00404BDC
0051259E   .  33C0          XOR EAX,EAX
005125A0   .  5A            POP EDX
005125A1   .  59            POP ECX
005125A2   .  59            POP ECX
005125A3   .  64:8910       MOV DWORD PTR FS:[EAX],EDX
005125A6   .  68 C0255100   PUSH UNPACKED.005125C0
005125AB   >  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
005125AE   .  BA 02000000   MOV EDX,2
005125B3   .  E8 4423EFFF   CALL UNPACKED.004048FC
005125B8   .  C3            RETN

注册码前半部分计算>>>>>>>>>
00512E50  /$  55            PUSH EBP
00512E51  |.  8BEC          MOV EBP,ESP
00512E53  |.  51            PUSH ECX
00512E54  |.  B9 05000000   MOV ECX,5
00512E59  |>  6A 00         /PUSH 0
00512E5B  |.  6A 00         |PUSH 0
00512E5D  |.  49            |DEC ECX
00512E5E  |.^ 75 F9         \JNZ SHORT UNPACKED.00512E59
00512E60  |.  51            PUSH ECX
00512E61  |.  874D FC       XCHG DWORD PTR SS:[EBP-4],ECX
00512E64  |.  53            PUSH EBX
00512E65  |.  56            PUSH ESI
00512E66  |.  57            PUSH EDI
00512E67  |.  8BF9          MOV EDI,ECX
00512E69  |.  8BD8          MOV EBX,EAX
00512E6B  |.  33C0          XOR EAX,EAX
00512E6D  |.  55            PUSH EBP
00512E6E  |.  68 F22F5100   PUSH UNPACKED.00512FF2
00512E73  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
00512E76  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
00512E79  |.  8D4D FC       LEA ECX,DWORD PTR SS:[EBP-4]
00512E7C  |.  8B93 DC060000 MOV EDX,DWORD PTR DS:[EBX+6DC]
00512E82  |.  8BC3          MOV EAX,EBX
00512E84  |.  E8 8FEAFFFF   CALL UNPACKED.00511918            关键CALL,中间值计算进入

》》》》》》》》》中间值计算(序列号和用户名处理转换)
00511918  /$  55            PUSH EBP
00511919  |.  8BEC          MOV EBP,ESP
0051191B  |.  83C4 F4       ADD ESP,-0C
0051191E  |.  53            PUSH EBX
0051191F  |.  56            PUSH ESI
00511920  |.  33DB          XOR EBX,EBX
00511922  |.  895D F4       MOV DWORD PTR SS:[EBP-C],EBX
00511925  |.  894D F8       MOV DWORD PTR SS:[EBP-8],ECX
00511928  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX
0051192B  |.  8BF0          MOV ESI,EAX
0051192D  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00511930  |.  E8 4334EFFF   CALL UNPACKED.00404D78
00511935  |.  33C0          XOR EAX,EAX
00511937  |.  55            PUSH EBP
00511938  |.  68 BA195100   PUSH UNPACKED.005119BA
0051193D  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
00511940  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
00511943  |.  33DB          XOR EBX,EBX
00511945  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
00511948  |.  8BC6          MOV EAX,ESI
0051194A  |.  E8 790B0000   CALL UNPACKED.005124C8
0051194F  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]     P7.3-52016
00511952  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
00511955  |.  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4]     czsokpj
00511958  |.  E8 7F32EFFF   CALL UNPACKED.00404BDC           连接上述两个字符串
0051195D  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]     P7.3-52016czsokpj
00511960  |.  E8 2B32EFFF   CALL UNPACKED.00404B90
00511965  |.  8BD0          MOV EDX,EAX                     
00511967  |.  85D2          TEST EDX,EDX
00511969  |.  7C 17         JL SHORT UNPACKED.00511982
0051196B  |.  42            INC EDX
0051196C  |.  33C0          XOR EAX,EAX                      开始处理序列号和用户名
0051196E  |>  8B4D FC       /MOV ECX,DWORD PTR SS:[EBP-4]    P7.3-52016czsokpj
00511971  |.  0FB64C01 FF   |MOVZX ECX,BYTE PTR DS:[ECX+EAX-1]  将上述字符串单个顺序送入ECX=50('P')
00511976  |.  8D70 07       |LEA ESI,DWORD PTR DS:[EAX+7]   ESI=EAX+7\第一位:1+7=8  
00511979  |.  0FAFCE        |IMUL ECX,ESI                   ECX=ECX*ESI\50*8=280
0051197C  |.  03D9          |ADD EBX,ECX                    EBX=EBX+ECX\0+280=280
0051197E  |.  40            |INC EAX                        EAX++
0051197F  |.  4A            |DEC EDX
00511980  |.^ 75 EC         \JNZ SHORT UNPACKED.0051196E    用以上字符串的每位HEX值*(位数+7),然后相加
00511982  |>  8BC3          MOV EAX,EBX       结果传送给EAX=58B8
00511984  |.  99            CDQ
00511985  |.  33C2          XOR EAX,EDX
00511987  |.  2BC2          SUB EAX,EDX
00511989  |.  69C0 0D3C0000 IMUL EAX,EAX,3C0D     EAX=EAX*3C0D=58B8*3C0D=14CFA158
0051198F  |.  05 38D27300   ADD EAX,73D238        EAX=EAX+73D238=14CFA158+73D238=15437390
00511994  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
00511997  |.  E8 507AEFFF   CALL UNPACKED.004093EC   EAX结果变为十进制"356742032"
0051199C  |.  33C0          XOR EAX,EAX
0051199E  |.  5A            POP EDX
0051199F  |.  59            POP ECX
005119A0  |.  59            POP ECX
005119A1  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
005119A4  |.  68 C1195100   PUSH UNPACKED.005119C1
005119A9  |>  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
005119AC  |.  E8 272FEFFF   CALL UNPACKED.004048D8
005119B1  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
005119B4  |.  E8 1F2FEFFF   CALL UNPACKED.004048D8
005119B9  \.  C3            RETN
005119BA   .^ E9 4129EFFF   JMP UNPACKED.00404300
005119BF   .^ EB E8         JMP SHORT UNPACKED.005119A9
005119C1   .  5E            POP ESI
005119C2   .  5B            POP EBX
005119C3   .  8BE5          MOV ESP,EBP
005119C5   .  5D            POP EBP
005119C6   .  C3            RETN

》》》》》》》》》》》》中间值计算完成

以下为注册码的前半部分计算

00512E89  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
00512E8C  |.  50            PUSH EAX
00512E8D  |.  B9 03000000   MOV ECX,3                          取3位
00512E92  |.  BA 02000000   MOV EDX,2                          第二位开始
00512E97  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]       处理后的序列号及用户名;"356742032"
00512E9A  |.  E8 491FEFFF   CALL UNPACKED.00404DE8             从第二位开始取3位"567"
00512E9F  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
00512EA2  |.  E8 A965EFFF   CALL UNPACKED.00409450             转换成16进制"237"
00512EA7  |.  8BD8          MOV EBX,EAX                        EBX=237
00512EA9  |.  83C3 0D       ADD EBX,0D                         EBX=EBX+0D=237+0D=244
00512EAC  |.  8BC3          MOV EAX,EBX
00512EAE  |.  B9 19000000   MOV ECX,19
00512EB3  |.  99            CDQ
00512EB4  |.  F7F9          IDIV ECX                           EAX=331 IDIV ECX=19\EAX=17  EDX=05
00512EB6  |.  8BDA          MOV EBX,EDX                        EBX=EDX=05  注意在00512F0D,00512F8F中要用到
00512EB8  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
00512EBB  |.  50            PUSH EAX
00512EBC  |.  B9 02000000   MOV ECX,2                          取2位
00512EC1  |.  BA 03000000   MOV EDX,3                          第三位开始
00512EC6  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00512EC9  |.  E8 1A1FEFFF   CALL UNPACKED.00404DE8             "67"
00512ECE  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
00512ED1  |.  E8 7A65EFFF   CALL UNPACKED.00409450             转换成16进制"43"
00512ED6  |.  8BF0          MOV ESI,EAX                        ESI=EAX=43
00512ED8  |.  83C6 07       ADD ESI,7                          ESI=ESI+7=4A
00512EDB  |.  8BC6          MOV EAX,ESI                        EAX=4A
00512EDD  |.  B9 19000000   MOV ECX,19                         ECX=19
00512EE2  |.  99            CDQ
00512EE3  |.  F7F9          IDIV ECX                           EAX=4A IDIV ECX=19\EAX=2  EDX=18
00512EE5  |.  8BF2          MOV ESI,EDX                        ESI=EDX=18   注意在00512F38,00512F64中要用到
00512EE7  |.  68 08305100   PUSH UNPACKED.00513008                   ;  ASCII "P/"注册码前部分固定为"P/"
00512EEC  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]      EAX="356742032"
00512EEF  |.  50            PUSH EAX
00512EF0  |.  B9 01000000   MOV ECX,1                          从第一位开始取1位33('3')组成注册码“P/3”
00512EF5  |.  BA 01000000   MOV EDX,1
00512EFA  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00512EFD  |.  E8 E61EEFFF   CALL UNPACKED.00404DE8
00512F02  |.  FF75 F0       PUSH DWORD PTR SS:[EBP-10]
00512F05  |.  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
00512F08  |.  BA 5A000000   MOV EDX,5A                         EDX=5A
00512F0D  |.  2BD3          SUB EDX,EBX                        EBX=5 \EDX=5A-5=55(“U”)
00512F0F  |.  E8 A41BEFFF   CALL UNPACKED.00404AB8             将EDX=55转换成字符U,与上面一同组成注册码(P/3U)
00512F14  |.  FF75 EC       PUSH DWORD PTR SS:[EBP-14]
00512F17  |.  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]     EAX="356742032"
00512F1A  |.  50            PUSH EAX
00512F1B  |.  B9 02000000   MOV ECX,2                         取2位
00512F20  |.  BA 02000000   MOV EDX,2                         从第二位开始取
00512F25  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00512F28  |.  E8 BB1EEFFF   CALL UNPACKED.00404DE8            开始取,[EAX]=“56”组成注册码(P/3U56)
00512F2D  |.  FF75 E8       PUSH DWORD PTR SS:[EBP-18]
00512F30  |.  68 14305100   PUSH UNPACKED.00513014
00512F35  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
00512F38  |.  8D56 41       LEA EDX,DWORD PTR DS:[ESI+41]     EDX=ESI+41=18+41=59(“Y”)
00512F3B  |.  E8 781BEFFF   CALL UNPACKED.00404AB8            将EDX=59转换成“Y"
00512F40  |.  FF75 E4       PUSH DWORD PTR SS:[EBP-1C]
00512F43  |.  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]     EAX="356742032"
00512F46  |.  50            PUSH EAX
00512F47  |.  B9 02000000   MOV ECX,2                         取2位
00512F4C  |.  BA 04000000   MOV EDX,4                         从第4位开始取
00512F51  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]      
00512F54  |.  E8 8F1EEFFF   CALL UNPACKED.00404DE8            开始取[EAX]=“74”
00512F59  |.  FF75 E0       PUSH DWORD PTR SS:[EBP-20]
00512F5C  |.  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]
00512F5F  |.  BA 5A000000   MOV EDX,5A                        EDX=5A
00512F64  |.  2BD6          SUB EDX,ESI                       ESI=18\EDX=5A-18=42("B")
00512F66  |.  E8 4D1BEFFF   CALL UNPACKED.00404AB8
00512F6B  |.  FF75 DC       PUSH DWORD PTR SS:[EBP-24]
00512F6E  |.  68 14305100   PUSH UNPACKED.00513014
00512F73  |.  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]     EAX="356742032"
00512F76  |.  50            PUSH EAX
00512F77  |.  B9 02000000   MOV ECX,2                         取2位
00512F7C  |.  BA 06000000   MOV EDX,6                         从第6位开始取
00512F81  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00512F84  |.  E8 5F1EEFFF   CALL UNPACKED.00404DE8            开始取[EAX]=“20”
00512F89  |.  FF75 D8       PUSH DWORD PTR SS:[EBP-28]
00512F8C  |.  8D45 D4       LEA EAX,DWORD PTR SS:[EBP-2C]
00512F8F  |.  8D53 41       LEA EDX,DWORD PTR DS:[EBX+41]     EDX=EBX+41=5+41=46“F”
00512F92  |.  E8 211BEFFF   CALL UNPACKED.00404AB8            将EDX=46转换成字符“F”
00512F97  |.  FF75 D4       PUSH DWORD PTR SS:[EBP-2C]
00512F9A  |.  68 14305100   PUSH UNPACKED.00513014
00512F9F  |.  8D45 D0       LEA EAX,DWORD PTR SS:[EBP-30]     EAX="356742032"
00512FA2  |.  50            PUSH EAX
00512FA3  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00512FA6  |.  E8 E51BEFFF   CALL UNPACKED.00404B90
00512FAB  |.  8BC8          MOV ECX,EAX
00512FAD  |.  83E9 07       SUB ECX,7                         取第8位以后的值
00512FB0  |.  BA 08000000   MOV EDX,8                         从第8位开始取
00512FB5  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00512FB8  |.  E8 2B1EEFFF   CALL UNPACKED.00404DE8            开始取[EAX]=32
00512FBD  |.  FF75 D0       PUSH DWORD PTR SS:[EBP-30]
00512FC0  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
00512FC3  |.  BA 0D000000   MOV EDX,0D
00512FC8  |.  E8 831CEFFF   CALL UNPACKED.00404C50
00512FCD  |.  8BC7          MOV EAX,EDI
00512FCF  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]  [EBP-4]=P/3U56/Y74B/20F/32/
00512FD2  |.  E8 5519EFFF   CALL UNPACKED.0040492C        将以上各值连接成注册码的前半部分“P/3U56/Y74B/20F/32/”
00512FD7  |.  33C0          XOR EAX,EAX                   注册码前半部分计算完成
00512FD9  |.  5A            POP EDX
00512FDA  |.  59            POP ECX
00512FDB  |.  59            POP ECX
00512FDC  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
00512FDF  |.  68 F92F5100   PUSH UNPACKED.00512FF9
00512FE4  |>  8D45 D0       LEA EAX,DWORD PTR SS:[EBP-30]
00512FE7  |.  BA 0C000000   MOV EDX,0C
00512FEC  |.  E8 0B19EFFF   CALL UNPACKED.004048FC
00512FF1  \.  C3            RETN

校验码倒数第一位的计算》》》》》》
00515B0F  |.  E8 04BEFFFF   CALL UNPACKED.00511918         EAX="356742032"
00515B14  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]   
00515B17  |.  B9 03000000   MOV ECX,3                      取3位
00515B1C  |.  BA 04000000   MOV EDX,4                      从第4位开始取
00515B21  |.  E8 C2F2EEFF   CALL UNPACKED.00404DE8
00515B26  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]   EAX=“742”
00515B29  |.  E8 2239EFFF   CALL UNPACKED.00409450         变成16进制EAX=2E6H
00515B2E  |.  B9 19000000   MOV ECX,19                     ECX=19H
00515B33  |.  99            CDQ
00515B34  |.  F7F9          IDIV ECX                       EAX IDIV ECX\edx=11H   
00515B36  |.  83C2 41       ADD EDX,41                     EDX=EDX+41=11+41=52("R")
00515B39  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
00515B3C  |.  E8 77EFEEFF   CALL UNPACKED.00404AB8         将EDX=52转换成字符(“R”)
00515B41  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00515B44  |.  50            PUSH EAX
00515B45  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
00515B48  |.  50            PUSH EAX
00515B49  |.  8B83 E0060000 MOV EAX,DWORD PTR DS:[EBX+6E0]
00515B4F  |.  E8 3CF0EEFF   CALL UNPACKED.00404B90
00515B54  |.  8BD0          MOV EDX,EAX
00515B56  |.  B9 01000000   MOV ECX,1
00515B5B  |.  8B83 E0060000 MOV EAX,DWORD PTR DS:[EBX+6E0]
00515B61  |.  E8 82F2EEFF   CALL UNPACKED.00404DE8
00515B66  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]
00515B69  |.  58            POP EAX
00515B6A  |.  E8 65F1EEFF   CALL UNPACKED.00404CD4          与输入的注册码比较
00515B6F  |.  74 3F         JE SHORT UNPACKED.00515BB0      相等,呵呵
00515B71  |.  C683 48070000>MOV BYTE PTR DS:[EBX+748],1
00515B78  |.  33D2          XOR EDX,EDX
00515B7A  |.  8B83 70030000 MOV EAX,DWORD PTR DS:[EBX+370]

校验码倒数第二位的计算》》》》》》
00513640  |.  E8 D3E2FFFF   CALL UNPACKED.00511918
00513645  |.  8B45 B4       MOV EAX,DWORD PTR SS:[EBP-4C]    EAX="356742032"
00513648  |.  B9 02000000   MOV ECX,2                        取2位
0051364D  |.  BA 03000000   MOV EDX,3                        从第3位开始
00513652  |.  E8 9117EFFF   CALL UNPACKED.00404DE8
00513657  |.  8B45 B8       MOV EAX,DWORD PTR SS:[EBP-48]    EAX=67
0051365A  |.  E8 F15DEFFF   CALL UNPACKED.00409450           转换成16进制 EAX=43H
0051365F  |.  B9 19000000   MOV ECX,19
00513664  |.  99            CDQ
00513665  |.  F7F9          IDIV ECX                         EDX=11H
00513667  |.  83C2 41       ADD EDX,41                       EDX=EDX+41=11+41=47(“R”)
0051366A  |.  8D45 BC       LEA EAX,DWORD PTR SS:[EBP-44]
0051366D  |.  E8 4614EFFF   CALL UNPACKED.00404AB8
00513672  |.  8B45 BC       MOV EAX,DWORD PTR SS:[EBP-44]
00513675  |.  50            PUSH EAX
00513676  |.  8D45 B0       LEA EAX,DWORD PTR SS:[EBP-50]
00513679  |.  50            PUSH EAX
0051367A  |.  8B83 E0060000 MOV EAX,DWORD PTR DS:[EBX+6E0]
00513680  |.  E8 0B15EFFF   CALL UNPACKED.00404B90
00513685  |.  8BD0          MOV EDX,EAX
00513687  |.  4A            DEC EDX
00513688  |.  B9 01000000   MOV ECX,1
0051368D  |.  8B83 E0060000 MOV EAX,DWORD PTR DS:[EBX+6E0]
00513693  |.  E8 5017EFFF   CALL UNPACKED.00404DE8
00513698  |.  8B55 B0       MOV EDX,DWORD PTR SS:[EBP-50]
0051369B  |.  58            POP EAX
0051369C  |.  E8 3316EFFF   CALL UNPACKED.00404CD4
005136A1  |.  74 21         JE SHORT UNPACKED.005136C4
005136A3  |.  C683 48070000>MOV BYTE PTR DS:[EBX+748],1
005136AA  |.  33D2          XOR EDX,EDX
005136AC  |.  8B83 70030000 MOV EAX,DWORD PTR DS:[EBX+370]

校验码倒数第三位的计算》》》》》》
005161DF  |.  E8 34B7FFFF   CALL UNPACKED.00511918
005161E4  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]      EAX="356742032"
005161E7  |.  B9 03000000   MOV ECX,3                         取3位
005161EC  |.  BA 03000000   MOV EDX,3                         从第3位开始取
005161F1  |.  E8 F2EBEEFF   CALL UNPACKED.00404DE8
005161F6  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]      EAX=“674”
005161F9  |.  E8 5232EFFF   CALL UNPACKED.00409450            转换成16进制 EAX=2A2H
005161FE  |.  B9 19000000   MOV ECX,19
00516203  |.  99            CDQ
00516204  |.  F7F9          IDIV ECX                          EDX=18H
00516206  |.  83C2 41       ADD EDX,41                        EDX=EDX+41=18+41=59(“Y”)
00516209  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
0051620C  |.  E8 A7E8EEFF   CALL UNPACKED.00404AB8
00516211  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00516214  |.  50            PUSH EAX
00516215  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
00516218  |.  50            PUSH EAX
00516219  |.  8B83 E0060000 MOV EAX,DWORD PTR DS:[EBX+6E0]
0051621F  |.  E8 6CE9EEFF   CALL UNPACKED.00404B90
00516224  |.  8BD0          MOV EDX,EAX
00516226  |.  83EA 02       SUB EDX,2
00516229  |.  B9 01000000   MOV ECX,1
0051622E  |.  8B83 E0060000 MOV EAX,DWORD PTR DS:[EBX+6E0]
00516234  |.  E8 AFEBEEFF   CALL UNPACKED.00404DE8
00516239  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]
0051623C  |.  58            POP EAX
0051623D  |.  E8 92EAEEFF   CALL UNPACKED.00404CD4            与输入的注册码比较
00516242  |.  74 3F         JE SHORT UNPACKED.00516283        相等,呵呵
00516244  |.  C683 48070000>MOV BYTE PTR DS:[EBX+748],1
0051624B  |.  33D2          XOR EDX,EDX
0051624D  |.  8B83 70030000 MOV EAX,DWORD PTR DS:[EBX+370]

校验码倒数第四位的计算》》》》》》
00515FC4  |.  E8 4FB9FFFF   CALL UNPACKED.00511918             EAX=“356742032”
00515FC9  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
00515FCC  |.  B9 03000000   MOV ECX,3                          取3位
00515FD1  |.  BA 02000000   MOV EDX,2                          从第2位开始取
00515FD6  |.  E8 0DEEEEFF   CALL UNPACKED.00404DE8
00515FDB  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]       EAX=567
00515FDE  |.  E8 6D34EFFF   CALL UNPACKED.00409450             转换成16进制EAX=237H
00515FE3  |.  B9 19000000   MOV ECX,19
00515FE8  |.  99            CDQ
00515FE9  |.  F7F9          IDIV ECX                           EDX=11H
00515FEB  |.  83C2 41       ADD EDX,41                         EDX=EDX+41=11+41=52("R")
00515FEE  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
00515FF1  |.  E8 C2EAEEFF   CALL UNPACKED.00404AB8
00515FF6  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00515FF9  |.  50            PUSH EAX
00515FFA  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
00515FFD  |.  50            PUSH EAX
00515FFE  |.  8B83 E0060000 MOV EAX,DWORD PTR DS:[EBX+6E0]
00516004  |.  E8 87EBEEFF   CALL UNPACKED.00404B90
00516009  |.  8BD0          MOV EDX,EAX
0051600B  |.  83EA 03       SUB EDX,3
0051600E  |.  B9 01000000   MOV ECX,1
00516013  |.  8B83 E0060000 MOV EAX,DWORD PTR DS:[EBX+6E0]
00516019  |.  E8 CAEDEEFF   CALL UNPACKED.00404DE8
0051601E  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]
00516021  |.  58            POP EAX
00516022  |.  E8 ADECEEFF   CALL UNPACKED.00404CD4              与输入的注册码比较
00516027  |.  74 3F         JE SHORT UNPACKED.00516068          相等,呵呵
00516029  |.  C683 48070000>MOV BYTE PTR DS:[EBX+748],1
00516030  |.  33D2          XOR EDX,EDX
00516032  |.  8B83 70030000 MOV EAX,DWORD PTR DS:[EBX+370]

1、注意有好多地方进行校验,最后得到正确的注册码为:P/3U56/Y74B/20F/32/RYRR
2、CALL UNPACKED.00511918 这是关键的CALL,每次检验注册码都要通过它将序列号和用户名转换,我们可以都过这个CALL来查找关键比较,可以静态查找此CALL,紧接着的就是关键比较了,有好多,有的是重复的。
3、本软件脱壳后有自校验,用HEX Workshop打开原文件,看看校验和为7B200,然后在静态反汇编中查找7B200,就可发发现校验的地方,将JE修改为JMP(74修改为EB)


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

收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
2


谢谢了!大哥

只是我还是不明白,为什么跳过自效验以后,运行不下去呢?

显示某地址内存不能读写

会是脱壳的问题吗?还是程序作了什么手脚

请教大哥

――――――――――
学习学习学习中
2005-1-13 15:24
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
3
对不起,顶一下

――――――――――
学习学习学习中
2005-1-14 20:33
0
雪    币: 97697
活跃值: (200839)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
支持一下!!!
2005-1-14 20:59
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
5
顶顶顶

――――――――――――
学习学习学习
2005-1-18 08:04
0
游客
登录 | 注册 方可回帖
返回
//