飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6130|回复: 11

[原创] ResizeIt v1.1 算法分析

[复制链接]
  • TA的每日心情
    开心
    2019-3-25 14:18
  • 签到天数: 881 天

    [LV.10]以坛为家III

    发表于 2016-1-28 23:55:02 | 显示全部楼层 |阅读模式
    本帖最后由 GeekCat 于 2016-1-29 11:26 编辑

    【文章标题】: ResizeIt v1.1 算法分析
    【作者邮箱】: GeekCat@chinapyg.com
    【作者主页】:
    【软件名称】: ResizeIt v1.1
    【软件大小】: 830 KB (850,717 字节)
    【加壳方式】: 无壳
    【保护方式】: 注册码
    【编写语言】: Borland Delphi 6.0 - 7.0
    【使用工具】: OD、PEID
    【操作平台】: XP SP3
    破解声明】: 破解在于交流思路和过程,结果并不重要,请不要用于非法用途;
    【软件介绍】:  透过PDTSoftware开发的ResizeIt,可以同时对多张图片进行编辑、转换格式,改变大小等。它可协助初学者为网页或传送电邮需求时,快速地对相关图片进行处理,它可以读取不同格式的图片,并进行转换储为jpg、gif、bmp等图片格式。
    --------------------------------------------------------------------------------------------------------------------------------

    1、F12、字符串、API、D语言的专门工具找注册按钮快速到关键点,代码如下:


    1. 00546DEB  |.  8B86 C4030000 |mov eax,dword ptr ds:[esi+0x3C4]
    2. 00546DF1  |.  E8 FE5FFEFF   |call resizeit.0052CDF4            ;  关键CALL -1
    3. 00546DF6  |.  84C0          |test al,al
    4. 00546DF8  |.  74 0E         |je short resizeit.00546E08        ;  关键跳
    5. 00546DFA  |.  B8 986E5400   |mov eax,resizeit.00546E98         ;  Thank you for registering!
    6. 00546DFF  |.  E8 5822F0FF   |call resizeit.0044905C
    7. 00546E04  |.  33DB          |xor ebx,ebx
    8. 00546E06  |.  EB 2D         |jmp short resizeit.00546E35
    9. 00546E08  |>  6A 00         |push 0x0
    10. 00546E0A  |.  66:8B0D B46E5>|mov cx,word ptr ds:[0x546EB4]     ;  $
    11. 00546E11  |.  B2 01         |mov dl,0x1
    12. 00546E13  |.  B8 C06E5400   |mov eax,resizeit.00546EC0         ;  Invalid key entered.  Make sure your license key and user name are correct
    复制代码


    2、F7跟进关键CALL -1 00546DF1 代码如下:


    1. 0052CE32  |.  8B55 FC       mov edx,dword ptr ss:[ebp-0x4]     ;  (ASCII "GeekCat")
    2. 0052CE35  |.  8BC3          mov eax,ebx
    3. 0052CE37  |.  E8 38000000   call resizeit.0052CE74             ;  关键CALL -2要求eax=1
    4. 0052CE3C  |.  8BD8          mov ebx,eax
    复制代码




    3、F7跟进关键CALL -2 0052CE37 代码如下:


    1. 0052CEEE  |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]     ;  (ASCII "GeekCat")
    2. 0052CEF1  |.  E8 E27AEDFF   call resizeit.004049D8             ;  计算注册名的长度
    3. 0052CEF6  |.  3B47 58       cmp eax,dword ptr ds:[edi+0x58]    ;  注册名不大于32位
    4. 0052CEF9  |.  7F 19         jg short resizeit.0052CF14
    5. 0052CEFB  |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]     ;  (ASCII "GeekCat")
    6. 0052CEFE  |.  E8 D57AEDFF   call resizeit.004049D8             ;  计算注册名的长度
    7. 0052CF03  |.  3B47 5C       cmp eax,dword ptr ds:[edi+0x5C]
    8. 0052CF06  |.  7C 0C         jl short resizeit.0052CF14
    9. 0052CF08  |.  8B45 0C       mov eax,dword ptr ss:[ebp+0xC]     ;  (ASCII "1234567890ABCdef9876")
    10. 0052CF0B  |.  E8 C87AEDFF   call resizeit.004049D8
    11. 0052CF10  |.  85C0          test eax,eax                       ;  注册码不能为空
    12. 0052CF12  |.  75 07         jnz short resizeit.0052CF1B
    13. 0052CF14  |>  33DB          xor ebx,ebx
    14. 0052CF16  |.  E9 8A000000   jmp resizeit.0052CFA5
    15. 0052CF1B  |>  8D55 F4       lea edx,dword ptr ss:[ebp-0xC]
    16. 0052CF1E  |.  8B45 0C       mov eax,dword ptr ss:[ebp+0xC]     ;  (ASCII "1234567890ABCdef9876")
    17. 0052CF21  |.  E8 DEBEEDFF   call resizeit.00408E04             ;  小写转大写
    18. 0052CF26  |.  8B55 F4       mov edx,dword ptr ss:[ebp-0xC]     ;  (ASCII "1234567890ABCDEF9876")
    19. 0052CF29  |.  8D45 0C       lea eax,dword ptr ss:[ebp+0xC]
    20. 0052CF2C  |.  E8 8778EDFF   call resizeit.004047B8
    21. 0052CF31  |.  33DB          xor ebx,ebx
    22. 0052CF33  |.  B1 01         mov cl,0x1
    23. 0052CF35  |.  8B55 0C       mov edx,dword ptr ss:[ebp+0xC]     ;  (ASCII "1234567890ABCDEF9876")
    24. 0052CF38  |.  8BC7          mov eax,edi
    25. 0052CF3A  |.  E8 99FAFFFF   call resizeit.0052C9D8             ;  细看一下 对注册有什么限制
    26. 0052CF3F  |.  84C0          test al,al
    27. 0052CF41  |.  75 62         jnz short resizeit.0052CFA5
    28. 0052CF43  |.  8D45 F0       lea eax,dword ptr ss:[ebp-0x10]
    29. 0052CF46  |.  50            push eax
    30. 0052CF47  |.  8B4D 0C       mov ecx,dword ptr ss:[ebp+0xC]     ;  (ASCII "1234567890ABCDEF9876")
    31. 0052CF4A  |.  8B55 FC       mov edx,dword ptr ss:[ebp-0x4]     ;  (ASCII "GeekCat")
    32. 0052CF4D  |.  8BC7          mov eax,edi
    33. 0052CF4F  |.  E8 28F2FFFF   call resizeit.0052C17C             ;  算法CALL
    34. 0052CF54  |.  8B45 F0       mov eax,dword ptr ss:[ebp-0x10]
    35. 0052CF57  |.  BA E8CF5200   mov edx,resizeit.0052CFE8          ;  645364631365423154824
    36. 0052CF5C  |.  E8 1BBFEDFF   call resizeit.00408E7C             ;  对比CALL  要求eax=0
    37. 0052CF61  |.  85C0          test eax,eax
    38. 0052CF63  |.  75 04         jnz short resizeit.0052CF69        ;  不能跳
    39. 0052CF65  |.  B3 01         mov bl,0x1
    40. 0052CF67  |.  EB 02         jmp short resizeit.0052CF6B
    41. 0052CF69  |>  33DB          xor ebx,ebx
    42. 0052CF6B  |>  80FB 01       cmp bl,0x1
    43. 0052CF6E  |.  75 35         jnz short resizeit.0052CFA5        ;  不能跳
    44. 0052CF70  |.  8D47 50       lea eax,dword ptr ds:[edi+0x50]
    复制代码


    4、F7跟进算法CALL  0052CE37 代码如下:


    1. 0052C1C0  |.  8B45 08       mov eax,dword ptr ss:[ebp+0x8]
    2. 0052C1C3  |.  BA 3CC55200   mov edx,resizeit.0052C53C          ;  542264156124568746123
    3. 0052C1C8  |.  E8 A785EDFF   call resizeit.00404774
    4. 0052C1CD  |.  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]     ;  (ASCII "GeekCat")
    5. 0052C1D0  |.  E8 0388EDFF   call resizeit.004049D8             ;  计算注册名的长度
    6. 0052C1D5  |.  8B55 FC       mov edx,dword ptr ss:[ebp-0x4]
    7. 0052C1D8  |.  3B42 58       cmp eax,dword ptr ds:[edx+0x58]    ;  注册名不能大于32位
    8. 0052C1DB  |.  0F8F 18030000 jg resizeit.0052C4F9
    9. 0052C1E1  |.  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]     ;  (ASCII "GeekCat")
    10. 0052C1E4  |.  E8 EF87EDFF   call resizeit.004049D8             ;  计算注册名的长度
    11. 0052C1E9  |.  8B55 FC       mov edx,dword ptr ss:[ebp-0x4]
    12. 0052C1EC  |.  3B42 5C       cmp eax,dword ptr ds:[edx+0x5C]    ;  注册名要大于等于5位
    13. 0052C1EF  |.  0F8C 04030000 jl resizeit.0052C4F9
    14. 0052C1F5  |.  8D45 E0       lea eax,dword ptr ss:[ebp-0x20]
    15. 0052C1F8  |.  8B55 F4       mov edx,dword ptr ss:[ebp-0xC]     ;  (ASCII "1234567890ABCDEF9876")
    16. 0052C1FB  |.  8A12          mov dl,byte ptr ds:[edx]           ;  取注册码第1位
    17. 0052C1FD  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
    18. 0052C200  |.  C600 01       mov byte ptr ds:[eax],0x1
    19. 0052C203  |.  8D55 E0       lea edx,dword ptr ss:[ebp-0x20]
    20. 0052C206  |.  8D45 DC       lea eax,dword ptr ss:[ebp-0x24]
    21. 0052C209  |.  E8 7A6EEDFF   call resizeit.00403088
    22. 0052C20E  |.  8D45 D8       lea eax,dword ptr ss:[ebp-0x28]
    23. 0052C211  |.  8B55 F4       mov edx,dword ptr ss:[ebp-0xC]     ;  (ASCII "1234567890ABCDEF9876")
    24. 0052C214  |.  8A52 02       mov dl,byte ptr ds:[edx+0x2]       ;  取注册码第3位
    25. 0052C217  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
    26. 0052C21A  |.  C600 01       mov byte ptr ds:[eax],0x1
    27. 0052C21D  |.  8D55 D8       lea edx,dword ptr ss:[ebp-0x28]
    28. 0052C220  |.  8D45 DC       lea eax,dword ptr ss:[ebp-0x24]
    29. 0052C223  |.  B1 02         mov cl,0x2
    30. 0052C225  |.  E8 2E6EEDFF   call resizeit.00403058
    31. 0052C22A  |.  8D55 DC       lea edx,dword ptr ss:[ebp-0x24]
    32. 0052C22D  |.  8D45 F0       lea eax,dword ptr ss:[ebp-0x10]    ;  ebp-0x10 值
    33. 0052C230  |.  E8 4787EDFF   call resizeit.0040497C
    34. 0052C235  |.  8D45 EC       lea eax,dword ptr ss:[ebp-0x14]
    35. 0052C238  |.  8B55 F4       mov edx,dword ptr ss:[ebp-0xC]     ;  (ASCII "1234567890ABCDEF9876")
    36. 0052C23B  |.  8A52 04       mov dl,byte ptr ds:[edx+0x4]       ;  取注册码第5位
    37. 0052C23E  |.  E8 BD86EDFF   call resizeit.00404900
    38. 0052C243  |.  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]     ;  (ASCII "GeekCat")
    39. 0052C246  |.  E8 8D87EDFF   call resizeit.004049D8             ;  计算注册名的长度
    40. 0052C24B  |.  8BF0          mov esi,eax
    41. 0052C24D  |.  8975 D4       mov dword ptr ss:[ebp-0x2C],esi
    42. 0052C250  |.  DB45 D4       fild dword ptr ss:[ebp-0x2C]
    43. 0052C253  |.  D835 54C55200 fdiv dword ptr ds:[0x52C554]
    44. 0052C259  |.  E8 466AEDFF   call resizeit.00402CA4
    45. 0052C25E  |.  8B55 F8       mov edx,dword ptr ss:[ebp-0x8]     ;  (ASCII "GeekCat")
    46. 0052C261  |.  0FB64402 FF   movzx eax,byte ptr ds:[edx+eax-0x1>;  取注册名长度除2的整数部分数值位
    47. 0052C266  |.  8B55 F8       mov edx,dword ptr ss:[ebp-0x8]     ;  (ASCII "GeekCat")
    48. 0052C269  |.  0FB612        movzx edx,byte ptr ds:[edx]        ;  取注册名的第1位
    49. 0052C26C  |.  8B4D F8       mov ecx,dword ptr ss:[ebp-0x8]
    50. 0052C26F  |.  0FB649 01     movzx ecx,byte ptr ds:[ecx+0x1]    ;  取注册名的第2位
    51. 0052C273  |.  03D1          add edx,ecx                        ;  注册名第1、2位AS相加
    52. 0052C275  |.  03C2          add eax,edx                        ;  注册名第1、2、3位AS相加
    53. 0052C277  |.  8B55 F8       mov edx,dword ptr ss:[ebp-0x8]     ;  (ASCII "GeekCat")
    54. 0052C27A  |.  0FB65432 FF   movzx edx,byte ptr ds:[edx+esi-0x1>;  注册名最后1位
    55. 0052C27F  |.  03C2          add eax,edx                        ;  注册名第1、2、3位AS加上最后1位
    56. 0052C281  |.  8B55 F8       mov edx,dword ptr ss:[ebp-0x8]
    57. 0052C284  |.  0FB65432 FE   movzx edx,byte ptr ds:[edx+esi-0x2>;  注册名倒数第2位
    58. 0052C289  |.  03C2          add eax,edx                        ;  注册名第1、2、3位AS加上倒数第1、2位
    59. 0052C28B  |.  8945 E8       mov dword ptr ss:[ebp-0x18],eax    ;  1E6
    60. 0052C28E  |.  8D45 D0       lea eax,dword ptr ss:[ebp-0x30]
    61. 0052C291  |.  8B4D F0       mov ecx,dword ptr ss:[ebp-0x10]    ;  (ASCII "13") 注册码的1、3位吗
    62. 0052C294  |.  BA 60C55200   mov edx,resizeit.0052C560          ;  $
    63. 0052C299  |.  E8 8687EDFF   call resizeit.00404A24
    64. 0052C29E  |.  8B45 D0       mov eax,dword ptr ss:[ebp-0x30]
    65. 0052C2A1  |.  BA FFFF0000   mov edx,0xFFFF
    66. 0052C2A6  |.  E8 09D2EDFF   call resizeit.004094B4             ;  字符串转数值(表达不一定准确,理解什么意思就OK)    注意eax+0x70值
    67. 0052C2AB  |.  8BF0          mov esi,eax
    68. 0052C2AD  |.  81FE FFFF0000 cmp esi,0xFFFF
    69. 0052C2B3  |.  0F84 40020000 je resizeit.0052C4F9
    70. 0052C2B9  |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]
    71. 0052C2BC  |.  8B40 70       mov eax,dword ptr ds:[eax+0x70]    ;  这个值怎来的没找到  换用不同的注册名和注册码都不变  看着常量C225
    72. 0052C2BF  |.  99            cdq
    73. 0052C2C0  |.  F77D E8       idiv dword ptr ss:[ebp-0x18]       ;  总共5位注册名累加和  1E6
    74. 0052C2C3  |.  81E2 FF000000 and edx,0xFF
    75. 0052C2C9  |.  3BF2          cmp esi,edx
    76. 0052C2CB  |.  0F85 28020000 jnz resizeit.0052C4F9              ;  0 不能跳
    77. 0052C2D1  |.  8D45 CC       lea eax,dword ptr ss:[ebp-0x34]
    78. 0052C2D4  |.  8B4D EC       mov ecx,dword ptr ss:[ebp-0x14]    ;  (UNICODE "5") 注册码的第5位
    79. 0052C2D7  |.  BA 60C55200   mov edx,resizeit.0052C560          ;  $
    80. 0052C2DC  |.  E8 4387EDFF   call resizeit.00404A24
    81. 0052C2E1  |.  8B45 CC       mov eax,dword ptr ss:[ebp-0x34]
    82. 0052C2E4  |.  BA FFFF0000   mov edx,0xFFFF
    83. 0052C2E9  |.  E8 C6D1EDFF   call resizeit.004094B4             ;  字符串转数值
    84. 0052C2EE  |.  8BF0          mov esi,eax
    85. 0052C2F0  |.  81FE FFFF0000 cmp esi,0xFFFF
    86. 0052C2F6  |.  0F84 FD010000 je resizeit.0052C4F9
    87. 0052C2FC  |.  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]     ;  (ASCII "GeekCat")
    88. 0052C2FF  |.  E8 D486EDFF   call resizeit.004049D8
    89. 0052C304  |.  3BF0          cmp esi,eax                        ;  注册名长度跟计算出来的数值比较
    90. 0052C306  |.  74 15         je short resizeit.0052C31D
    91. 0052C308  |.  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]     ;  (ASCII "GeekCat")
    92. 0052C30B  |.  E8 C886EDFF   call resizeit.004049D8
    93. 0052C310  |.  83F8 10       cmp eax,0x10                       ;  当计算值不等注册名长时,注册名最大0x10-->16位
    94. 0052C313  |.  7E 08         jle short resizeit.0052C31D
    95. 0052C315  |.  85F6          test esi,esi
    96. 0052C317  |.  0F85 DC010000 jnz resizeit.0052C4F9
    97. 0052C31D  |>  8D45 E0       lea eax,dword ptr ss:[ebp-0x20]
    98. 0052C320  |.  8B55 F4       mov edx,dword ptr ss:[ebp-0xC]     ;  (ASCII "1234567890ABCDEF9876")
    99. 0052C323  |.  8A52 06       mov dl,byte ptr ds:[edx+0x6]       ;  取注册码第7位  7
    100. 0052C326  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
    101. 0052C329  |.  C600 01       mov byte ptr ds:[eax],0x1
    102. 0052C32C  |.  8D55 E0       lea edx,dword ptr ss:[ebp-0x20]
    103. 0052C32F  |.  8D45 DC       lea eax,dword ptr ss:[ebp-0x24]
    104. 0052C332  |.  E8 516DEDFF   call resizeit.00403088
    105. 0052C337  |.  8D45 D8       lea eax,dword ptr ss:[ebp-0x28]
    106. 0052C33A  |.  8B55 F4       mov edx,dword ptr ss:[ebp-0xC]     ;  (ASCII "1234567890ABCDEF9876")
    107. 0052C33D  |.  8A52 08       mov dl,byte ptr ds:[edx+0x8]       ;  取注册码第9位  9
    108. 0052C340  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
    109. 0052C343  |.  C600 01       mov byte ptr ds:[eax],0x1
    110. 0052C346  |.  8D55 D8       lea edx,dword ptr ss:[ebp-0x28]
    111. 0052C349  |.  8D45 DC       lea eax,dword ptr ss:[ebp-0x24]
    112. 0052C34C  |.  B1 02         mov cl,0x2
    113. 0052C34E  |.  E8 056DEDFF   call resizeit.00403058
    114. 0052C353  |.  8D55 DC       lea edx,dword ptr ss:[ebp-0x24]
    115. 0052C356  |.  8D45 D4       lea eax,dword ptr ss:[ebp-0x2C]
    116. 0052C359  |.  E8 2A6DEDFF   call resizeit.00403088
    117. 0052C35E  |.  8D45 D8       lea eax,dword ptr ss:[ebp-0x28]
    118. 0052C361  |.  8B55 F4       mov edx,dword ptr ss:[ebp-0xC]     ;  (ASCII "1234567890ABCDEF9876")
    119. 0052C364  |.  8A52 0A       mov dl,byte ptr ds:[edx+0xA]       ;  取注册码第11位  A
    120. 0052C367  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
    121. 0052C36A  |.  C600 01       mov byte ptr ds:[eax],0x1
    122. 0052C36D  |.  8D55 D8       lea edx,dword ptr ss:[ebp-0x28]
    123. 0052C370  |.  8D45 D4       lea eax,dword ptr ss:[ebp-0x2C]
    124. 0052C373  |.  B1 03         mov cl,0x3
    125. 0052C375  |.  E8 DE6CEDFF   call resizeit.00403058
    126. 0052C37A  |.  8D55 D4       lea edx,dword ptr ss:[ebp-0x2C]
    127. 0052C37D  |.  8D45 F0       lea eax,dword ptr ss:[ebp-0x10]
    128. 0052C380  |.  E8 F785EDFF   call resizeit.0040497C
    129. 0052C385  |.  8D45 C8       lea eax,dword ptr ss:[ebp-0x38]
    130. 0052C388  |.  8B4D F0       mov ecx,dword ptr ss:[ebp-0x10]    ;  (ASCII "79A")
    131. 0052C38B  |.  BA 60C55200   mov edx,resizeit.0052C560          ;  $
    132. 0052C390  |.  E8 8F86EDFF   call resizeit.00404A24
    133. 0052C395  |.  8B45 C8       mov eax,dword ptr ss:[ebp-0x38]
    134. 0052C398  |.  BA FFFF0000   mov edx,0xFFFF
    135. 0052C39D  |.  E8 12D1EDFF   call resizeit.004094B4             ;  字符串转数值
    136. 0052C3A2  |.  8945 E8       mov dword ptr ss:[ebp-0x18],eax
    137. 0052C3A5  |.  817D E8 FFFF0>cmp dword ptr ss:[ebp-0x18],0xFFFF
    138. 0052C3AC  |.  0F84 47010000 je resizeit.0052C4F9
    139. 0052C3B2  |.  33F6          xor esi,esi
    140. 0052C3B4  |.  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]     ;  (ASCII "GeekCat")
    141. 0052C3B7  |.  E8 1C86EDFF   call resizeit.004049D8             ;  计算注册码长度
    142. 0052C3BC  |.  85C0          test eax,eax
    143. 0052C3BE  |.  7E 13         jle short resizeit.0052C3D3
    144. 0052C3C0  |.  BB 01000000   mov ebx,0x1
    145. 0052C3C5  |>  8B55 F8       /mov edx,dword ptr ss:[ebp-0x8]    ;  (ASCII "GeekCat")
    146. 0052C3C8  |.  0FB6541A FF   |movzx edx,byte ptr ds:[edx+ebx-0x>
    147. 0052C3CD  |.  03F2          |add esi,edx                       ;  注册名各字符AS值累加 294
    148. 0052C3CF  |.  43            |inc ebx
    149. 0052C3D0  |.  48            |dec eax
    150. 0052C3D1  |.^ 75 F2         \jnz short resizeit.0052C3C5
    151. 0052C3D3  |>  C1E6 04       shl esi,0x4                        ;  累加和左移4位  2940
    152. 0052C3D6  |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]
    153. 0052C3D9  |.  3370 74       xor esi,dword ptr ds:[eax+0x74]    ;  2940 xor E8D7这个值怎来的没找到  换用不同的注册名和注册码都不变  看着常量
    154. 0052C3DC  |.  81E6 FF0F0000 and esi,0xFFF
    155. 0052C3E2  |.  8975 E4       mov dword ptr ss:[ebp-0x1C],esi
    156. 0052C3E5  |.  8B45 E4       mov eax,dword ptr ss:[ebp-0x1C]
    157. 0052C3E8  |.  3B45 E8       cmp eax,dword ptr ss:[ebp-0x18]    ;  xor值跟注册码的 7、9、11位组成的数字相等
    158. 0052C3EB  |.  0F85 08010000 jnz resizeit.0052C4F9
    159. 0052C3F1  |.  8B45 F4       mov eax,dword ptr ss:[ebp-0xC]     ;  (ASCII "1234567890ABCDEF9876")
    160. 0052C3F4  |.  E8 DF85EDFF   call resizeit.004049D8             ;  计算注册名长度
    161. 0052C3F9  |.  83F8 0C       cmp eax,0xC                        ;  注册码长度大于12位,如果注册小于等于12位时有什么情况~~
    162. 0052C3FC  |.  0F8E EA000000 jle resizeit.0052C4EC
    163. 0052C402  |.  8D45 EC       lea eax,dword ptr ss:[ebp-0x14]
    164. 0052C405  |.  E8 1683EDFF   call resizeit.00404720
    165. 0052C40A  |.  33C0          xor eax,eax
    166. 0052C40C  |.  8945 E4       mov dword ptr ss:[ebp-0x1C],eax
    167. 0052C40F  |.  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]     ;  (ASCII "GeekCat")
    168. 0052C412  |.  E8 C185EDFF   call resizeit.004049D8             ;  计算注册码长度
    169. 0052C417  |.  85C0          test eax,eax
    170. 0052C419  |.  7E 14         jle short resizeit.0052C42F
    171. 0052C41B  |.  BB 01000000   mov ebx,0x1
    172. 0052C420  |>  8B55 F8       /mov edx,dword ptr ss:[ebp-0x8]    ;  (ASCII "GeekCat")
    173. 0052C423  |.  0FB6541A FF   |movzx edx,byte ptr ds:[edx+ebx-0x>;  取注册名的每1位
    174. 0052C428  |.  0155 E4       |add dword ptr ss:[ebp-0x1C],edx   ;  注册名各字符AS值累加 294
    175. 0052C42B  |.  43            |inc ebx
    176. 0052C42C  |.  48            |dec eax
    177. 0052C42D  |.^ 75 F1         \jnz short resizeit.0052C420
    178. 0052C42F  |>  B8 FFFFFF07   mov eax,0x7FFFFFF
    179. 0052C434  |.  33D2          xor edx,edx
    180. 0052C436  |.  F775 E4       div dword ptr ss:[ebp-0x1C]        ;  294
    181. 0052C439  |.  F76D E4       imul dword ptr ss:[ebp-0x1C]
    182. 0052C43C  |.  8945 E4       mov dword ptr ss:[ebp-0x1C],eax    ;  07FFFF80
    183. 0052C43F  |.  8B45 F4       mov eax,dword ptr ss:[ebp-0xC]     ;  (ASCII "1234567890ABCDEF9876")
    184. 0052C442  |.  E8 9185EDFF   call resizeit.004049D8             ;  计算注册码长度
    185. 0052C447  |.  83E8 0C       sub eax,0xC
    186. 0052C44A  |.  8945 E8       mov dword ptr ss:[ebp-0x18],eax
    187. 0052C44D  |.  8D45 F0       lea eax,dword ptr ss:[ebp-0x10]
    188. 0052C450  |.  50            push eax
    189. 0052C451  |.  8B4D E8       mov ecx,dword ptr ss:[ebp-0x18]
    190. 0052C454  |.  BA 0D000000   mov edx,0xD                        ;  从第0xD-->12位开始取
    191. 0052C459  |.  8B45 F4       mov eax,dword ptr ss:[ebp-0xC]     ;  (ASCII "1234567890ABCDEF9876")
    192. 0052C45C  |.  E8 CF87EDFF   call resizeit.00404C30             ;  截取字符串  (ASCII "CDEF9876")
    193. 0052C461  |.  BF 1F000000   mov edi,0x1F
    194. 0052C466  |.  BB 01000000   mov ebx,0x1
    195. 0052C46B  |>  8BCB          /mov ecx,ebx                       ;  这个循环生在一个96位的字符串,
    196. 0052C46D  |.  8B45 FC       |mov eax,dword ptr ss:[ebp-0x4]    ;  这个循环的计算步骤太多但不复杂很容易看到,不好写总结(总结能力有限请多包含)
    197. 0052C470  |.  8B40 78       |mov eax,dword ptr ds:[eax+0x78]   ;  79BE这个值怎来的没找到  换用不同的注册名和注册码都不变  看着常量
    198. 0052C473  |.  8BF0          |mov esi,eax
    199. 0052C475  |.  D3E6          |shl esi,cl
    200. 0052C477  |.  8BCF          |mov ecx,edi
    201. 0052C479  |.  D3E8          |shr eax,cl
    202. 0052C47B  |.  0BF0          |or esi,eax
    203. 0052C47D  |.  8BC6          |mov eax,esi
    204. 0052C47F  |.  99            |cdq
    205. 0052C480  |.  33C2          |xor eax,edx
    206. 0052C482  |.  2BC2          |sub eax,edx
    207. 0052C484  |.  8BF0          |mov esi,eax
    208. 0052C486  |.  3B75 E4       |cmp esi,dword ptr ss:[ebp-0x1C]
    209. 0052C489  |.  7E 0A         |jle short resizeit.0052C495
    210. 0052C48B  |.  8BC6          |mov eax,esi
    211. 0052C48D  |.  99            |cdq
    212. 0052C48E  |.  F77D E4       |idiv dword ptr ss:[ebp-0x1C]
    213. 0052C491  |.  8BF2          |mov esi,edx
    214. 0052C493  |.  EB 08         |jmp short resizeit.0052C49D
    215. 0052C495  |>  8B45 E4       |mov eax,dword ptr ss:[ebp-0x1C]
    216. 0052C498  |.  99            |cdq
    217. 0052C499  |.  F7FE          |idiv esi
    218. 0052C49B  |.  8BF2          |mov esi,edx
    219. 0052C49D  |>  8D4D C4       |lea ecx,dword ptr ss:[ebp-0x3C]
    220. 0052C4A0  |.  8BC6          |mov eax,esi
    221. 0052C4A2  |.  25 FF0F0000   |and eax,0xFFF
    222. 0052C4A7  |.  BA 03000000   |mov edx,0x3
    223. 0052C4AC  |.  E8 8BCFEDFF   |call resizeit.0040943C            ;  数值转字符串
    224. 0052C4B1  |.  8B55 C4       |mov edx,dword ptr ss:[ebp-0x3C]   ;  进CALL时eax的值变成字符串
    225. 0052C4B4  |.  8D45 EC       |lea eax,dword ptr ss:[ebp-0x14]
    226. 0052C4B7  |.  E8 2485EDFF   |call resizeit.004049E0
    227. 0052C4BC  |.  4F            |dec edi
    228. 0052C4BD  |.  43            |inc ebx
    229. 0052C4BE  |.  83FB 21       |cmp ebx,0x21
    230. 0052C4C1  |.^ 75 A8         \jnz short resizeit.0052C46B
    231. 0052C4C3  |.  8D45 EC       lea eax,dword ptr ss:[ebp-0x14]
    232. 0052C4C6  |.  50            push eax
    233. 0052C4C7  |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]
    234. 0052C4CA  |.  8B48 6C       mov ecx,dword ptr ds:[eax+0x6C]
    235. 0052C4CD  |.  83E9 0C       sub ecx,0xC                        ;  取的位数 E-C=2  这个ecx的值不变 当常量来用E
    236. 0052C4D0  |.  BA 01000000   mov edx,0x1                        ;  第1位开始取
    237. 0052C4D5  |.  8B45 EC       mov eax,dword ptr ss:[ebp-0x14]    ;  计算出来的96位字符串
    238. 0052C4D8  |.  E8 5387EDFF   call resizeit.00404C30
    239. 0052C4DD  |.  8B55 EC       mov edx,dword ptr ss:[ebp-0x14]    ;  (ASCII "1A") 前2位
    240. 0052C4E0  |.  8B45 F0       mov eax,dword ptr ss:[ebp-0x10]    ;  (ASCII "CDEF9876") 注册码的后8位
    241. 0052C4E3  |.  E8 E4C9EDFF   call resizeit.00408ECC             ;  比较CALL ,上一个CALL取得的字符串要跟注册码12位之后的字符串一样
    242. 0052C4E8  |.  85C0          test eax,eax
    243. 0052C4EA  |.  75 0D         jnz short resizeit.0052C4F9        ;  不能跳
    244. 0052C4EC  |>  8B45 08       mov eax,dword ptr ss:[ebp+0x8]     ;  CALL前面的字符常量字符串 542264156124568746123
    245. 0052C4EF  |.  BA 6CC55200   mov edx,resizeit.0052C56C          ;  645364631365423154824
    246. 0052C4F4  |.  E8 7B82EDFF   call resizeit.00404774
    复制代码


    ---------------------------------------------------------------------------------------------------------------------------
    不完整总结的总结:分析、总结能力太渣请大家多包涵。
    1、注册名长度:5~16位;
    2、注册码的1、3、5、7、9、11、13、14位必须是由0~f组成,其它的可以任意数字或字母;
    3、代码0052C46D 处的循环步骤比较多,总结起来要写很大一堆(分析总结能力太渣);
    4、上面贴出的代码(除0052C46D 处循环)注释的很明白

    可用注册信息:
    注册名:GeekCat/P.Y.G
    注册码:2P5Y8G8P2Y7GF3偶数位:PYG

    ---------------------------------------------------------------------------------------------------------------------------
    【版权声明】:
    本文原创于GeekCat/P.Y.G,转载请注明作者及论坛并保存文章的完整!


    来自群组: 我们都爱月姐姐

    评分

    参与人数 6威望 +52 飘云币 +52 收起 理由
    飞天 + 4 + 4 PYG有你更精彩!
    wgz001 + 4 + 4 PYG有你更精彩!
    gagmeng + 8 + 8 很给力!
    开心啦 + 8 + 8 赞一个!
    menglv + 8 + 8 很给力!
    pentium450 + 20 + 20 十分精彩!!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2019-3-1 23:51
  • 签到天数: 559 天

    [LV.9]以坛为家II

    发表于 2016-1-29 07:52:48 | 显示全部楼层
    谢谢楼主分享
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    昨天 20:26
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    发表于 2016-1-29 08:06:22 | 显示全部楼层
    算法分析很NB
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-3-10 20:59
  • 签到天数: 243 天

    [LV.8]以坛为家I

    发表于 2016-1-29 08:16:19 | 显示全部楼层
    学习了,感谢分享了
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2024-2-15 14:17
  • 签到天数: 130 天

    [LV.7]常住居民III

    发表于 2016-1-29 09:00:37 | 显示全部楼层
    楼主的算法分析注释很详细,谢谢分享!

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-17 22:44
  • 签到天数: 132 天

    [LV.7]常住居民III

    发表于 2016-1-29 10:42:39 | 显示全部楼层
    赞,GC算法分析很棒~
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2024-2-17 10:46
  • 签到天数: 927 天

    [LV.10]以坛为家III

    发表于 2016-1-29 10:54:00 | 显示全部楼层
    真牛,已经是高手了。佩服中
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-25 15:21
  • 签到天数: 487 天

    [LV.9]以坛为家II

    发表于 2016-1-29 15:06:28 | 显示全部楼层
    我们都爱 月姐姐
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    前天 08:00
  • 签到天数: 971 天

    [LV.10]以坛为家III

    发表于 2016-1-29 17:37:51 | 显示全部楼层

    感谢楼主分享!
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 1418 天

    [LV.10]以坛为家III

    发表于 2016-1-29 18:33:47 | 显示全部楼层
    谢谢 版主分享算法分析。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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