| 
TA的每日心情|  | 开心 2015-8-23 23:49
 | 
|---|
 签到天数: 27 天 [LV.4]偶尔看看III | 
 
| 本帖最后由 GGLHY 于 2012-3-16 12:52 编辑 
 ****精灵V3.2版的注册算法分析实录 by GGLHY
 
 
 因工作需要接触到这个软件,顺便看了下它的注册算法流程,相对来说还是比较简单的!
 
 
 好,咱直奔主题,软件注册后有重启验证,直接来到:
 004135DE  |.  E8 461B0000   CALL SuperPro.00415129          ;  重启验证CALL,F7进去哦!
 004135DE  | CALL SuperPro.00415129                         ;  重启验证CALL,F7进去哦!复制代码
004135E3  |.  85C0          TEST EAX,EAX                             ;  EAX的值很关键!!!
004135E5  |.  74 0F         JE SHORT SuperPro.004135F6               ;  跳就是未注册版本
004135E7  |.  C705 9CE74600>MOV DWORD PTR DS:[46E79C],0              ;  全局变量
004135F1  |.  E9 26030000   JMP SuperPro.0041391C
004135F6  |>  8B8D 64FBFFFF MOV ECX,DWORD PTR SS:[EBP-49C]
004151DC  |.  E8 0F140000   CALL SuperPro.004165F0          ; \算法核心!接着F7复制代码00415129  /$  55            PUSH EBP
0041512A  |.  8BEC          MOV EBP,ESP
0041512C  |.  83EC 28       SUB ESP,28
0041512F  |.  894D D8       MOV DWORD PTR SS:[EBP-28],ECX
00415132  |.  C745 EC 00000>MOV DWORD PTR SS:[EBP-14],0              ;  注意这里,局部变量赋值为0!
  (省略部分代码)
