飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6550|回复: 9

[原创] Ez-Architect 5.0算法分析及算法注册机【初级】

[复制链接]
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-8-29 22:30:00 | 显示全部楼层 |阅读模式
    【破文标题】Ez-Architect 5.0算法分析及算法注册机【初级】
    【破文作者】zaas[PYG]
    破解工具】OllyICE,PEiD v0.94
    【破解平台】WinXP
    【更新时间】2010-8-29
    【软件类别】国外软件/CAD
    【软件语言】英文
    【应用平台】WinXP/2000/2003/Vista
    【软件性质】共享(收费)软件
    【软件大小】13.88MB
    【保护方式】注册码
    【软件简介】家居设计软件已趋于复杂,有时候我们只是想设计平面。这个二维的家居设计和平面布置图软件,可以很方便的设计住宅、室内平面图。
    【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享
    【破解说明】算法很简单,初级。。
    --------------------------------------------------------------
    【破解内容】
    --------------------------------------------------------------
    **************************************************************
    查壳:peid查不出。但OD载入发现其实就是VC++的程序
    **************************************************************
    很久没分析算法了。手有点生。这是一个相对专业的软件。国内基本没有人使用。。
    把注意力防在算法上吧。运行软件,点注册。需要输入5组注册码。输入假码1234-1234-1234-1234-1234。
    下断不必说了,搜字符串就可以。直接来到关键call。
    1. 004A4B40  /> \55            push    ebp
    2. 004A4B41  |.  8BEC          mov     ebp, esp
    3. 004A4B43  |.  81EC 3C020000 sub     esp, 23C
    4. 004A4B49  |.  56            push    esi
    5. 004A4B4A  |.  57            push    edi
    6. 004A4B4B  |.  51            push    ecx
    7. 004A4B4C  |.  8DBD C4FDFFFF lea     edi, dword ptr [ebp-23C]
    8. 004A4B52  |.  B9 8F000000   mov     ecx, 8F
    9. 004A4B57  |.  B8 CCCCCCCC   mov     eax, CCCCCCCC
    10. 004A4B5C  |.  F3:AB         rep     stos dword ptr es:[edi]
    11. 004A4B5E  |.  59            pop     ecx
    12. 004A4B5F  |.  A1 C8115300   mov     eax, dword ptr [5311C8]
    13. 004A4B64  |.  33C5          xor     eax, ebp
    14. 004A4B66  |.  8945 FC       mov     dword ptr [ebp-4], eax
    15. 004A4B69  |.  894D F8       mov     dword ptr [ebp-8], ecx
    16. 004A4B6C  |.  6A 01         push    1
    17. 004A4B6E  |.  8B4D F8       mov     ecx, dword ptr [ebp-8]
    18. 004A4B71  |.  E8 487F0100   call    <jmp.&MFC80UD.#8622>
    19. 004A4B76  |.  8B45 F8       mov     eax, dword ptr [ebp-8]
    20. 004A4B79  |.  83C0 74       add     eax, 74
    21. 004A4B7C  |.  8BF4          mov     esi, esp
    22. 004A4B7E  |.  50            push    eax
    23. 004A4B7F  |.  FF15 4C825300 call    dword ptr [<&MSVCR80D._wtoi>]    ;  MSVCR80D._wtoi
    24. 004A4B85  |.  83C4 04       add     esp, 4                           ;  第一组
    25. 004A4B88  |.  3BF4          cmp     esi, esp
    26. 004A4B8A  |.  E8 E18F0100   call    004BDB70
    27. 004A4B8F  |.  8985 ECFDFFFF mov     dword ptr [ebp-214], eax
    28. 004A4B95  |.  8B4D F8       mov     ecx, dword ptr [ebp-8]
    29. 004A4B98  |.  83C1 7C       add     ecx, 7C
    30. 004A4B9B  |.  8BF4          mov     esi, esp
    31. 004A4B9D  |.  51            push    ecx
    32. 004A4B9E  |.  FF15 4C825300 call    dword ptr [<&MSVCR80D._wtoi>]    ;  MSVCR80D._wtoi
    33. 004A4BA4  |.  83C4 04       add     esp, 4                           ;  第二组
    34. 004A4BA7  |.  3BF4          cmp     esi, esp
    35. 004A4BA9  |.  E8 C28F0100   call    004BDB70
    36. 004A4BAE  |.  8985 E8FDFFFF mov     dword ptr [ebp-218], eax
    37. 004A4BB4  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
    38. 004A4BB7  |.  81C2 84000000 add     edx, 84
    39. 004A4BBD  |.  8BF4          mov     esi, esp
    40. 004A4BBF  |.  52            push    edx
    41. 004A4BC0  |.  FF15 4C825300 call    dword ptr [<&MSVCR80D._wtoi>]    ;  MSVCR80D._wtoi
    42. 004A4BC6  |.  83C4 04       add     esp, 4                           ;  第三组
    43. 004A4BC9  |.  3BF4          cmp     esi, esp
    44. 004A4BCB  |.  E8 A08F0100   call    004BDB70
    45. 004A4BD0  |.  8985 E4FDFFFF mov     dword ptr [ebp-21C], eax
    46. 004A4BD6  |.  8B45 F8       mov     eax, dword ptr [ebp-8]
    47. 004A4BD9  |.  05 8C000000   add     eax, 8C
    48. 004A4BDE  |.  8BF4          mov     esi, esp
    49. 004A4BE0  |.  50            push    eax
    50. 004A4BE1  |.  FF15 4C825300 call    dword ptr [<&MSVCR80D._wtoi>]    ;  MSVCR80D._wtoi
    51. 004A4BE7  |.  83C4 04       add     esp, 4                           ;  第四组
    52. 004A4BEA  |.  3BF4          cmp     esi, esp
    53. 004A4BEC  |.  E8 7F8F0100   call    004BDB70
    54. 004A4BF1  |.  8985 E0FDFFFF mov     dword ptr [ebp-220], eax
    55. 004A4BF7  |.  8B4D F8       mov     ecx, dword ptr [ebp-8]
    56. 004A4BFA  |.  81C1 94000000 add     ecx, 94
    57. 004A4C00  |.  8BF4          mov     esi, esp
    58. 004A4C02  |.  51            push    ecx
    59. 004A4C03  |.  FF15 4C825300 call    dword ptr [<&MSVCR80D._wtoi>]    ;  MSVCR80D._wtoi
    60. 004A4C09  |.  83C4 04       add     esp, 4                           ;  第5组
    61. 004A4C0C  |.  3BF4          cmp     esi, esp
    62. 004A4C0E  |.  E8 5D8F0100   call    004BDB70
    63. 004A4C13  |.  8985 DCFDFFFF mov     dword ptr [ebp-224], eax
    复制代码
    _wtoi函数,这个函数的参数是wchar_t* 把宽字符转为数值。跟踪发现,每组实际上只取了3个字符,修正假码为123-123-123-123-123继续;

    1. 004A4C19  |.  8BF4          mov     esi, esp
    2. 004A4C1B  |.  68 00010000   push    100                              ; /Count = 100 (256.)
    3. 004A4C20  |.  8D95 F4FDFFFF lea     edx, dword ptr [ebp-20C]         ; |
    4. 004A4C26  |.  52            push    edx                              ; |Buffer
    5. 004A4C27  |.  68 AA000000   push    0AA                              ; |RsrcID = STRING "962"
    6. 004A4C2C  |.  6A 00         push    0                                ; |hInst = NULL
    7. 004A4C2E  |.  FF15 14845300 call    dword ptr [<&USER32.LoadStringW>>; \LoadStringW
    8. 004A4C34  |.  3BF4          cmp     esi, esp                         ;  资源中取字符串
    9. 004A4C36  |.  E8 358F0100   call    004BDB70
    10. 004A4C3B  |.  66:C785 FAFDF>mov     word ptr [ebp-206], 0
    11. 004A4C44  |.  8BF4          mov     esi, esp
    12. 004A4C46  |.  8D85 F4FDFFFF lea     eax, dword ptr [ebp-20C]
    13. 004A4C4C  |.  50            push    eax
    14. 004A4C4D  |.  FF15 4C825300 call    dword ptr [<&MSVCR80D._wtoi>]    ;  MSVCR80D._wtoi
    15. 004A4C53  |.  83C4 04       add     esp, 4                           ;  转数值
    16. 004A4C56  |.  3BF4          cmp     esi, esp
    17. 004A4C58  |.  E8 138F0100   call    004BDB70
    18. 004A4C5D  |.  8985 D8FDFFFF mov     dword ptr [ebp-228], eax
    19. 004A4C63  |.  8B8D D8FDFFFF mov     ecx, dword ptr [ebp-228]
    20. 004A4C69  |.  3B8D ECFDFFFF cmp     ecx, dword ptr [ebp-214]         ;  第一组应=962
    21. 004A4C6F  |.  74 3A         je      short 004A4CAB
    22. 004A4C71  |.  8BF4          mov     esi, esp
    23. 004A4C73  |.  68 00010000   push    100                              ; /Count = 100 (256.)
    24. 004A4C78  |.  8D95 F4FDFFFF lea     edx, dword ptr [ebp-20C]         ; |
    25. 004A4C7E  |.  52            push    edx                              ; |Buffer
    26. 004A4C7F  |.  68 BC000000   push    0BC                              ; |RsrcID = STRING "The serial number you entered is invalid. Please check it."
    27. 004A4C84  |.  6A 00         push    0                                ; |hInst = NULL
    28. 004A4C86  |.  FF15 14845300 call    dword ptr [<&USER32.LoadStringW>>; \LoadStringW
    复制代码
    由此可知,第一组字符串应该为“962”。修正假码为962-123-123-123-123后继续。

    1. 004A4C8C  |.  3BF4          cmp     esi, esp
    2. 004A4C8E  |.  E8 DD8E0100   call    004BDB70
    3. 004A4C93  |.  6A 00         push    0
    4. 004A4C95  |.  6A 00         push    0
    5. 004A4C97  |.  8D85 F4FDFFFF lea     eax, dword ptr [ebp-20C]
    6. 004A4C9D  |.  50            push    eax
    7. 004A4C9E  |.  8B4D F8       mov     ecx, dword ptr [ebp-8]
    8. 004A4CA1  |.  E8 127E0100   call    <jmp.&MFC80UD.#5753>
    9. 004A4CA6  |.  E9 12020000   jmp     004A4EBD
    10. 004A4CAB  |>  83BD ECFDFFFF>cmp     dword ptr [ebp-214], 0           ;  比较各组是否为0
    11. 004A4CB2  |.  74 24         je      short 004A4CD8
    12. 004A4CB4  |.  83BD E8FDFFFF>cmp     dword ptr [ebp-218], 0
    13. 004A4CBB  |.  74 1B         je      short 004A4CD8
    14. 004A4CBD  |.  83BD E4FDFFFF>cmp     dword ptr [ebp-21C], 0
    15. 004A4CC4  |.  74 12         je      short 004A4CD8
    16. 004A4CC6  |.  83BD E0FDFFFF>cmp     dword ptr [ebp-220], 0
    17. 004A4CCD  |.  74 09         je      short 004A4CD8
    18. 004A4CCF  |.  83BD DCFDFFFF>cmp     dword ptr [ebp-224], 0
    19. 004A4CD6  |.  75 3A         jnz     short 004A4D12
    20. 004A4CD8  |>  8BF4          mov     esi, esp
    21. 004A4CDA  |.  68 00010000   push    100                              ; /Count = 100 (256.)
    22. 004A4CDF  |.  8D8D F4FDFFFF lea     ecx, dword ptr [ebp-20C]         ; |
    23. 004A4CE5  |.  51            push    ecx                              ; |Buffer
    24. 004A4CE6  |.  68 BC000000   push    0BC                              ; |RsrcID = STRING "The serial number you entered is invalid. Please check it."
    25. 004A4CEB  |.  6A 00         push    0                                ; |hInst = NULL
    26. 004A4CED  |.  FF15 14845300 call    dword ptr [<&USER32.LoadStringW>>; \LoadStringW
    27. 004A4CF3  |.  3BF4          cmp     esi, esp
    28. 004A4CF5  |.  E8 768E0100   call    004BDB70
    29. 004A4CFA  |.  6A 00         push    0
    30. 004A4CFC  |.  6A 00         push    0
    31. 004A4CFE  |.  8D95 F4FDFFFF lea     edx, dword ptr [ebp-20C]
    32. 004A4D04  |.  52            push    edx
    33. 004A4D05  |.  8B4D F8       mov     ecx, dword ptr [ebp-8]
    34. 004A4D08  |.  E8 AB7D0100   call    <jmp.&MFC80UD.#5753>
    35. 004A4D0D  |.  E9 AB010000   jmp     004A4EBD
    36. 004A4D12  |>  8B85 ECFDFFFF mov     eax, dword ptr [ebp-214]         ;  第一组
    37. 004A4D18  |.  50            push    eax
    38. 004A4D19  |.  E8 5FD2F5FF   call    00401F7D                         ;  余数累加?各位相加--》算法call1
    39. 004A4D1E  |.  83C4 04       add     esp, 4
    40. 004A4D21  |.  8985 D4FDFFFF mov     dword ptr [ebp-22C], eax
    41. 004A4D27  |.  8B8D E8FDFFFF mov     ecx, dword ptr [ebp-218]         ;  第二组
    42. 004A4D2D  |.  51            push    ecx
    43. 004A4D2E  |.  E8 3FD3F5FF   call    00402072                         ;  方式B--》算法call2
    44. 004A4D33  |.  83C4 04       add     esp, 4
    45. 004A4D36  |.  8985 D0FDFFFF mov     dword ptr [ebp-230], eax         ;  结果保存
    46. 004A4D3C  |.  8B95 DCFDFFFF mov     edx, dword ptr [ebp-224]         ;  第5组
    47. 004A4D42  |.  52            push    edx
    48. 004A4D43  |.  E8 2AD3F5FF   call    00402072
    49. 004A4D48  |.  83C4 04       add     esp, 4
    50. 004A4D4B  |.  8985 CCFDFFFF mov     dword ptr [ebp-234], eax
    51. 004A4D51  |.  8B85 D4FDFFFF mov     eax, dword ptr [ebp-22C]         ;  第一组结果
    52. 004A4D57  |.  0385 D0FDFFFF add     eax, dword ptr [ebp-230]         ;  +第二组结果
    53. 004A4D5D  |.  6BC0 03       imul    eax, eax, 3                      ;  *3
    54. 004A4D60  |.  8B8D D4FDFFFF mov     ecx, dword ptr [ebp-22C]         ;  第一组结果
    55. 004A4D66  |.  83E9 01       sub     ecx, 1                           ;  -1
    56. 004A4D69  |.  0FAF8D E8FDFF>imul    ecx, dword ptr [ebp-218]         ;  *第二组的值
    57. 004A4D70  |.  2BC1          sub     eax, ecx                         ;  二者相减
    58. 004A4D72  |.  50            push    eax                              ; /x
    59. 004A4D73  |.  E8 72910100   call    <jmp.&MSVCR80D.abs>              ; \abs
    60. 004A4D78  |.  83C4 04       add     esp, 4                           ;  绝对值
    61. 004A4D7B  |.  8985 C8FDFFFF mov     dword ptr [ebp-238], eax
    62. 004A4D81  |.  8B95 C8FDFFFF mov     edx, dword ptr [ebp-238]
    63. 004A4D87  |.  52            push    edx
    64. 004A4D88  |.  E8 FCDEF5FF   call    00402C89                         ;  算法call3
    65. 004A4D8D  |.  83C4 04       add     esp, 4
    66. 004A4D90  |.  8985 C8FDFFFF mov     dword ptr [ebp-238], eax
    67. 004A4D96  |.  8B85 E4FDFFFF mov     eax, dword ptr [ebp-21C]         ;  第三组
    68. 004A4D9C  |.  3B85 C8FDFFFF cmp     eax, dword ptr [ebp-238]         ;  二者需相等
    69. 004A4DA2  |.  74 3A         je      short 004A4DDE
    70. 004A4DA4  |.  8BF4          mov     esi, esp
    71. 004A4DA6  |.  68 00010000   push    100                              ; /Count = 100 (256.)
    72. 004A4DAB  |.  8D8D F4FDFFFF lea     ecx, dword ptr [ebp-20C]         ; |
    73. 004A4DB1  |.  51            push    ecx                              ; |Buffer
    74. 004A4DB2  |.  68 BC000000   push    0BC                              ; |RsrcID = STRING "The serial number you entered is invalid. Please check it."
    75. 004A4DB7  |.  6A 00         push    0                                ; |hInst = NULL
    76. 004A4DB9  |.  FF15 14845300 call    dword ptr [<&USER32.LoadStringW>>; \LoadStringW
    77. 004A4DBF  |.  3BF4          cmp     esi, esp
    78. 004A4DC1  |.  E8 AA8D0100   call    004BDB70
    79. 004A4DC6  |.  6A 00         push    0
    80. 004A4DC8  |.  6A 00         push    0
    81. 004A4DCA  |.  8D95 F4FDFFFF lea     edx, dword ptr [ebp-20C]
    82. 004A4DD0  |.  52            push    edx
    83. 004A4DD1  |.  8B4D F8       mov     ecx, dword ptr [ebp-8]
    84. 004A4DD4  |.  E8 DF7C0100   call    <jmp.&MFC80UD.#5753>
    85. 004A4DD9  |.  E9 DF000000   jmp     004A4EBD
    86. 004A4DDE  |>  8B85 D4FDFFFF mov     eax, dword ptr [ebp-22C]         ;  第一组的结果
    87. 004A4DE4  |.  0385 CCFDFFFF add     eax, dword ptr [ebp-234]         ;  第5组的结果
    88. 004A4DEA  |.  6BC0 03       imul    eax, eax, 3
    89. 004A4DED  |.  8B8D D4FDFFFF mov     ecx, dword ptr [ebp-22C]
    90. 004A4DF3  |.  83E9 01       sub     ecx, 1
    91. 004A4DF6  |.  0FAF8D DCFDFF>imul    ecx, dword ptr [ebp-224]         ;  第5组
    92. 004A4DFD  |.  2BC1          sub     eax, ecx                         ;  方法同上
    93. 004A4DFF  |.  50            push    eax                              ; /x
    94. 004A4E00  |.  E8 E5900100   call    <jmp.&MSVCR80D.abs>              ; \abs
    95. 004A4E05  |.  83C4 04       add     esp, 4
    96. 004A4E08  |.  8985 C4FDFFFF mov     dword ptr [ebp-23C], eax
    97. 004A4E0E  |.  8B95 C4FDFFFF mov     edx, dword ptr [ebp-23C]
    98. 004A4E14  |.  52            push    edx
    99. 004A4E15  |.  E8 6FDEF5FF   call    00402C89
    100. 004A4E1A  |.  83C4 04       add     esp, 4
    101. 004A4E1D  |.  8985 C4FDFFFF mov     dword ptr [ebp-23C], eax
    102. 004A4E23  |.  8B85 E0FDFFFF mov     eax, dword ptr [ebp-220]         ;  第四组
    103. 004A4E29  |.  3B85 C4FDFFFF cmp     eax, dword ptr [ebp-23C]
    104. 004A4E2F  |.  74 37         je      short 004A4E68
    105. 004A4E31  |.  8BF4          mov     esi, esp
    106. 004A4E33  |.  68 00010000   push    100                              ; /Count = 100 (256.)
    107. 004A4E38  |.  8D8D F4FDFFFF lea     ecx, dword ptr [ebp-20C]         ; |
    108. 004A4E3E  |.  51            push    ecx                              ; |Buffer
    109. 004A4E3F  |.  68 BC000000   push    0BC                              ; |RsrcID = STRING "The serial number you entered is invalid. Please check it."
    110. 004A4E44  |.  6A 00         push    0                                ; |hInst = NULL
    111. 004A4E46  |.  FF15 14845300 call    dword ptr [<&USER32.LoadStringW>>; \LoadStringW
    112. 004A4E4C  |.  3BF4          cmp     esi, esp
    113. 004A4E4E  |.  E8 1D8D0100   call    004BDB70
    114. 004A4E53  |.  6A 00         push    0
    115. 004A4E55  |.  6A 00         push    0
    116. 004A4E57  |.  8D95 F4FDFFFF lea     edx, dword ptr [ebp-20C]
    117. 004A4E5D  |.  52            push    edx
    118. 004A4E5E  |.  8B4D F8       mov     ecx, dword ptr [ebp-8]
    119. 004A4E61  |.  E8 527C0100   call    <jmp.&MFC80UD.#5753>
    120. 004A4E66  |.  EB 55         jmp     short 004A4EBD
    121. 004A4E68  |>  8BF4          mov     esi, esp
    122. 004A4E6A  |.  68 00010000   push    100                              ; /Count = 100 (256.)
    123. 004A4E6F  |.  8D85 F4FDFFFF lea     eax, dword ptr [ebp-20C]         ; |
    124. 004A4E75  |.  50            push    eax                              ; |Buffer
    125. 004A4E76  |.  68 BD000000   push    0BD                              ; |RsrcID = STRING "Thank you for your purchase."
    126. 004A4E7B  |.  6A 00         push    0                                ; |hInst = NULL
    127. 004A4E7D  |.  FF15 14845300 call    dword ptr [<&USER32.LoadStringW>>; \LoadStringW
    复制代码
    关键跳转页非常明显,不用多说。
    算法里边分别对第一组,第二组第五组假码进行了处理,处理结果分别跟第三组,第四组做比较。注册码属于自验证型。跟进几个算法call看一看。

    1. 004A5174  |.  C745 FC 00000>mov     dword ptr [ebp-4], 0
    2. 004A517B  |.  C745 F8 00000>mov     dword ptr [ebp-8], 0
    3. 004A5182  |.  EB 09         jmp     short 004A518D
    4. 004A5184  |>  8B45 F8       /mov     eax, dword ptr [ebp-8]
    5. 004A5187  |.  83C0 01       |add     eax, 1
    6. 004A518A  |.  8945 F8       |mov     dword ptr [ebp-8], eax
    7. 004A518D  |>  837D F8 03     cmp     dword ptr [ebp-8], 3            ;  三次循环
    8. 004A5191  |.  7D 29         |jge     short 004A51BC
    9. 004A5193  |.  8B45 08       |mov     eax, dword ptr [ebp+8]          ;  第一组设为A
    10. 004A5196  |.  99            |cdq
    11. 004A5197  |.  B9 0A000000   |mov     ecx, 0A
    12. 004A519C  |.  F7F9          |idiv    ecx                             ;  div 10
    13. 004A519E  |.  6BC0 0A       |imul    eax, eax, 0A                    ;  *10
    14. 004A51A1  |.  8B55 08       |mov     edx, dword ptr [ebp+8]
    15. 004A51A4  |.  2BD0          |sub     edx, eax                        ;  A-A (div 10)*10,求余?算法很失败啊
    16. 004A51A6  |.  0355 FC       |add     edx, dword ptr [ebp-4]          ;  余数累加
    17. 004A51A9  |.  8955 FC       |mov     dword ptr [ebp-4], edx
    18. 004A51AC  |.  8B45 08       |mov     eax, dword ptr [ebp+8]          ;  A
    19. 004A51AF  |.  99            |cdq
    20. 004A51B0  |.  B9 0A000000   |mov     ecx, 0A
    21. 004A51B5  |.  F7F9          |idiv    ecx
    22. 004A51B7  |.  8945 08       |mov     dword ptr [ebp+8], eax          ;  A div 10
    23. 004A51BA  |.^ EB C8         \jmp     short 004A5184
    24. 004A51BC  |>  8B45 FC       mov     eax, dword ptr [ebp-4]
    25. 004A51BF  |.  8BE5          mov     esp, ebp
    26. 004A51C1  |.  5D            pop     ebp
    27. 004A51C2  \.  C3            retn
    复制代码
    求余算法是很失败的算法。在VC里边用%即可,即使在汇编里也可以简单的把edx相加即可。
    软件作者的方法实在不敢恭维。。。
    一言以蔽之,就是把第一组注册码962各位相加。。。算法1这么简单,算法2呢?来看:
    1. 004A50E4  |.  C745 FC 00000>mov     dword ptr [ebp-4], 0
    2. 004A50EB  |.  C745 F8 00000>mov     dword ptr [ebp-8], 0
    3. 004A50F2  |.  EB 09         jmp     short 004A50FD
    4. 004A50F4  |>  8B45 F8       /mov     eax, dword ptr [ebp-8]
    5. 004A50F7  |.  83C0 01       |add     eax, 1
    6. 004A50FA  |.  8945 F8       |mov     dword ptr [ebp-8], eax
    7. 004A50FD  |>  837D F8 03     cmp     dword ptr [ebp-8], 3
    8. 004A5101  |.  7D 32         |jge     short 004A5135
    9. 004A5103  |.  8B4D FC       |mov     ecx, dword ptr [ebp-4]          ;  初始值为0(余数*10累加)
    10. 004A5106  |.  6BC9 0A       |imul    ecx, ecx, 0A                    ;  *10
    11. 004A5109  |.  894D FC       |mov     dword ptr [ebp-4], ecx
    12. 004A510C  |.  8B45 08       |mov     eax, dword ptr [ebp+8]          ;  第二组
    13. 004A510F  |.  99            |cdq
    14. 004A5110  |.  B9 0A000000   |mov     ecx, 0A
    15. 004A5115  |.  F7F9          |idiv    ecx
    16. 004A5117  |.  6BC0 0A       |imul    eax, eax, 0A                    ;  求余
    17. 004A511A  |.  8B55 08       |mov     edx, dword ptr [ebp+8]
    18. 004A511D  |.  2BD0          |sub     edx, eax                        ;  求余
    19. 004A511F  |.  0355 FC       |add     edx, dword ptr [ebp-4]          ;  累加
    20. 004A5122  |.  8955 FC       |mov     dword ptr [ebp-4], edx
    21. 004A5125  |.  8B45 08       |mov     eax, dword ptr [ebp+8]
    22. 004A5128  |.  99            |cdq
    23. 004A5129  |.  B9 0A000000   |mov     ecx, 0A
    24. 004A512E  |.  F7F9          |idiv    ecx
    25. 004A5130  |.  8945 08       |mov     dword ptr [ebp+8], eax
    26. 004A5133  |.^ EB BF         \jmp     short 004A50F4
    27. 004A5135  |>  8B45 FC       mov     eax, dword ptr [ebp-4]
    28. 004A5138  |.  8BE5          mov     esp, ebp
    29. 004A513A  |.  5D            pop     ebp
    30. 004A513B  \.  C3            retn
    复制代码
    依然不值得一提。依然有求余的烂算法。这次不同的是余数依次*10再累加。这是在做什么呢?
    说穿了还是不值一提。就是把这个数值倒一下序,比如123变成321。。。
    最后是算法3:
    1. 004A51E0  /> \55            push    ebp
    2. 004A51E1  |.  8BEC          mov     ebp, esp
    3. 004A51E3  |.  8B45 08       mov     eax, dword ptr [ebp+8]
    4. 004A51E6  |.  99            cdq
    5. 004A51E7  |.  B9 E8030000   mov     ecx, 3E8
    6. 004A51EC  |.  F7F9          idiv    ecx
    7. 004A51EE  |.  69C0 E8030000 imul    eax, eax, 3E8
    8. 004A51F4  |.  8B55 08       mov     edx, dword ptr [ebp+8]
    9. 004A51F7  |.  2BD0          sub     edx, eax
    10. 004A51F9  |.  8BC2          mov     eax, edx
    11. 004A51FB  |.  5D            pop     ebp
    12. 004A51FC  \.  C3            retn
    复制代码
    呵呵。。。。无语了,只是把数值%1000 求余。
    【算法总结】算法那是相当的简单。非常软的柿子。
    注册码第一组固定为:962,各位相加=0x11。
    注册码第二组和第五组倒装,得到M2,M5
    N3=(N2*10-3*(M2+0x11))%1000
    N4=(N5*10-3*(M5+0x11))%1000
    如此而已。

    Delphi注册机关键代码如下:
    1. function ModIT(m:Integer):Integer;
    2. var
    3.   i,p,q:Integer;
    4. begin
    5.     q:=0;
    6.     for i:=0 to 2 do
    7.        begin
    8.          q:=10*q+m mod 10;
    9.          m:=m div 10;
    10.        end;
    11.     Result:=q;
    12. end;
    13. procedure TForm1.BitBtn1Click(Sender: TObject);
    14.     var
    15.       N2,N3,N4,N5,M2,M5:Integer;
    16.     const
    17.       N1=962;
    18.       M1=$11;
    19. begin
    20.     Randomize;
    21.     N2:=Random(900)+100;
    22.     Randomize;
    23.     N5:=Random(900)+100;
    24.     M2:=ModIT(N2);
    25.     M5:=ModIT(N5);
    26.     N3:=Abs((M1+M2)*3-(M1-1)*N2 ) mod 1000;
    27.     N4:=Abs((M1+M5)*3-(M1-1)*N5 ) mod 1000;
    28.     edit2.Text:=IntToStr(N1)+'-'+ IntToStr(N2)+'-'+IntToStr(N3)+'-'+IntToStr(N4)+'-'+IntToStr(N5);
    29. end;
    复制代码
    两组可用的注册码:

    1. 962-208-871-917-405
    2. 962-215-853-615-413
    复制代码
    【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
    Snap1.gif

    Snap2.gif

    评分

    参与人数 1威望 +40 飘云币 +40 收起 理由
    月之精灵 + 40 + 40 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2010-8-30 10:46:38 | 显示全部楼层
    C注册机:
    1. /*Ez-Architect 5.0算法注册机*/
    2. #include<stdio.h>
    3. #include<stdlib.h>
    4. #include<time.h>
    5. #define random(x) (rand()%x)
    6. int Xchg(int m);
    7. void main()
    8. {
    9.         printf("******************************************\n");
    10.         printf("    Ez-Architect 5.0算法注册机 by zaas\n");
    11.         printf("******************************************\n\n");
    12.        
    13.         const M1=0x11,N1=962;//第一组
    14.         int k,N2,N3,N4,N5,M2,M5;//2-5组
    15.         srand((int)time(0));
    16.         for(k=1;k<6;k++)
    17.         {
    18.                
    19.                 N2=random(900)+100;//第二组注册码
    20.                 N5=random(900)+100;//第五组注册码
    21.                 M2=Xchg(N2);
    22.                 M5=Xchg(N5);
    23.                 N3=abs(N2*10-(M1+M2)*3)%1000;
    24.                 N4=abs(N5*10-(M1+M5)*3)%1000;
    25.                 printf("您的注册码%d:      %3d-%3d-%3d-%3d-%3d\n\n",k,N1,N2,N3,N4,N5);
    26.         }

    27. }
    28. int Xchg( int m)
    29. {
    30.         int temp,i;
    31.         temp=0;
    32.         for(i=0;i<3;i++)
    33.         {
    34.                 temp=10*temp+m%10;
    35.                 m=m/10;
    36.         }
    37.         return(temp);
    38. }
    复制代码
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-3 23:07
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-8-30 13:30:45 | 显示全部楼层
    进来学习下,
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-8-30 18:45:57 | 显示全部楼层
    辛苦了 最近人气跌的厉害
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    前天 20:46
  • 签到天数: 2218 天

    [LV.Master]伴坛终老

    发表于 2010-8-31 22:25:22 | 显示全部楼层
    不错,开开眼界,不知能不能直接做成内存注册机
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-3-9 12:06
  • 签到天数: 85 天

    [LV.6]常住居民II

    发表于 2010-9-1 07:01:28 | 显示全部楼层
    真的不错!!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-11-28 07:16
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-9-7 12:13:55 | 显示全部楼层
    算法注册机高产王,学习
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-3-10 20:59
  • 签到天数: 243 天

    [LV.8]以坛为家I

    发表于 2014-9-9 12:22:57 | 显示全部楼层
    算法大牛,学习一下了,感谢
    PYG19周年生日快乐!
  • TA的每日心情

    2024-12-4 10:25
  • 签到天数: 465 天

    [LV.9]以坛为家II

    发表于 2014-9-10 20:50:52 | 显示全部楼层
    学习zaas大的 算法分析,,
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-11-19 11:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2014-9-11 16:53:07 | 显示全部楼层
    现在都7.0了,居然算法流程未变。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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