评语编辑室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)
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!