0041517F  |.  68 B0EA4600   PUSH SuperPro.0046EAB0                   ; |RegSerial  读取注册表中保存的注册码
00415184  |.  8B4D E8       MOV ECX,DWORD PTR SS:[EBP-18]            ; |
00415187  |.  51            PUSH ECX                                 ; |hKey
00415188  |.  FF15 10E04500 CALL DWORD PTR DS:[<&ADVAPI32.RegQueryVa>; \RegQueryValueExA
0041518E  |.  8945 E0       MOV DWORD PTR SS:[EBP-20],EAX
00415191  |.  837D E0 00    CMP DWORD PTR SS:[EBP-20],0
00415195  |.  74 07         JE SHORT SuperPro.0041519E               ;  若注册码为空则局部变量还为0
00415197  |.  33C0          XOR EAX,EAX
00415199  |.  E9 8D000000   JMP SuperPro.0041522B                    ;  为零则跳过注册码验证环节!
0041519E  |>  C745 E4 00000>MOV DWORD PTR SS:[EBP-1C],0
004151A5  |.  EB 09         JMP SHORT SuperPro.004151B0
004151A7  |>  8B55 E4       /MOV EDX,DWORD PTR SS:[EBP-1C]
004151AA  |.  83C2 01       |ADD EDX,1
004151AD  |.  8955 E4       |MOV DWORD PTR SS:[EBP-1C],EDX
004151B0  |>  837D E4 14     CMP DWORD PTR SS:[EBP-1C],14            ; 保存的假码长度与14H比较!
004151B4  |.  7D 17         |JGE SHORT SuperPro.004151CD
004151B6  |.  8B45 D8       |MOV EAX,DWORD PTR SS:[EBP-28]
004151B9  |.  0345 E4       |ADD EAX,DWORD PTR SS:[EBP-1C]
004151BC  |.  8B4D E4       |MOV ECX,DWORD PTR SS:[EBP-1C]
004151BF  |.  8A90 C4000000 |MOV DL,BYTE PTR DS:[EAX+C4]             ; 依次取保存的假码每一位ASC
004151C5  |.  8891 10334700 |MOV BYTE PTR DS:[ECX+473310],DL
004151CB  |.^ EB DA         \JMP SHORT SuperPro.004151A7
004151CD  |>  C605 24334700>MOV BYTE PTR DS:[473324],0               ;
004151D4  |.  68 10334700   PUSH SuperPro.00473310                   ; /读取保存的注册码
004151D9  |.  8B4D D8       MOV ECX,DWORD PTR SS:[EBP-28]           ; |
004151DC  | CALL SuperPro.004165F0                       ; \算法核心!接着F7复制代码
004151E1  |.  8945 EC       MOV DWORD PTR SS:[EBP-14],EAX
004151E4  |.  C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0               ;  这里,还有个局部变量置0
004151EB  |.  837D EC 00    CMP DWORD PTR SS:[EBP-14],0
004151EF  |.  74 07         JE SHORT SuperPro.004151F8
004151F1  |.  C745 FC 01000>MOV DWORD PTR SS:[EBP-4],1               ;  注意看这里,赋值为1
004151F8  |>  6A 04         PUSH 4                                   ; /BufSize = 4
004151FA  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]             ; |
004151FD  |.  50            PUSH EAX                                 ; |Buffer
004151FE  |.  6A 04         PUSH 4                                   ; |ValueType = REG_DWORD
00415200  |.  6A 00         PUSH 0                                   ; |Reserved = 0
00415202  |.  68 BCEA4600   PUSH SuperPro.0046EABC                   ; |syswell
00415207  |.  8B4D E8       MOV ECX,DWORD PTR SS:[EBP-18]            ; |
0041520A  |.  51            PUSH ECX                                 ; |hKey
0041520B  |.  FF15 14E04500 CALL DWORD PTR DS:[<&ADVAPI32.RegSetValu>; \RegSetValueExA
00415211  |.  8945 F8       MOV DWORD PTR SS:[EBP-8],EAX
00415214  |.  837D F8 00    CMP DWORD PTR SS:[EBP-8],0
00415218  |.  74 04         JE SHORT SuperPro.0041521E
0041521A  |.  33C0          XOR EAX,EAX
0041521C  |.  EB 0D         JMP SHORT SuperPro.0041522B
0041521E  |>  8B55 E8       MOV EDX,DWORD PTR SS:[EBP-18]
00415221  |.  52            PUSH EDX                                 ; /hKey
00415222  |.  FF15 00E04500 CALL DWORD PTR DS:[<&ADVAPI32.RegCloseKe>; \RegCloseKey
00415228  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]            ;  这里局部变量很关键,赋值给EAX。可以放C-4了!哈哈
0041522B  |>  8BE5          MOV ESP,EBP
0041522D  |.  5D            POP EBP
0041522E  \.  C3            RETN
============================================================================================================复制代码004165F0  /$  55            PUSH EBP
004165F1  |.  8BEC          MOV EBP,ESP
004165F3  |.  6A FF         PUSH -1
004165F5  |.  68 3CAC4500   PUSH SuperPro.0045AC3C                   ;  SE 处理程序安装
004165FA  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00416600  |.  50            PUSH EAX
00416601  |.  64:8925 00000>MOV DWORD PTR FS:[0],ESP
00416608  |.  81EC 8C000000 SUB ESP,8C
0041660E  |.  898D 68FFFFFF MOV DWORD PTR SS:[EBP-98],ECX
00416614  |.  C745 F0 01000>MOV DWORD PTR SS:[EBP-10],1
0041661B  |.  C785 78FFFFFF>MOV DWORD PTR SS:[EBP-88],0
00416625  |.  EB 0F         JMP SHORT SuperPro.00416636
00416627  |>  8B85 78FFFFFF /MOV EAX,DWORD PTR SS:[EBP-88]
0041662D  |.  83C0 01       |ADD EAX,1
00416630  |.  8985 78FFFFFF |MOV DWORD PTR SS:[EBP-88],EAX
00416636  |>  B9 40314700    MOV ECX,SuperPro.00473140               ;  机器码
0041663B  |.  E8 50B6FEFF   |CALL SuperPro.00401C90
00416640  |.  3985 78FFFFFF |CMP DWORD PTR SS:[EBP-88],EAX
00416646  |.  7D 1D         |JGE SHORT SuperPro.00416665             ;  机器码是否取完
00416648  |.  8B8D 78FFFFFF |MOV ECX,DWORD PTR SS:[EBP-88]
0041664E  |.  51            |PUSH ECX                                ; /Arg1
0041664F  |.  B9 40314700   |MOV ECX,SuperPro.00473140               ; |
00416654  |.  E8 5733FFFF   |CALL SuperPro.004099B0                  ; \SuperPro.004099B0
00416659  |.  8B95 78FFFFFF |MOV EDX,DWORD PTR SS:[EBP-88]           ;  机器码
0041665F  |.  884415 D8     |MOV BYTE PTR SS:[EBP+EDX-28],AL         ;  依次取机器码每一位ASC
00416663  |.^ EB C2         \JMP SHORT SuperPro.00416627
00416665  |>  EB 0F         JMP SHORT SuperPro.00416676
00416667  |>  8B85 78FFFFFF /MOV EAX,DWORD PTR SS:[EBP-88]
0041666D  |.  83C0 01       |ADD EAX,1
00416670  |.  8985 78FFFFFF |MOV DWORD PTR SS:[EBP-88],EAX
00416676  |>  83BD 78FFFFFF> CMP DWORD PTR SS:[EBP-88],14            ;  机器码长度不小于20位吗?
0041667D  |.  7D 15         |JGE SHORT SuperPro.00416694
0041667F  |.  8B8D 78FFFFFF |MOV ECX,DWORD PTR SS:[EBP-88]
00416685  |.  83C1 41       |ADD ECX,41
00416688  |.  8B95 78FFFFFF |MOV EDX,DWORD PTR SS:[EBP-88]
0041668E  |.  884C15 D8     |MOV BYTE PTR SS:[EBP+EDX-28],CL
00416692  |.^ EB D3         \JMP SHORT SuperPro.00416667
00416694  |>  8D45 80       LEA EAX,DWORD PTR SS:[EBP-80]
00416697  |.  50            PUSH EAX                                 ; /Arg1
00416698  |.  E8 3085FFFF   CALL SuperPro.0040EBCD                   ; \机器码MD5运算,结果设为S1
0041669D  |.  83C4 04       ADD ESP,4
004166A0  |.  6A 14         PUSH 14                                  ; /Arg3 = 00000014
004166A2  |.  8D4D D8       LEA ECX,DWORD PTR SS:[EBP-28]            ; 机器码
004166A5  |.  51            PUSH ECX                                 ; |Arg2
004166A6  |.  8D55 80       LEA EDX,DWORD PTR SS:[EBP-80]            ; |
004166A9  |.  52            PUSH EDX                                 ; |Arg1
004166AA  |.  E8 5E85FFFF   CALL SuperPro.0040EC0D                   ; \SuperPro.0040EC0D
004166AF  |.  83C4 0C       ADD ESP,0C
004166B2  |.  8D45 80       LEA EAX,DWORD PTR SS:[EBP-80]
004166B5  |.  50            PUSH EAX                                 ; /Arg2
004166B6  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
004166BC  |.  51            PUSH ECX                                 ; |Arg1
004166BD  |.  E8 1F8DFFFF   CALL SuperPro.0040F3E1                   ; \SuperPro.0040F3E1
004166C2  |.  83C4 08       ADD ESP,8
004166C5  |.  C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0
004166CC  |.  6A 00         PUSH 0                                   ; /第一位
004166CE  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
004166D4  |.  E8 D732FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
004166D9  |.  8845 D8       MOV BYTE PTR SS:[EBP-28],AL              ;  S1第一位取代机器码第一位
004166DC  |.  6A 04         PUSH 4                                   ; /第5位
004166DE  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
004166E4  |.  E8 C732FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
004166E9  |.  8845 DC       MOV BYTE PTR SS:[EBP-24],AL              ;  S1第5位取代机器码第5位
004166EC  |.  6A 06         PUSH 6                                   ; /第7位
004166EE  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
004166F4  |.  E8 B732FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
004166F9  |.  8845 DE       MOV BYTE PTR SS:[EBP-22],AL              ;  S1第7位取代机器码第7位
004166FC  |.  6A 0C         PUSH 0C                                  ; /第13位
004166FE  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
00416704  |.  E8 A732FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
00416709  |.  8845 E4       MOV BYTE PTR SS:[EBP-1C],AL              ;  S1第13位取代机器码第13位
0041670C  |.  C785 7CFFFFFF>MOV DWORD PTR SS:[EBP-84],0              ;  机器码变形完毕,设为Q
00416716  |.  EB 0F         JMP SHORT SuperPro.00416727
[hide]00416718  |>  8B95 7CFFFFFF /MOV EDX,DWORD PTR SS:[EBP-84]
0041671E  |.  83C2 01       |ADD EDX,1
00416721  |.  8995 7CFFFFFF |MOV DWORD PTR SS:[EBP-84],EDX
00416727  |>  83BD 7CFFFFFF> CMP DWORD PTR SS:[EBP-84],14            ;  计数器:20
0041672E  |.  0F8D 87000000 |JGE SuperPro.004167BB
00416734  |.  8B85 7CFFFFFF |MOV EAX,DWORD PTR SS:[EBP-84]
0041673A  |.  8A4C05 D8     |MOV CL,BYTE PTR SS:[EBP+EAX-28]         ;  变形机器码Q每一位ASC
0041673E  |.  884D EC       |MOV BYTE PTR SS:[EBP-14],CL
00416741  |.  0FBE55 EC     |MOVSX EDX,BYTE PTR SS:[EBP-14]
00416745  |.  83FA 30       |CMP EDX,30                              ;  变形机器码Q每一位ASC:30
00416748  |.  7C 1E         |JL SHORT SuperPro.00416768
0041674A  |.  0FBE45 EC     |MOVSX EAX,BYTE PTR SS:[EBP-14]
0041674E  |.  83F8 39       |CMP EAX,39
00416751  |.  7F 15         |JG SHORT SuperPro.00416768              ;  30-39,检测是否为数字
00416753  |.  0FBE4D EC     |MOVSX ECX,BYTE PTR SS:[EBP-14]          ;  每一位ASC
00416757  |.  BA 69000000   |MOV EDX,69                              ;  i
0041675C  |.  2BD1          |SUB EDX,ECX                             ;  69 - 当前所取的ASC
0041675E  |.  8B85 7CFFFFFF |MOV EAX,DWORD PTR SS:[EBP-84]
00416764  |.  885405 D8     |MOV BYTE PTR SS:[EBP+EAX-28],DL         ;  差值保存起来
00416768  |>  0FBE4D EC     |MOVSX ECX,BYTE PTR SS:[EBP-14]          ;  所取的Q的字符为字母则直接来到这里
0041676C  |.  83F9 41       |CMP ECX,41                              ;  差与41(A)比较
0041676F  |.  7C 1E         |JL SHORT SuperPro.0041678F              ;  小于则跳,跳则保存当前所取变形机器码Q的ASC
00416771  |.  0FBE55 EC     |MOVSX EDX,BYTE PTR SS:[EBP-14]
00416775  |.  83FA 5A       |CMP EDX,5A                              ;  与Z比较
00416778  |.  7F 15         |JG SHORT SuperPro.0041678F              ;  41~5A,检测是否为大写字母
0041677A  |.  0FBE45 EC     |MOVSX EAX,BYTE PTR SS:[EBP-14]          ;  当前所取的ASC
0041677E  |.  B9 9B000000   |MOV ECX,9B                              ;  =9B
00416783  |.  2BC8          |SUB ECX,EAX                             ;  9B - 所取得ASC
00416785  |.  8B95 7CFFFFFF |MOV EDX,DWORD PTR SS:[EBP-84]
0041678B  |.  884C15 D8     |MOV BYTE PTR SS:[EBP+EDX-28],CL         ;  差值保存起来
0041678F  |>  0FBE45 EC     |MOVSX EAX,BYTE PTR SS:[EBP-14]          ;  当前所取的ASC
00416793  |.  83F8 61       |CMP EAX,61                              ;  当前所取的ASC与61比较
00416796  |.  7C 1E         |JL SHORT SuperPro.004167B6              ;  小于则跳,跳则进行下一位
00416798  |.  0FBE4D EC     |MOVSX ECX,BYTE PTR SS:[EBP-14]          ;  当前所取的ASC与7A比较
0041679C  |.  83F9 7A       |CMP ECX,7A
0041679F  |.  7F 15         |JG SHORT SuperPro.004167B6              ;  大于则进行下一位
004167A1  |.  0FBE55 EC     |MOVSX EDX,BYTE PTR SS:[EBP-14]          ;  61~7A,检测是否为小写字母。
004167A5  |.  B8 DB000000   |MOV EAX,0DB
004167AA  |.  2BC2          |SUB EAX,EDX
004167AC  |.  8B8D 7CFFFFFF |MOV ECX,DWORD PTR SS:[EBP-84]
004167B2  |.  88440D D8     |MOV BYTE PTR SS:[EBP+ECX-28],AL [/hide]
004167B6  |>^ E9 5DFFFFFF   \JMP SuperPro.00416718                   ;  循环结束,得到再次变形后的机器码,设为P
004167BB  |>  8A55 D9       MOV DL,BYTE PTR SS:[EBP-27]              ;  P的第2位
004167BE  |.  8855 EC       MOV BYTE PTR SS:[EBP-14],DL              
004167C1  |.  8A45 DE       MOV AL,BYTE PTR SS:[EBP-22]              ;  P的第7位
004167C4  |.  8845 D9       MOV BYTE PTR SS:[EBP-27],AL              ;  P的第7位替换P的第2位
004167C7  |.  8A4D EC       MOV CL,BYTE PTR SS:[EBP-14]              ;  P的第2位
004167CA  |.  884D DE       MOV BYTE PTR SS:[EBP-22],CL              ;  P的第2位替换P的第7位
004167CD  |.  8A55 DB       MOV DL,BYTE PTR SS:[EBP-25]              ;  P的第4位(X)
004167D0  |.  8855 EC       MOV BYTE PTR SS:[EBP-14],DL              ;  P的第4位
004167D3  |.  8A45 E2       MOV AL,BYTE PTR SS:[EBP-1E]              ;  P的第11位
004167D6  |.  8845 DB       MOV BYTE PTR SS:[EBP-25],AL              ;  P的第11位替换P的第4位
004167D9  |.  8A4D EC       MOV CL,BYTE PTR SS:[EBP-14]              ;  P的第4位
004167DC  |.  884D E2       MOV BYTE PTR SS:[EBP-1E],CL              ;  P的第4位替换P的第11位
004167DF  |.  8A55 DD       MOV DL,BYTE PTR SS:[EBP-23]              ;  P的第6位
004167E2  |.  8855 EC       MOV BYTE PTR SS:[EBP-14],DL              ;  P的第6位
004167E5  |.  8A45 E4       MOV AL,BYTE PTR SS:[EBP-1C]              ;  P的第13位
004167E8  |.  8845 DD       MOV BYTE PTR SS:[EBP-23],AL              ;  P的第13位替换P的第6位
004167EB  |.  8A4D EC       MOV CL,BYTE PTR SS:[EBP-14]              ;  P的第6位
004167EE  |.  884D E4       MOV BYTE PTR SS:[EBP-1C],CL              ;  P的第6位替换P的第13位
004167F1  |.  8A55 DF       MOV DL,BYTE PTR SS:[EBP-21]              ;  P的第8位
004167F4  |.  8855 EC       MOV BYTE PTR SS:[EBP-14],DL
004167F7  |.  8A45 E6       MOV AL,BYTE PTR SS:[EBP-1A]              ;  P的第15位
004167FA  |.  8845 DF       MOV BYTE PTR SS:[EBP-21],AL              ;  P的第15位替换P的第8位
004167FD  |.  8A4D EC       MOV CL,BYTE PTR SS:[EBP-14]              ;  P的第8位
00416800  |.  884D E6       MOV BYTE PTR SS:[EBP-1A],CL              ;  P的第8位替换P的第15位
00416803  |.  8A55 E1       MOV DL,BYTE PTR SS:[EBP-1F]              ;  P的第10位
00416806  |.  8855 EC       MOV BYTE PTR SS:[EBP-14],DL
00416809  |.  8A45 E5       MOV AL,BYTE PTR SS:[EBP-1B]              ;  P的第14位
0041680C  |.  8845 E1       MOV BYTE PTR SS:[EBP-1F],AL              ;  P的第14位替换第10位
0041680F  |.  8A4D EC       MOV CL,BYTE PTR SS:[EBP-14]              ;  P的第10位
00416812  |.  884D E5       MOV BYTE PTR SS:[EBP-1B],CL              ;  P的第10位替换第14位
00416815  |.  C785 78FFFFFF>MOV DWORD PTR SS:[EBP-88],0              ;  P再次变形,设为M
0041681F  |.  EB 0F         JMP SHORT SuperPro.00416830
00416821  |>  8B95 78FFFFFF /MOV EDX,DWORD PTR SS:[EBP-88]
00416827  |.  83C2 01       |ADD EDX,1
0041682A  |.  8995 78FFFFFF |MOV DWORD PTR SS:[EBP-88],EDX
00416830  |>  83BD 78FFFFFF> CMP DWORD PTR SS:[EBP-88],10            ;  暂时只比较M前16位
00416837  |.  7D 45         |JGE SHORT SuperPro.0041687E
00416839  |.  8B45 08       |MOV EAX,DWORD PTR SS:[EBP+8]            ;  假码
0041683C  |.  0385 78FFFFFF |ADD EAX,DWORD PTR SS:[EBP-88]
00416842  |.  0FBE08        |MOVSX ECX,BYTE PTR DS:[EAX]             ;  依次取假码每一位ASC
00416845  |.  8B95 78FFFFFF |MOV EDX,DWORD PTR SS:[EBP-88]
0041684B  |.  33C0          |XOR EAX,EAX
0041684D  |.  8A4415 D8     |MOV AL,BYTE PTR SS:[EBP+EDX-28]         ;  依次取M的每一位
00416851  |.  3BC8          |CMP ECX,EAX                             ;  比较!
00416853  |.  74 27         |JE SHORT SuperPro.0041687C              ;  必须跳,否则挂了!    
00416855  |.  C785 70FFFFFF>|MOV DWORD PTR SS:[EBP-90],0
0041685F  |.  C745 FC FFFFF>|MOV DWORD PTR SS:[EBP-4],-1
00416866  |.  8D8D 74FFFFFF |LEA ECX,DWORD PTR SS:[EBP-8C]
0041686C  |.  E8 AB200400   |CALL <JMP.&MFC42.#800>
00416871  |.  8B85 70FFFFFF |MOV EAX,DWORD PTR SS:[EBP-90]
00416877  |.  E9 5F010000   |JMP SuperPro.004169DB
0041687C  |>^ EB A3         \JMP SHORT SuperPro.00416821
0041687E  |>  6A 1E         PUSH 1E                                  ; /S1的第31位ASC
00416880  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
00416886  |.  E8 2531FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
0041688B  |.  A2 A0E74600   MOV BYTE PTR DS:[46E7A0],AL              ;  第31位的asc到[46E7A0]
00416890  |.  6A 0A         PUSH 0A                                  ; /S1的asc第11位
00416892  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
00416898  |.  E8 1331FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
0041689D  |.  A2 A1E74600   MOV BYTE PTR DS:[46E7A1],AL              ;  S1的第11位asc到:[46E7A1]
004168A2  |.  6A 06         PUSH 6                                   ; /S1的第7位
004168A4  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
004168AA  |.  E8 0131FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
004168AF  |.  A2 09334700   MOV BYTE PTR DS:[473309],AL              ;  S1的第7位asc到[473309]
004168B4  |.  6A 04         PUSH 4                                   ; /S1的第5位
004168B6  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
004168BC  |.  E8 EF30FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
004168C1  |.  A2 08334700   MOV BYTE PTR DS:[473308],AL              ;  S1的第5位ASC到[473308]
004168C6  |.  33C9          XOR ECX,ECX
004168C8  |.  8A0D A0E74600 MOV CL,BYTE PTR DS:[46E7A0]              ;  S1的第31位
004168CE  |.  83F9 61       CMP ECX,61                               ;  S1的第31位asc与61比较
004168D1  |.  7C 19         JL SHORT SuperPro.004168EC               ;  小则跳
004168D3  |.  33D2          XOR EDX,EDX
004168D5  |.  8A15 A0E74600 MOV DL,BYTE PTR DS:[46E7A0]              ;  第31位ASC
004168DB  |.  83FA 7A       CMP EDX,7A                               ;  :7A(z)
004168DE  |.  7F 0C         JG SHORT SuperPro.004168EC               ;  大则跳(判断是否小写字母)
004168E0  |.  A0 A0E74600   MOV AL,BYTE PTR DS:[46E7A0]              ;  第31位ASC
004168E5  |.  2C 20         SUB AL,20                                ;  转大写字母
004168E7  |.  A2 A0E74600   MOV BYTE PTR DS:[46E7A0],AL              ;  第31位转成大写
004168EC  |>  33C9          XOR ECX,ECX
004168EE  |.  8A0D A1E74600 MOV CL,BYTE PTR DS:[46E7A1]              ;  S1的第11位asc
004168F4  |.  83F9 61       CMP ECX,61                               ;  流程同上
004168F7  |.  7C 19         JL SHORT SuperPro.00416912
004168F9  |.  33D2          XOR EDX,EDX
004168FB  |.  8A15 A1E74600 MOV DL,BYTE PTR DS:[46E7A1]
00416901  |.  83FA 7A       CMP EDX,7A
00416904  |.  7F 0C         JG SHORT SuperPro.00416912
00416906  |.  A0 A1E74600   MOV AL,BYTE PTR DS:[46E7A1]
0041690B  |.  2C 20         SUB AL,20
0041690D  |.  A2 A1E74600   MOV BYTE PTR DS:[46E7A1],AL              ;  S1的第11位转为大写
00416912  |>  33C9          XOR ECX,ECX
00416914  |.  8A0D 09334700 MOV CL,BYTE PTR DS:[473309]              ;  S1的第7位asc
0041691A  |.  83F9 61       CMP ECX,61                               ;  流程同上
0041691D  |.  7C 19         JL SHORT SuperPro.00416938
0041691F  |.  33D2          XOR EDX,EDX
00416921  |.  8A15 09334700 MOV DL,BYTE PTR DS:[473309]
00416927  |.  83FA 7A       CMP EDX,7A
0041692A  |.  7F 0C         JG SHORT SuperPro.00416938
0041692C  |.  A0 09334700   MOV AL,BYTE PTR DS:[473309]
00416931  |.  2C 20         SUB AL,20
00416933  |.  A2 09334700   MOV BYTE PTR DS:[473309],AL              ;  S1的第7位转为大写
00416938  |>  33C9          XOR ECX,ECX
0041693A  |.  8A0D 08334700 MOV CL,BYTE PTR DS:[473308]              ;  S1的第5位ASC
00416940  |.  83F9 61       CMP ECX,61                               ;  流程同上
00416943  |.  7C 19         JL SHORT SuperPro.0041695E               ;  本例为35,跳了
00416945  |.  33D2          XOR EDX,EDX
00416947  |.  8A15 08334700 MOV DL,BYTE PTR DS:[473308]
0041694D  |.  83FA 7A       CMP EDX,7A
00416950  |.  7F 0C         JG SHORT SuperPro.0041695E
00416952  |.  A0 08334700   MOV AL,BYTE PTR DS:[473308]
00416957  |.  2C 20         SUB AL,20
00416959  |.  A2 08334700   MOV BYTE PTR DS:[473308],AL
0041695E  |>  33C9          XOR ECX,ECX
00416960  |.  8A0D A0E74600 MOV CL,BYTE PTR DS:[46E7A0]              ;  第31位大写
00416966  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]             ;  假码
00416969  |.  0FBE42 10     MOVSX EAX,BYTE PTR DS:[EDX+10]           ;  假码第17位
0041696D  |.  3BC8          CMP ECX,EAX                              ;  第31位大写:假码第17位
0041696F  |.  75 42         JNZ SHORT SuperPro.004169B3              ;  不等就挂了!
00416971  |.  33C9          XOR ECX,ECX
00416973  |.  8A0D A1E74600 MOV CL,BYTE PTR DS:[46E7A1]              ;  S1的第11位大写
00416979  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]
0041697C  |.  0FBE42 11     MOVSX EAX,BYTE PTR DS:[EDX+11]           ;  假码第18位
00416980  |.  3BC8          CMP ECX,EAX                              ;  S1的第11位大写:假码第18位
00416982  |.  75 2F         JNZ SHORT SuperPro.004169B3              ;  不等就挂了!
00416984  |.  33C9          XOR ECX,ECX
00416986  |.  8A0D 09334700 MOV CL,BYTE PTR DS:[473309]              ;  S1的第7位大写
0041698C  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]
0041698F  |.  0FBE42 12     MOVSX EAX,BYTE PTR DS:[EDX+12]           ;  假码第19位
00416993  |.  3BC8          CMP ECX,EAX                              ;  S1的第7位大写:假码第19位
00416995  |.  75 1C         JNZ SHORT SuperPro.004169B3              ;  不等就挂了!
00416997  |.  33C9          XOR ECX,ECX
00416999  |.  8A0D 08334700 MOV CL,BYTE PTR DS:[473308]              ;  S1的第5位
0041699F  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]
004169A2  |.  0FBE42 13     MOVSX EAX,BYTE PTR DS:[EDX+13]           ;  假码第20位
004169A6  |.  3BC8          CMP ECX,EAX                              ;  S1的第5位:假码第20位
004169A8  |.  75 09         JNZ SHORT SuperPro.004169B3              ;  不等就挂了!
[color=Red]004169AA  |.  C745 F0 01000>MOV DWORD PTR SS:[EBP-10],1              ;  注意这个局部变量赋值为1[/color]
004169B1  |.  EB 07         JMP SHORT SuperPro.004169BA
[color=Red]004169B3  |>  C745 F0 00000>MOV DWORD PTR SS:[EBP-10],0              ;  跳到这里则置0,放炸药![/color]
004169BA  |>  8B4D F0       MOV ECX,DWORD PTR SS:[EBP-10]            ;  这里接着改成004169b1处的命令
004169BD  |.  898D 6CFFFFFF MOV DWORD PTR SS:[EBP-94],ECX
004169C3  |.  C745 FC FFFFF>MOV DWORD PTR SS:[EBP-4],-1
004169CA  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]
004169D0  |.  E8 471F0400   CALL <JMP.&MFC42.#800>
004169D5  |.  8B85 6CFFFFFF MOV EAX,DWORD PTR SS:[EBP-94]
004169DB  |>  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
004169DE  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
004169E5  |.  8BE5          MOV ESP,EBP
004169E7  |.  5D            POP EBP
004169E8  \.  C2 0400       RETN 4
ok,咱总结下这软件的算法:
 1.取机器码的MD5(小写),结果设为S1。
 本例为41c85dfd56b43e75774a2a5cc65b2bc8
 2.取S1的第1、5、7、13位取代机器码相应位置上的字符。得到变形机器码,设为Q;
 3.
 4.P按照下列方式再次转换:
 P的第2和第7位互换;
 P的第4和第11位互换;
 P的第6和第13位互换;
 P的第8和第15位互换;
 P的第10和第14位互换;
 P再次变形,设为M
 5.取S1的第31、11、7、5位(如果是小写字母则转大写)分别取代:
 M的第17、18、19、20位。
 (还记得先前暂时只比较了16位吗?现在齐活了!)
 
 
 
 注册信息保存在:
 
 
 删除变回未注册版!
 =================================================================================================
 
 
 
 另(一):
 -----------------------------------------------------------------------------------------------
 S1的来历:
 00416698  |.  E8 3085FFFF   CALL SuperPro.0040EBCD      ; \机器码MD5运算,咱进来看看就清楚了!
 0040EBCD  /$  55            PUSH EBP
 0040EBCE  |.  8BEC          MOV EBP,ESP
 0040EBD0  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
 0040EBD3  |.  C740 14 00000>MOV DWORD PTR DS:[EAX+14],0
 0040EBDA  |.  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]
 0040EBDD  |.  C741 10 00000>MOV DWORD PTR DS:[ECX+10],0
 0040EBE4  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]
 0040EBE7  |.  C702 01234567 MOV DWORD PTR DS:[EDX],67452301        标准的MD5!
 0040EBED  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
 0040EBF0  |.  C740 04 89ABC>MOV DWORD PTR DS:[EAX+4],EFCDAB89
 0040EBF7  |.  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]
 0040EBFA  |.  C741 08 FEDCB>MOV DWORD PTR DS:[ECX+8],98BADCFE
 0040EC01  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]
 0040EC04  |.  C742 0C 76543>MOV DWORD PTR DS:[EDX+C],10325476
 0040EC0B  |.  5D            POP EBP
 0040EC0C  \.  C3            RETN
 ---------------------------------------------------------------------------------------------------
 
 
 
 另(二):
 --------------------------------------------------------------------------------------------------
 关于全局变量,再看看这里:
 004135E7  |.  C705 9CE74600>MOV DWORD PTR DS:[46E79C],0              ;  全局变量!
 参考位于 SuperPro:.text 到 0046E79C
 地址       反汇编                                    注释
 0040150D   CMP DWORD PTR DS:[46E79C],0               DS:[0046E79C]=00000001
 0040C0A5   CMP DWORD PTR DS:[46E79C],0               DS:[0046E79C]=00000001
 004122F4   CMP DWORD PTR DS:[46E79C],0               DS:[0046E79C]=00000001
 004135E7   MOV DWORD PTR DS:[46E79C],0               (初始 CPU 选择)
 00413CAC   CMP DWORD PTR DS:[46E79C],0               DS:[0046E79C]=00000001
 00416B79   CMP DWORD PTR DS:[46E79C],0               DS:[0046E79C]=00000001
 
 看来是的哈。好几处呢!比如:
 00416B79  |.  833D 9CE74600>CMP DWORD PTR DS:[46E79C],0
 00416B80  |.  74 1F         JE SHORT SuperPro.00416BA1
 00416B82  |.  D905 74EC4600 FLD DWORD PTR DS:[46EC74]
 00416B88  |.  83EC 08       SUB ESP,8
 00416B8B  |.  DD1C24        FSTP QWORD PTR SS:[ESP]
 00416B8E  |.  68 94EC4600   PUSH SuperPro.0046EC94                   ;  ****精灵 V%.1f(未注册)
 00416B93  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
 00416B96  |.  50            PUSH EAX
 00416B97  |.  E8 B8210400   CALL <JMP.&MFC42.#2818>
 00416B9C  |.  83C4 10       ADD ESP,10
 00416B9F  |.  EB 1D         JMP SHORT SuperPro.00416BBE
 00416BA1  |>  D905 74EC4600 FLD DWORD PTR DS:[46EC74]
 00416BA7  |.  83EC 08       SUB ESP,8
 00416BAA  |.  DD1C24        FSTP QWORD PTR SS:[ESP]
 00416BAD  |.  68 B0EC4600   PUSH SuperPro.0046ECB0                   ;  ****精灵 V%.1f
 
 又比如:
 00413CA5  /.  55            PUSH EBP
 00413CA6  |.  8BEC          MOV EBP,ESP
 00413CA8  |.  51            PUSH ECX
 00413CA9  |.  894D FC       MOV DWORD PTR SS:[EBP-4],ECX
 00413CAC  |.  833D 9CE74600>CMP DWORD PTR DS:[46E79C],0
 00413CB3  |.  75 19         JNZ SHORT SuperPro.00413CCE
 00413CB5  |.  68 FCE84600   PUSH SuperPro.0046E8FC                   ;  您已经获得了注册版,已没有任何使用限制!\n感谢您的支持和购买!
 00413CBA  |.  68 0E040000   PUSH 40E
 ---------------------------------------------------------------------------------------------------------
 
 
 
   
 
 
   
 
 
   
 
 如果兄弟(姐妹)知道这个软件的名称,还请“沉默是金”!
 毕竟我们要体谅下软件作者挑灯夜战,劳心费力的劳动,尊重他的劳动成果,尊重作者的版权!
 谢谢!
 | 
 评分
查看全部评分
 |