飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 16743|回复: 50

[原创] ****精灵V3.2版的注册算法分析实录 by GGLHY

    [复制链接]
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2011-3-7 01:26:07 | 显示全部楼层 |阅读模式
    本帖最后由 GGLHY 于 2012-3-16 12:52 编辑

      ****精灵V3.2版的注册算法分析实录 by GGLHY


        因工作需要接触到这个软件,顺便看了下它的注册算法流程,相对来说还是比较简单的!


    好,咱直奔主题,软件注册后有重启验证,直接来到:
    004135DE  |.  E8 461B0000   CALL SuperPro.00415129          ;  重启验证CALL,F7进去哦!

    1. 004135E3  |.  85C0          TEST EAX,EAX                             ;  EAX的值很关键!!!
    2. 004135E5  |.  74 0F         JE SHORT SuperPro.004135F6               ;  跳就是未注册版本
    3. 004135E7  |.  C705 9CE74600>MOV DWORD PTR DS:[46E79C],0              ;  全局变量
    4. 004135F1  |.  E9 26030000   JMP SuperPro.0041391C
    5. 004135F6  |>  8B8D 64FBFFFF MOV ECX,DWORD PTR SS:[EBP-49C]
    复制代码
    004135DE  | CALL SuperPro.00415129                         ;  重启验证CALL,F7进去哦!
    1. 00415129  /$  55            PUSH EBP
    2. 0041512A  |.  8BEC          MOV EBP,ESP
    3. 0041512C  |.  83EC 28       SUB ESP,28
    4. 0041512F  |.  894D D8       MOV DWORD PTR SS:[EBP-28],ECX
    5. 00415132  |.  C745 EC 00000>MOV DWORD PTR SS:[EBP-14],0              ;  注意这里,局部变量赋值为0!
    6.   (省略部分代码)
    7. 0041517F  |.  68 B0EA4600   PUSH SuperPro.0046EAB0                   ; |RegSerial  读取注册表中保存的注册码
    8. 00415184  |.  8B4D E8       MOV ECX,DWORD PTR SS:[EBP-18]            ; |
    9. 00415187  |.  51            PUSH ECX                                 ; |hKey
    10. 00415188  |.  FF15 10E04500 CALL DWORD PTR DS:[<&ADVAPI32.RegQueryVa>; \RegQueryValueExA
    11. 0041518E  |.  8945 E0       MOV DWORD PTR SS:[EBP-20],EAX
    12. 00415191  |.  837D E0 00    CMP DWORD PTR SS:[EBP-20],0
    13. 00415195  |.  74 07         JE SHORT SuperPro.0041519E               ;  若注册码为空则局部变量还为0
    14. 00415197  |.  33C0          XOR EAX,EAX
    15. 00415199  |.  E9 8D000000   JMP SuperPro.0041522B                    ;  为零则跳过注册码验证环节!
    16. 0041519E  |>  C745 E4 00000>MOV DWORD PTR SS:[EBP-1C],0
    17. 004151A5  |.  EB 09         JMP SHORT SuperPro.004151B0
    18. 004151A7  |>  8B55 E4       /MOV EDX,DWORD PTR SS:[EBP-1C]
    19. 004151AA  |.  83C2 01       |ADD EDX,1
    20. 004151AD  |.  8955 E4       |MOV DWORD PTR SS:[EBP-1C],EDX
    21. 004151B0  |>  837D E4 14     CMP DWORD PTR SS:[EBP-1C],14            ; 保存的假码长度与14H比较!
    22. 004151B4  |.  7D 17         |JGE SHORT SuperPro.004151CD
    23. 004151B6  |.  8B45 D8       |MOV EAX,DWORD PTR SS:[EBP-28]
    24. 004151B9  |.  0345 E4       |ADD EAX,DWORD PTR SS:[EBP-1C]
    25. 004151BC  |.  8B4D E4       |MOV ECX,DWORD PTR SS:[EBP-1C]
    26. 004151BF  |.  8A90 C4000000 |MOV DL,BYTE PTR DS:[EAX+C4]             ; 依次取保存的假码每一位ASC
    27. 004151C5  |.  8891 10334700 |MOV BYTE PTR DS:[ECX+473310],DL
    28. 004151CB  |.^ EB DA         \JMP SHORT SuperPro.004151A7
    29. 004151CD  |>  C605 24334700>MOV BYTE PTR DS:[473324],0               ;
    30. 004151D4  |.  68 10334700   PUSH SuperPro.00473310                   ; /读取保存的注册码
    31. 004151D9  |.  8B4D D8       MOV ECX,DWORD PTR SS:[EBP-28]           ; |
    复制代码
    004151DC  |.  E8 0F140000   CALL SuperPro.004165F0          ; \算法核心!接着F7

    1. 004151E1  |.  8945 EC       MOV DWORD PTR SS:[EBP-14],EAX
    2. 004151E4  |.  C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0               ;  这里,还有个局部变量置0
    3. 004151EB  |.  837D EC 00    CMP DWORD PTR SS:[EBP-14],0
    4. 004151EF  |.  74 07         JE SHORT SuperPro.004151F8
    5. 004151F1  |.  C745 FC 01000>MOV DWORD PTR SS:[EBP-4],1               ;  注意看这里,赋值为1
    6. 004151F8  |>  6A 04         PUSH 4                                   ; /BufSize = 4
    7. 004151FA  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]             ; |
    8. 004151FD  |.  50            PUSH EAX                                 ; |Buffer
    9. 004151FE  |.  6A 04         PUSH 4                                   ; |ValueType = REG_DWORD
    10. 00415200  |.  6A 00         PUSH 0                                   ; |Reserved = 0
    11. 00415202  |.  68 BCEA4600   PUSH SuperPro.0046EABC                   ; |syswell
    12. 00415207  |.  8B4D E8       MOV ECX,DWORD PTR SS:[EBP-18]            ; |
    13. 0041520A  |.  51            PUSH ECX                                 ; |hKey
    14. 0041520B  |.  FF15 14E04500 CALL DWORD PTR DS:[<&ADVAPI32.RegSetValu>; \RegSetValueExA
    15. 00415211  |.  8945 F8       MOV DWORD PTR SS:[EBP-8],EAX
    16. 00415214  |.  837D F8 00    CMP DWORD PTR SS:[EBP-8],0
    17. 00415218  |.  74 04         JE SHORT SuperPro.0041521E
    18. 0041521A  |.  33C0          XOR EAX,EAX
    19. 0041521C  |.  EB 0D         JMP SHORT SuperPro.0041522B
    20. 0041521E  |>  8B55 E8       MOV EDX,DWORD PTR SS:[EBP-18]
    21. 00415221  |.  52            PUSH EDX                                 ; /hKey
    22. 00415222  |.  FF15 00E04500 CALL DWORD PTR DS:[<&ADVAPI32.RegCloseKe>; \RegCloseKey
    23. 00415228  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]            ;  这里局部变量很关键,赋值给EAX。可以放C-4了!哈哈
    24. 0041522B  |>  8BE5          MOV ESP,EBP
    25. 0041522D  |.  5D            POP EBP
    26. 0041522E  \.  C3            RETN
    复制代码
    004151DC  | CALL SuperPro.004165F0                       ; \算法核心!接着F7
    1. 004165F0  /$  55            PUSH EBP
    2. 004165F1  |.  8BEC          MOV EBP,ESP
    3. 004165F3  |.  6A FF         PUSH -1
    4. 004165F5  |.  68 3CAC4500   PUSH SuperPro.0045AC3C                   ;  SE 处理程序安装
    5. 004165FA  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
    6. 00416600  |.  50            PUSH EAX
    7. 00416601  |.  64:8925 00000>MOV DWORD PTR FS:[0],ESP
    8. 00416608  |.  81EC 8C000000 SUB ESP,8C
    9. 0041660E  |.  898D 68FFFFFF MOV DWORD PTR SS:[EBP-98],ECX
    10. 00416614  |.  C745 F0 01000>MOV DWORD PTR SS:[EBP-10],1
    11. 0041661B  |.  C785 78FFFFFF>MOV DWORD PTR SS:[EBP-88],0
    12. 00416625  |.  EB 0F         JMP SHORT SuperPro.00416636
    13. 00416627  |>  8B85 78FFFFFF /MOV EAX,DWORD PTR SS:[EBP-88]
    14. 0041662D  |.  83C0 01       |ADD EAX,1
    15. 00416630  |.  8985 78FFFFFF |MOV DWORD PTR SS:[EBP-88],EAX
    16. 00416636  |>  B9 40314700    MOV ECX,SuperPro.00473140               ;  机器码
    17. 0041663B  |.  E8 50B6FEFF   |CALL SuperPro.00401C90
    18. 00416640  |.  3985 78FFFFFF |CMP DWORD PTR SS:[EBP-88],EAX
    19. 00416646  |.  7D 1D         |JGE SHORT SuperPro.00416665             ;  机器码是否取完
    20. 00416648  |.  8B8D 78FFFFFF |MOV ECX,DWORD PTR SS:[EBP-88]
    21. 0041664E  |.  51            |PUSH ECX                                ; /Arg1
    22. 0041664F  |.  B9 40314700   |MOV ECX,SuperPro.00473140               ; |
    23. 00416654  |.  E8 5733FFFF   |CALL SuperPro.004099B0                  ; \SuperPro.004099B0
    24. 00416659  |.  8B95 78FFFFFF |MOV EDX,DWORD PTR SS:[EBP-88]           ;  机器码
    25. 0041665F  |.  884415 D8     |MOV BYTE PTR SS:[EBP+EDX-28],AL         ;  依次取机器码每一位ASC
    26. 00416663  |.^ EB C2         \JMP SHORT SuperPro.00416627
    27. 00416665  |>  EB 0F         JMP SHORT SuperPro.00416676
    28. 00416667  |>  8B85 78FFFFFF /MOV EAX,DWORD PTR SS:[EBP-88]
    29. 0041666D  |.  83C0 01       |ADD EAX,1
    30. 00416670  |.  8985 78FFFFFF |MOV DWORD PTR SS:[EBP-88],EAX
    31. 00416676  |>  83BD 78FFFFFF> CMP DWORD PTR SS:[EBP-88],14            ;  机器码长度不小于20位吗?
    32. 0041667D  |.  7D 15         |JGE SHORT SuperPro.00416694
    33. 0041667F  |.  8B8D 78FFFFFF |MOV ECX,DWORD PTR SS:[EBP-88]
    34. 00416685  |.  83C1 41       |ADD ECX,41
    35. 00416688  |.  8B95 78FFFFFF |MOV EDX,DWORD PTR SS:[EBP-88]
    36. 0041668E  |.  884C15 D8     |MOV BYTE PTR SS:[EBP+EDX-28],CL
    37. 00416692  |.^ EB D3         \JMP SHORT SuperPro.00416667
    38. 00416694  |>  8D45 80       LEA EAX,DWORD PTR SS:[EBP-80]
    39. 00416697  |.  50            PUSH EAX                                 ; /Arg1
    40. 00416698  |.  E8 3085FFFF   CALL SuperPro.0040EBCD                   ; \机器码MD5运算,结果设为S1
    41. 0041669D  |.  83C4 04       ADD ESP,4
    42. 004166A0  |.  6A 14         PUSH 14                                  ; /Arg3 = 00000014
    43. 004166A2  |.  8D4D D8       LEA ECX,DWORD PTR SS:[EBP-28]            ; 机器码
    44. 004166A5  |.  51            PUSH ECX                                 ; |Arg2
    45. 004166A6  |.  8D55 80       LEA EDX,DWORD PTR SS:[EBP-80]            ; |
    46. 004166A9  |.  52            PUSH EDX                                 ; |Arg1
    47. 004166AA  |.  E8 5E85FFFF   CALL SuperPro.0040EC0D                   ; \SuperPro.0040EC0D
    48. 004166AF  |.  83C4 0C       ADD ESP,0C
    49. 004166B2  |.  8D45 80       LEA EAX,DWORD PTR SS:[EBP-80]
    50. 004166B5  |.  50            PUSH EAX                                 ; /Arg2
    51. 004166B6  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
    52. 004166BC  |.  51            PUSH ECX                                 ; |Arg1
    53. 004166BD  |.  E8 1F8DFFFF   CALL SuperPro.0040F3E1                   ; \SuperPro.0040F3E1
    54. 004166C2  |.  83C4 08       ADD ESP,8
    55. 004166C5  |.  C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0
    56. 004166CC  |.  6A 00         PUSH 0                                   ; /第一位
    57. 004166CE  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
    58. 004166D4  |.  E8 D732FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
    59. 004166D9  |.  8845 D8       MOV BYTE PTR SS:[EBP-28],AL              ;  S1第一位取代机器码第一位
    60. 004166DC  |.  6A 04         PUSH 4                                   ; /第5位
    61. 004166DE  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
    62. 004166E4  |.  E8 C732FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
    63. 004166E9  |.  8845 DC       MOV BYTE PTR SS:[EBP-24],AL              ;  S1第5位取代机器码第5位
    64. 004166EC  |.  6A 06         PUSH 6                                   ; /第7位
    65. 004166EE  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
    66. 004166F4  |.  E8 B732FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
    67. 004166F9  |.  8845 DE       MOV BYTE PTR SS:[EBP-22],AL              ;  S1第7位取代机器码第7位
    68. 004166FC  |.  6A 0C         PUSH 0C                                  ; /第13位
    69. 004166FE  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
    70. 00416704  |.  E8 A732FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
    71. 00416709  |.  8845 E4       MOV BYTE PTR SS:[EBP-1C],AL              ;  S1第13位取代机器码第13位
    72. 0041670C  |.  C785 7CFFFFFF>MOV DWORD PTR SS:[EBP-84],0              ;  机器码变形完毕,设为Q
    73. 00416716  |.  EB 0F         JMP SHORT SuperPro.00416727
    74. [hide]00416718  |>  8B95 7CFFFFFF /MOV EDX,DWORD PTR SS:[EBP-84]
    75. 0041671E  |.  83C2 01       |ADD EDX,1
    76. 00416721  |.  8995 7CFFFFFF |MOV DWORD PTR SS:[EBP-84],EDX
    77. 00416727  |>  83BD 7CFFFFFF> CMP DWORD PTR SS:[EBP-84],14            ;  计数器:20
    78. 0041672E  |.  0F8D 87000000 |JGE SuperPro.004167BB
    79. 00416734  |.  8B85 7CFFFFFF |MOV EAX,DWORD PTR SS:[EBP-84]
    80. 0041673A  |.  8A4C05 D8     |MOV CL,BYTE PTR SS:[EBP+EAX-28]         ;  变形机器码Q每一位ASC
    81. 0041673E  |.  884D EC       |MOV BYTE PTR SS:[EBP-14],CL
    82. 00416741  |.  0FBE55 EC     |MOVSX EDX,BYTE PTR SS:[EBP-14]
    83. 00416745  |.  83FA 30       |CMP EDX,30                              ;  变形机器码Q每一位ASC:30
    84. 00416748  |.  7C 1E         |JL SHORT SuperPro.00416768
    85. 0041674A  |.  0FBE45 EC     |MOVSX EAX,BYTE PTR SS:[EBP-14]
    86. 0041674E  |.  83F8 39       |CMP EAX,39
    87. 00416751  |.  7F 15         |JG SHORT SuperPro.00416768              ;  30-39,检测是否为数字
    88. 00416753  |.  0FBE4D EC     |MOVSX ECX,BYTE PTR SS:[EBP-14]          ;  每一位ASC
    89. 00416757  |.  BA 69000000   |MOV EDX,69                              ;  i
    90. 0041675C  |.  2BD1          |SUB EDX,ECX                             ;  69 - 当前所取的ASC
    91. 0041675E  |.  8B85 7CFFFFFF |MOV EAX,DWORD PTR SS:[EBP-84]
    92. 00416764  |.  885405 D8     |MOV BYTE PTR SS:[EBP+EAX-28],DL         ;  差值保存起来
    93. 00416768  |>  0FBE4D EC     |MOVSX ECX,BYTE PTR SS:[EBP-14]          ;  所取的Q的字符为字母则直接来到这里
    94. 0041676C  |.  83F9 41       |CMP ECX,41                              ;  差与41(A)比较
    95. 0041676F  |.  7C 1E         |JL SHORT SuperPro.0041678F              ;  小于则跳,跳则保存当前所取变形机器码Q的ASC
    96. 00416771  |.  0FBE55 EC     |MOVSX EDX,BYTE PTR SS:[EBP-14]
    97. 00416775  |.  83FA 5A       |CMP EDX,5A                              ;  与Z比较
    98. 00416778  |.  7F 15         |JG SHORT SuperPro.0041678F              ;  41~5A,检测是否为大写字母
    99. 0041677A  |.  0FBE45 EC     |MOVSX EAX,BYTE PTR SS:[EBP-14]          ;  当前所取的ASC
    100. 0041677E  |.  B9 9B000000   |MOV ECX,9B                              ;  =9B
    101. 00416783  |.  2BC8          |SUB ECX,EAX                             ;  9B - 所取得ASC
    102. 00416785  |.  8B95 7CFFFFFF |MOV EDX,DWORD PTR SS:[EBP-84]
    103. 0041678B  |.  884C15 D8     |MOV BYTE PTR SS:[EBP+EDX-28],CL         ;  差值保存起来
    104. 0041678F  |>  0FBE45 EC     |MOVSX EAX,BYTE PTR SS:[EBP-14]          ;  当前所取的ASC
    105. 00416793  |.  83F8 61       |CMP EAX,61                              ;  当前所取的ASC与61比较
    106. 00416796  |.  7C 1E         |JL SHORT SuperPro.004167B6              ;  小于则跳,跳则进行下一位
    107. 00416798  |.  0FBE4D EC     |MOVSX ECX,BYTE PTR SS:[EBP-14]          ;  当前所取的ASC与7A比较
    108. 0041679C  |.  83F9 7A       |CMP ECX,7A
    109. 0041679F  |.  7F 15         |JG SHORT SuperPro.004167B6              ;  大于则进行下一位
    110. 004167A1  |.  0FBE55 EC     |MOVSX EDX,BYTE PTR SS:[EBP-14]          ;  61~7A,检测是否为小写字母。
    111. 004167A5  |.  B8 DB000000   |MOV EAX,0DB
    112. 004167AA  |.  2BC2          |SUB EAX,EDX
    113. 004167AC  |.  8B8D 7CFFFFFF |MOV ECX,DWORD PTR SS:[EBP-84]
    114. 004167B2  |.  88440D D8     |MOV BYTE PTR SS:[EBP+ECX-28],AL [/hide]
    115. 004167B6  |>^ E9 5DFFFFFF   \JMP SuperPro.00416718                   ;  循环结束,得到再次变形后的机器码,设为P
    116. 004167BB  |>  8A55 D9       MOV DL,BYTE PTR SS:[EBP-27]              ;  P的第2位
    117. 004167BE  |.  8855 EC       MOV BYTE PTR SS:[EBP-14],DL              
    118. 004167C1  |.  8A45 DE       MOV AL,BYTE PTR SS:[EBP-22]              ;  P的第7位
    119. 004167C4  |.  8845 D9       MOV BYTE PTR SS:[EBP-27],AL              ;  P的第7位替换P的第2位
    120. 004167C7  |.  8A4D EC       MOV CL,BYTE PTR SS:[EBP-14]              ;  P的第2位
    121. 004167CA  |.  884D DE       MOV BYTE PTR SS:[EBP-22],CL              ;  P的第2位替换P的第7位
    122. 004167CD  |.  8A55 DB       MOV DL,BYTE PTR SS:[EBP-25]              ;  P的第4位(X)
    123. 004167D0  |.  8855 EC       MOV BYTE PTR SS:[EBP-14],DL              ;  P的第4位
    124. 004167D3  |.  8A45 E2       MOV AL,BYTE PTR SS:[EBP-1E]              ;  P的第11位
    125. 004167D6  |.  8845 DB       MOV BYTE PTR SS:[EBP-25],AL              ;  P的第11位替换P的第4位
    126. 004167D9  |.  8A4D EC       MOV CL,BYTE PTR SS:[EBP-14]              ;  P的第4位
    127. 004167DC  |.  884D E2       MOV BYTE PTR SS:[EBP-1E],CL              ;  P的第4位替换P的第11位
    128. 004167DF  |.  8A55 DD       MOV DL,BYTE PTR SS:[EBP-23]              ;  P的第6位
    129. 004167E2  |.  8855 EC       MOV BYTE PTR SS:[EBP-14],DL              ;  P的第6位
    130. 004167E5  |.  8A45 E4       MOV AL,BYTE PTR SS:[EBP-1C]              ;  P的第13位
    131. 004167E8  |.  8845 DD       MOV BYTE PTR SS:[EBP-23],AL              ;  P的第13位替换P的第6位
    132. 004167EB  |.  8A4D EC       MOV CL,BYTE PTR SS:[EBP-14]              ;  P的第6位
    133. 004167EE  |.  884D E4       MOV BYTE PTR SS:[EBP-1C],CL              ;  P的第6位替换P的第13位
    134. 004167F1  |.  8A55 DF       MOV DL,BYTE PTR SS:[EBP-21]              ;  P的第8位
    135. 004167F4  |.  8855 EC       MOV BYTE PTR SS:[EBP-14],DL
    136. 004167F7  |.  8A45 E6       MOV AL,BYTE PTR SS:[EBP-1A]              ;  P的第15位
    137. 004167FA  |.  8845 DF       MOV BYTE PTR SS:[EBP-21],AL              ;  P的第15位替换P的第8位
    138. 004167FD  |.  8A4D EC       MOV CL,BYTE PTR SS:[EBP-14]              ;  P的第8位
    139. 00416800  |.  884D E6       MOV BYTE PTR SS:[EBP-1A],CL              ;  P的第8位替换P的第15位
    140. 00416803  |.  8A55 E1       MOV DL,BYTE PTR SS:[EBP-1F]              ;  P的第10位
    141. 00416806  |.  8855 EC       MOV BYTE PTR SS:[EBP-14],DL
    142. 00416809  |.  8A45 E5       MOV AL,BYTE PTR SS:[EBP-1B]              ;  P的第14位
    143. 0041680C  |.  8845 E1       MOV BYTE PTR SS:[EBP-1F],AL              ;  P的第14位替换第10位
    144. 0041680F  |.  8A4D EC       MOV CL,BYTE PTR SS:[EBP-14]              ;  P的第10位
    145. 00416812  |.  884D E5       MOV BYTE PTR SS:[EBP-1B],CL              ;  P的第10位替换第14位
    146. 00416815  |.  C785 78FFFFFF>MOV DWORD PTR SS:[EBP-88],0              ;  P再次变形,设为M
    147. 0041681F  |.  EB 0F         JMP SHORT SuperPro.00416830
    148. 00416821  |>  8B95 78FFFFFF /MOV EDX,DWORD PTR SS:[EBP-88]
    149. 00416827  |.  83C2 01       |ADD EDX,1
    150. 0041682A  |.  8995 78FFFFFF |MOV DWORD PTR SS:[EBP-88],EDX
    151. 00416830  |>  83BD 78FFFFFF> CMP DWORD PTR SS:[EBP-88],10            ;  暂时只比较M前16位
    152. 00416837  |.  7D 45         |JGE SHORT SuperPro.0041687E
    153. 00416839  |.  8B45 08       |MOV EAX,DWORD PTR SS:[EBP+8]            ;  假码
    154. 0041683C  |.  0385 78FFFFFF |ADD EAX,DWORD PTR SS:[EBP-88]
    155. 00416842  |.  0FBE08        |MOVSX ECX,BYTE PTR DS:[EAX]             ;  依次取假码每一位ASC
    156. 00416845  |.  8B95 78FFFFFF |MOV EDX,DWORD PTR SS:[EBP-88]
    157. 0041684B  |.  33C0          |XOR EAX,EAX
    158. 0041684D  |.  8A4415 D8     |MOV AL,BYTE PTR SS:[EBP+EDX-28]         ;  依次取M的每一位
    159. 00416851  |.  3BC8          |CMP ECX,EAX                             ;  比较!
    160. 00416853  |.  74 27         |JE SHORT SuperPro.0041687C              ;  必须跳,否则挂了!   
    161. 00416855  |.  C785 70FFFFFF>|MOV DWORD PTR SS:[EBP-90],0
    162. 0041685F  |.  C745 FC FFFFF>|MOV DWORD PTR SS:[EBP-4],-1
    163. 00416866  |.  8D8D 74FFFFFF |LEA ECX,DWORD PTR SS:[EBP-8C]
    164. 0041686C  |.  E8 AB200400   |CALL <JMP.&MFC42.#800>
    165. 00416871  |.  8B85 70FFFFFF |MOV EAX,DWORD PTR SS:[EBP-90]
    166. 00416877  |.  E9 5F010000   |JMP SuperPro.004169DB
    167. 0041687C  |>^ EB A3         \JMP SHORT SuperPro.00416821
    168. 0041687E  |>  6A 1E         PUSH 1E                                  ; /S1的第31位ASC
    169. 00416880  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
    170. 00416886  |.  E8 2531FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
    171. 0041688B  |.  A2 A0E74600   MOV BYTE PTR DS:[46E7A0],AL              ;  第31位的asc到[46E7A0]
    172. 00416890  |.  6A 0A         PUSH 0A                                  ; /S1的asc第11位
    173. 00416892  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
    174. 00416898  |.  E8 1331FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
    175. 0041689D  |.  A2 A1E74600   MOV BYTE PTR DS:[46E7A1],AL              ;  S1的第11位asc到:[46E7A1]
    176. 004168A2  |.  6A 06         PUSH 6                                   ; /S1的第7位
    177. 004168A4  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
    178. 004168AA  |.  E8 0131FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
    179. 004168AF  |.  A2 09334700   MOV BYTE PTR DS:[473309],AL              ;  S1的第7位asc到[473309]
    180. 004168B4  |.  6A 04         PUSH 4                                   ; /S1的第5位
    181. 004168B6  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]            ; |
    182. 004168BC  |.  E8 EF30FFFF   CALL SuperPro.004099B0                   ; \SuperPro.004099B0
    183. 004168C1  |.  A2 08334700   MOV BYTE PTR DS:[473308],AL              ;  S1的第5位ASC到[473308]
    184. 004168C6  |.  33C9          XOR ECX,ECX
    185. 004168C8  |.  8A0D A0E74600 MOV CL,BYTE PTR DS:[46E7A0]              ;  S1的第31位
    186. 004168CE  |.  83F9 61       CMP ECX,61                               ;  S1的第31位asc与61比较
    187. 004168D1  |.  7C 19         JL SHORT SuperPro.004168EC               ;  小则跳
    188. 004168D3  |.  33D2          XOR EDX,EDX
    189. 004168D5  |.  8A15 A0E74600 MOV DL,BYTE PTR DS:[46E7A0]              ;  第31位ASC
    190. 004168DB  |.  83FA 7A       CMP EDX,7A                               ;  :7A(z)
    191. 004168DE  |.  7F 0C         JG SHORT SuperPro.004168EC               ;  大则跳(判断是否小写字母)
    192. 004168E0  |.  A0 A0E74600   MOV AL,BYTE PTR DS:[46E7A0]              ;  第31位ASC
    193. 004168E5  |.  2C 20         SUB AL,20                                ;  转大写字母
    194. 004168E7  |.  A2 A0E74600   MOV BYTE PTR DS:[46E7A0],AL              ;  第31位转成大写
    195. 004168EC  |>  33C9          XOR ECX,ECX
    196. 004168EE  |.  8A0D A1E74600 MOV CL,BYTE PTR DS:[46E7A1]              ;  S1的第11位asc
    197. 004168F4  |.  83F9 61       CMP ECX,61                               ;  流程同上
    198. 004168F7  |.  7C 19         JL SHORT SuperPro.00416912
    199. 004168F9  |.  33D2          XOR EDX,EDX
    200. 004168FB  |.  8A15 A1E74600 MOV DL,BYTE PTR DS:[46E7A1]
    201. 00416901  |.  83FA 7A       CMP EDX,7A
    202. 00416904  |.  7F 0C         JG SHORT SuperPro.00416912
    203. 00416906  |.  A0 A1E74600   MOV AL,BYTE PTR DS:[46E7A1]
    204. 0041690B  |.  2C 20         SUB AL,20
    205. 0041690D  |.  A2 A1E74600   MOV BYTE PTR DS:[46E7A1],AL              ;  S1的第11位转为大写
    206. 00416912  |>  33C9          XOR ECX,ECX
    207. 00416914  |.  8A0D 09334700 MOV CL,BYTE PTR DS:[473309]              ;  S1的第7位asc
    208. 0041691A  |.  83F9 61       CMP ECX,61                               ;  流程同上
    209. 0041691D  |.  7C 19         JL SHORT SuperPro.00416938
    210. 0041691F  |.  33D2          XOR EDX,EDX
    211. 00416921  |.  8A15 09334700 MOV DL,BYTE PTR DS:[473309]
    212. 00416927  |.  83FA 7A       CMP EDX,7A
    213. 0041692A  |.  7F 0C         JG SHORT SuperPro.00416938
    214. 0041692C  |.  A0 09334700   MOV AL,BYTE PTR DS:[473309]
    215. 00416931  |.  2C 20         SUB AL,20
    216. 00416933  |.  A2 09334700   MOV BYTE PTR DS:[473309],AL              ;  S1的第7位转为大写
    217. 00416938  |>  33C9          XOR ECX,ECX
    218. 0041693A  |.  8A0D 08334700 MOV CL,BYTE PTR DS:[473308]              ;  S1的第5位ASC
    219. 00416940  |.  83F9 61       CMP ECX,61                               ;  流程同上
    220. 00416943  |.  7C 19         JL SHORT SuperPro.0041695E               ;  本例为35,跳了
    221. 00416945  |.  33D2          XOR EDX,EDX
    222. 00416947  |.  8A15 08334700 MOV DL,BYTE PTR DS:[473308]
    223. 0041694D  |.  83FA 7A       CMP EDX,7A
    224. 00416950  |.  7F 0C         JG SHORT SuperPro.0041695E
    225. 00416952  |.  A0 08334700   MOV AL,BYTE PTR DS:[473308]
    226. 00416957  |.  2C 20         SUB AL,20
    227. 00416959  |.  A2 08334700   MOV BYTE PTR DS:[473308],AL
    228. 0041695E  |>  33C9          XOR ECX,ECX
    229. 00416960  |.  8A0D A0E74600 MOV CL,BYTE PTR DS:[46E7A0]              ;  第31位大写
    230. 00416966  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]             ;  假码
    231. 00416969  |.  0FBE42 10     MOVSX EAX,BYTE PTR DS:[EDX+10]           ;  假码第17位
    232. 0041696D  |.  3BC8          CMP ECX,EAX                              ;  第31位大写:假码第17位
    233. 0041696F  |.  75 42         JNZ SHORT SuperPro.004169B3              ;  不等就挂了!
    234. 00416971  |.  33C9          XOR ECX,ECX
    235. 00416973  |.  8A0D A1E74600 MOV CL,BYTE PTR DS:[46E7A1]              ;  S1的第11位大写
    236. 00416979  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]
    237. 0041697C  |.  0FBE42 11     MOVSX EAX,BYTE PTR DS:[EDX+11]           ;  假码第18位
    238. 00416980  |.  3BC8          CMP ECX,EAX                              ;  S1的第11位大写:假码第18位
    239. 00416982  |.  75 2F         JNZ SHORT SuperPro.004169B3              ;  不等就挂了!
    240. 00416984  |.  33C9          XOR ECX,ECX
    241. 00416986  |.  8A0D 09334700 MOV CL,BYTE PTR DS:[473309]              ;  S1的第7位大写
    242. 0041698C  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]
    243. 0041698F  |.  0FBE42 12     MOVSX EAX,BYTE PTR DS:[EDX+12]           ;  假码第19位
    244. 00416993  |.  3BC8          CMP ECX,EAX                              ;  S1的第7位大写:假码第19位
    245. 00416995  |.  75 1C         JNZ SHORT SuperPro.004169B3              ;  不等就挂了!
    246. 00416997  |.  33C9          XOR ECX,ECX
    247. 00416999  |.  8A0D 08334700 MOV CL,BYTE PTR DS:[473308]              ;  S1的第5位
    248. 0041699F  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]
    249. 004169A2  |.  0FBE42 13     MOVSX EAX,BYTE PTR DS:[EDX+13]           ;  假码第20位
    250. 004169A6  |.  3BC8          CMP ECX,EAX                              ;  S1的第5位:假码第20位
    251. 004169A8  |.  75 09         JNZ SHORT SuperPro.004169B3              ;  不等就挂了!
    252. [color=Red]004169AA  |.  C745 F0 01000>MOV DWORD PTR SS:[EBP-10],1              ;  注意这个局部变量赋值为1[/color]
    253. 004169B1  |.  EB 07         JMP SHORT SuperPro.004169BA
    254. [color=Red]004169B3  |>  C745 F0 00000>MOV DWORD PTR SS:[EBP-10],0              ;  跳到这里则置0,放炸药![/color]
    255. 004169BA  |>  8B4D F0       MOV ECX,DWORD PTR SS:[EBP-10]            ;  这里接着改成004169b1处的命令
    256. 004169BD  |.  898D 6CFFFFFF MOV DWORD PTR SS:[EBP-94],ECX
    257. 004169C3  |.  C745 FC FFFFF>MOV DWORD PTR SS:[EBP-4],-1
    258. 004169CA  |.  8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]
    259. 004169D0  |.  E8 471F0400   CALL <JMP.&MFC42.#800>
    260. 004169D5  |.  8B85 6CFFFFFF MOV EAX,DWORD PTR SS:[EBP-94]
    261. 004169DB  |>  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
    262. 004169DE  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
    263. 004169E5  |.  8BE5          MOV ESP,EBP
    264. 004169E7  |.  5D            POP EBP
    265. 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
    ---------------------------------------------------------------------------------------------------------


    unreg.GIF


    ok.GIF


    reged.GIF


    如果兄弟(姐妹)知道这个软件的名称,还请“沉默是金”!
    毕竟我们要体谅下软件作者挑灯夜战,劳心费力的劳动,尊重他的劳动成果,尊重作者的版权!
    谢谢!

    评分

    参与人数 1飘云币 +40 收起 理由
    月之精灵 + 40 越来越强大了,哈哈

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-9-28 20:10
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2011-3-7 22:41:30 | 显示全部楼层
    谢谢分享。
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2019-4-3 11:36
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2011-3-8 09:20:28 | 显示全部楼层
    很好,很强大的算法。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-7-26 11:22
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2011-3-8 14:53:10 | 显示全部楼层
    看看了。。。。。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2017-5-3 20:51
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2011-3-9 07:51:49 | 显示全部楼层
    分析的很详细
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2011-3-9 08:50:47 | 显示全部楼层
    感谢楼主分享!学习!!支持!!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

     楼主| 发表于 2011-3-9 13:04:38 | 显示全部楼层
    本帖最后由 GGLHY 于 2011-3-9 16:43 编辑

    改正了一个导致出错的地方! 汗一个!看来半夜的时候大脑确实不如白天好用啊
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    3 天前
  • 签到天数: 679 天

    [LV.9]以坛为家II

    发表于 2011-3-10 12:06:30 | 显示全部楼层
    谢谢分享!!!
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    前天 10:36
  • 签到天数: 1611 天

    [LV.Master]伴坛终老

    发表于 2011-3-10 12:38:10 | 显示全部楼层
    谢谢了。
    楼主辛苦了。
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2015-12-19 14:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2011-3-10 16:23:43 | 显示全部楼层
    顶一下 哈哈··
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表