飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6171|回复: 8

[原创] ClipNow v4.7 算法注册机

[复制链接]
  • TA的每日心情

    2022-5-20 13:32
  • 签到天数: 235 天

    [LV.7]常住居民III

    发表于 2015-5-9 22:40:42 | 显示全部楼层 |阅读模式
    【破文标题】【第十二轮】【初级班第2课作业】ClipNow v4.7 算法注册机
    【破文作者】千千万是福朋友
    破解工具】OD
    【破解平台】XP
    【软件名称】ClipNow v4.7
    【破解声明】仅限于技术交流,请勿用于商业用途【破解过程】

    首先PEID查壳为UPX,不影响直接拖入OD分析
    软件启动弹出注册对话框
    输入任意用户名注册码点击Register,弹出"Invalid Reg Key"提示
    首先还是使用最简单的方法,查找字符串
    找了一圈发现没有什么特别敏感的字符串出现

    那就换一种方法,按下F12暂停程序,点击ALT+K显示调用堆栈
    1. 调用堆栈:     主线程
    2. 地址       堆栈       函数过程 / 参数                       调用来自                      结构
    3. 0012CD88   77D19418   包含ntdll.KiFastSystemCallRet           user32.77D19416               0012CDBC
    4. 0012CD8C   77D2770A   user32.WaitMessage                    user32.77D27705               0012CDBC
    5. 0012CDC0   77D249C4   user32.77D2757B                       user32.77D249BF               0012CDBC
    6. 0012CDE8   77D3A956   user32.77D2490E                       user32.77D3A951               0012CDE4
    7. 0012D0A8   77D3A2BC   user32.SoftModalMessageBox            user32.77D3A2B7               0012D0A4
    8. 0012D1F8   77D663FD   user32.77D3A147                       user32.77D663F8               0012D1F4
    9. 0012D250   77D664A2   user32.MessageBoxTimeoutW             user32.77D6649D               0012D24C
    10. 0012D284   77D50877   ? user32.MessageBoxTimeoutA           user32.77D50872               0012D280
    11. 0012D2A4   77D5082F   ? user32.MessageBoxExA                user32.77D5082A               0012D2A0
    12. 0012D2A8   003A0126     hOwner = 003A0126 ('ClipNow V4.7-T
    13. 0012D2AC   004231A0     Text = "InValid Reg Key"
    14. 0012D2B0   004231C8     Title = "ClipNow-V4.7"
    15. 0012D2B4   00000000     Style = MB_OK|MB_APPLMODAL
    16. 0012D2B8   00000000     LanguageID = 0x0 (LANG_NEUTRAL)
    17. 0012D2C0   73D88411   ? user32.MessageBoxA                  mfc42.73D8840B                0012D2BC
    18. 0012D2C4   003A0126     hOwner = 003A0126 ('ClipNow V4.7-T
    19. 0012D2C8   004231A0     Text = "InValid Reg Key"
    20. 0012D2CC   004231C8     Title = "ClipNow-V4.7"
    21. 0012D2D0   00000000     Style = MB_OK|MB_APPLMODAL
    22. 0012D2D8   00403E52   ? clipnow.00417228                    clipnow.00403E4D
    复制代码
    发现0012D2D8 00403E52 ? clipnow.00417228 clipnow.00403E4D这里调用失败的弹窗提示,右击鼠标显示调用从显示的字符串可以看出这里应该的程序的关键判断位置
    1. 00403DEB    68 D8314200     PUSH    clipnow.004231D8                     ; ASCII "Picture.dll"
    2. 00403DF0    68 30324200     PUSH    clipnow.00423230                     ; ASCII "abc.xml"
    3. 00403DF5    FF96 CC000000   CALL    NEAR DWORD PTR DS:[ESI+0xCC]         ; KeyData.TestReg
    4. 00403DFB    83C4 08         ADD     ESP, 0x8
    5. 00403DFE    3BC5            CMP     EAX, EBP
    6. 00403E00    74 35           JE      SHORT clipnow.00403E37               ; 关键跳
    7. 00403E02    8B4E 20         MOV     ECX, DWORD PTR DS:[ESI+0x20]
    8. 00403E05    6A 01           PUSH    0x1
    9. 00403E07    8981 FC000000   MOV     DWORD PTR DS:[ECX+0xFC], EAX
    10. 00403E0D    8B4E 20         MOV     ECX, DWORD PTR DS:[ESI+0x20]
    11. 00403E10    E8 3BC10000     CALL    clipnow.0040FF50
    12. 00403E15    55              PUSH    EBP
    13. 00403E16    68 C8314200     PUSH    clipnow.004231C8                     ; ASCII "ClipNow-V4.7"
    14. 00403E1B    68 B0314200     PUSH    clipnow.004231B0                     ; ASCII "Regisiter Successfully"
    15. 00403E20    8BCB            MOV     ECX, EBX
    16. 00403E22    E8 01340100     CALL    clipnow.00417228                     ; JMP 到 mfc42.#4224
    17. 00403E27    8B53 20         MOV     EDX, DWORD PTR DS:[EBX+0x20]
    18. 00403E2A    55              PUSH    EBP
    19. 00403E2B    55              PUSH    EBP
    20. 00403E2C    6A 10           PUSH    0x10
    21. 00403E2E    52              PUSH    EDX
    22. 00403E2F    FF15 CCA84100   CALL    NEAR DWORD PTR DS:[0x41A8CC]         ; user32.PostMessageA
    23. 00403E35    EB 1B           JMP     SHORT clipnow.00403E52
    24. 00403E37    8B4E 20         MOV     ECX, DWORD PTR DS:[ESI+0x20]
    25. 00403E3A    55              PUSH    EBP
    26. 00403E3B    E8 10C10000     CALL    clipnow.0040FF50
    27. 00403E40    55              PUSH    EBP
    28. 00403E41    68 C8314200     PUSH    clipnow.004231C8                     ; ASCII "ClipNow-V4.7"
    29. 00403E46    68 A0314200     PUSH    clipnow.004231A0                     ; ASCII "InValid Reg Key"
    30. 00403E4B    8BCB            MOV     ECX, EBX
    31. 00403E4D    E8 D6330100     CALL    clipnow.00417228                     ; JMP 到 mfc42.#4224
    32. 00403E52    8D4C24 2C       LEA     ECX, DWORD PTR SS:[ESP+0x2C]
    33. 00403E56    C68424 70040000>MOV     BYTE PTR SS:[ESP+0x470], 0x0
    34. 00403E5E    E8 8D070000     CALL    clipnow.004045F0
    35. 00403E63    8D4C24 14       LEA     ECX, DWORD PTR SS:[ESP+0x14]
    36. 00403E67    C78424 70040000>MOV     DWORD PTR SS:[ESP+0x470], -0x1
    37. 00403E72    E8 49030000     CALL    clipnow.004041C0
    38. 00403E77    8B8C24 68040000 MOV     ECX, DWORD PTR SS:[ESP+0x468]
    39. 00403E7E    5F              POP     EDI
    40. 00403E7F    5E              POP     ESI
    41. 00403E80    5D              POP     EBP
    42. 00403E81    64:890D 0000000>MOV     DWORD PTR FS:[0], ECX
    43. 00403E88    5B              POP     EBX
    44. 00403E89    81C4 64040000   ADD     ESP, 0x464
    45. 00403E8F    C3              RETN
    复制代码
    这里00403E00   /74 35           JE      SHORT clipnow.00403E37               ; 关键跳的关键跳跳过了成功提示

    爆破的话只要NOP这个跳转应该就可以了,这次研究的更深入一点,看看能不能找到真码
    一般关键跳往上就是关键CALL,从call的名字TestReg也可以看出这里是测试注册信息是否正确的地方
    00403DF5 FF96 CC000000 CALL NEAR DWORD PTR DS:[ESI+0xCC] ; KeyData.TestReg
    我们直接双击关键跳上面的CALL看看做了什么
    好吧,发现双击不进去,我们在这一行下好断,再点击Register,程序再次断下
    这回可以F7跟进去看个明白了
    1. 100010D0 >  81EC 04040000   SUB     ESP, 0x404
    2. 100010D6    8D4C24 00       LEA     ECX, DWORD PTR SS:[ESP]
    3. 100010DA    56              PUSH    ESI
    4. 100010DB    E8 803B0000     CALL    KeyData.10004C60
    5. 100010E0    8B8424 10040000 MOV     EAX, DWORD PTR SS:[ESP+0x410]
    6. 100010E7    8B8C24 0C040000 MOV     ECX, DWORD PTR SS:[ESP+0x40C]
    7. 100010EE    50              PUSH    EAX                                  ; Picture.dll
    8. 100010EF    51              PUSH    ECX                                  ; abc.xml
    9. 100010F0    8D4C24 0C       LEA     ECX, DWORD PTR SS:[ESP+0xC]
    10. 100010F4    E8 073D0000     CALL    KeyData.10004E00
    11. 100010F9    8D4C24 04       LEA     ECX, DWORD PTR SS:[ESP+0x4]
    12. 100010FD    8BF0            MOV     ESI, EAX                             ; 0
    13. 100010FF    E8 FC3B0000     CALL    KeyData.10004D00
    复制代码
    进来发现这个CALL很短,也没有什么算法,关键位置应该还在下一层
    这个CALL又调用了3个CALL,既然不知道哪个是关键CALL那就一个一个看吧
    1. 10004C60    83EC 0C         SUB     ESP, 0xC
    2. 10004C63    56              PUSH    ESI
    3. 10004C64    8BF1            MOV     ESI, ECX
    4. 10004C66    8D4424 0C       LEA     EAX, DWORD PTR SS:[ESP+0xC]
    5. 10004C6A    8D4C24 04       LEA     ECX, DWORD PTR SS:[ESP+0x4]
    6. 10004C6E    50              PUSH    EAX
    7. 10004C6F    51              PUSH    ECX
    8. 10004C70    51              PUSH    ECX
    9. 10004C71    C706 14730010   MOV     DWORD PTR DS:[ESI], KeyData.10007314
    10. 10004C77    8BCC            MOV     ECX, ESP
    11. 10004C79    896424 18       MOV     DWORD PTR SS:[ESP+0x18], ESP
    12. 10004C7D    68 C0830010     PUSH    KeyData.100083C0                     ; ASCII "DiskID32.dll"
    13. 10004C82    C74424 14 00000>MOV     DWORD PTR SS:[ESP+0x14], 0x0
    14. 10004C8A    E8 610A0000     CALL    KeyData.100056F0                     ; JMP 到 mfc42.#537
    15. 10004C8F    8BCE            MOV     ECX, ESI
    16. 10004C91    E8 3A060000     CALL    KeyData.100052D0
    17. 10004C96    8B5424 04       MOV     EDX, DWORD PTR SS:[ESP+0x4]
    18. 10004C9A    8B4C24 0C       MOV     ECX, DWORD PTR SS:[ESP+0xC]
    19. 10004C9E    52              PUSH    EDX
    20. 10004C9F    03C8            ADD     ECX, EAX
    21. 10004CA1    8D5424 0C       LEA     EDX, DWORD PTR SS:[ESP+0xC]
    22. 10004CA5    51              PUSH    ECX
    23. 10004CA6    52              PUSH    EDX
    24. 10004CA7    8BCE            MOV     ECX, ESI
    25. 10004CA9    E8 02050000     CALL    KeyData.100051B0
    26. 10004CAE    8B4424 08       MOV     EAX, DWORD PTR SS:[ESP+0x8]
    27. 10004CB2    68 B4830010     PUSH    KeyData.100083B4                     ; ASCII "AE8E448F"
    28. 10004CB7    50              PUSH    EAX
    29. 10004CB8    FF15 8C710010   CALL    NEAR DWORD PTR DS:[0x1000718C]       ; msvcrt._mbscmp
    30. 10004CBE    83C4 08         ADD     ESP, 0x8
    31. 10004CC1    85C0            TEST    EAX, EAX
    32. 10004CC3    74 08           JE      SHORT KeyData.10004CCD
    33. 10004CC5    6A 02           PUSH    0x2
    34. 10004CC7    FF15 C8710010   CALL    NEAR DWORD PTR DS:[0x100071C8]       ; msvcrt.exit
    35. 10004CCD    8D4C24 08       LEA     ECX, DWORD PTR SS:[ESP+0x8]
    36. 10004CD1    E8 EA090000     CALL    KeyData.100056C0                     ; JMP 到 mfc42.#800
    37. 10004CD6    8BC6            MOV     EAX, ESI
    38. 10004CD8    5E              POP     ESI
    39. 10004CD9    83C4 0C         ADD     ESP, 0xC
    40. 10004CDC    C3              RETN
    复制代码


    发现第一个CALL100010DB E8 803B0000 CALL KeyData.10004C60比较短,进去的开头前面几行有100083C0=KeyData.100083C0 (ASCII "DiskID32.dll")
    又继续往下跟,出现一个关键字符串100083B4=KeyData.100083B4 (ASCII "AE8E448F")也不知道是什么东西,先记下可能有用
    拿到注册码那里填进去,发现还是失败。说明这第一个CALL不是真码的位置,应该是验证DiskID32.dll文件的完整性(是不是就不清楚了,猜的)

    我们继续跟到下一个CALL 100010F4 E8 073D0000 CALL KeyData.10004E00来看看这里面有什么
    1. 10004E00    6A FF           PUSH    -0x1                                 ; 验证CALL
    2. 10004E02    68 30610010     PUSH    KeyData.10006130
    3. 10004E07    64:A1 00000000  MOV     EAX, DWORD PTR FS:[0]
    4. 10004E0D    50              PUSH    EAX
    5. 10004E0E    64:8925 0000000>MOV     DWORD PTR FS:[0], ESP
    6. 10004E15    83EC 4C         SUB     ESP, 0x4C
    7. 10004E18    53              PUSH    EBX
    8. 10004E19    56              PUSH    ESI
    9. 10004E1A    57              PUSH    EDI
    10. 10004E1B    8BF9            MOV     EDI, ECX
    11. 10004E1D    8D4C24 1C       LEA     ECX, DWORD PTR SS:[ESP+0x1C]
    12. 10004E21    E8 A6080000     CALL    KeyData.100056CC                     ; JMP 到 mfc42.#540
    13. 10004E26    33DB            XOR     EBX, EBX
    14. 10004E28    8D4C24 20       LEA     ECX, DWORD PTR SS:[ESP+0x20]
    15. 10004E2C    895C24 60       MOV     DWORD PTR SS:[ESP+0x60], EBX
    16. 10004E30    E8 97080000     CALL    KeyData.100056CC                     ; JMP 到 mfc42.#540
    17. 10004E35    895C24 48       MOV     DWORD PTR SS:[ESP+0x48], EBX
    18. 10004E39    895C24 54       MOV     DWORD PTR SS:[ESP+0x54], EBX
    19. 10004E3D    895C24 50       MOV     DWORD PTR SS:[ESP+0x50], EBX
    20. 10004E41    895C24 4C       MOV     DWORD PTR SS:[ESP+0x4C], EBX
    21. 10004E45    53              PUSH    EBX
    22. 10004E46    8D4C24 20       LEA     ECX, DWORD PTR SS:[ESP+0x20]
    23. 10004E4A    C64424 64 03    MOV     BYTE PTR SS:[ESP+0x64], 0x3
    24. 10004E4F    E8 8CC3FFFF     CALL    KeyData.100011E0
    25. 10004E54    895C24 44       MOV     DWORD PTR SS:[ESP+0x44], EBX
    26. 10004E58    51              PUSH    ECX
    27. 10004E59    8B4C24 6C       MOV     ECX, DWORD PTR SS:[ESP+0x6C]
    28. 10004E5D    8BC4            MOV     EAX, ESP
    29. 10004E5F    C74424 64 04000>MOV     DWORD PTR SS:[ESP+0x64], 0x4
    30. 10004E67    896424 1C       MOV     DWORD PTR SS:[ESP+0x1C], ESP
    31. 10004E6B    8908            MOV     DWORD PTR DS:[EAX], ECX
    32. 10004E6D    8D4C24 20       LEA     ECX, DWORD PTR SS:[ESP+0x20]
    33. 10004E71    E8 EAC3FFFF     CALL    KeyData.10001260
    34. 10004E76    25 FF000000     AND     EAX, 0xFF
    35. 10004E7B    894424 68       MOV     DWORD PTR SS:[ESP+0x68], EAX
    36. 10004E7F    75 35           JNZ     SHORT KeyData.10004EB6
    37. 10004E81    8D4C24 4C       LEA     ECX, DWORD PTR SS:[ESP+0x4C]
    38. 10004E85    C74424 60 07000>MOV     DWORD PTR SS:[ESP+0x60], 0x7
    39. 10004E8D    E8 FECEFFFF     CALL    KeyData.10001D90
    40. 10004E92    8B4424 48       MOV     EAX, DWORD PTR SS:[ESP+0x48]
    41. 10004E96    C64424 60 06    MOV     BYTE PTR SS:[ESP+0x60], 0x6
    42. 10004E9B    3BC3            CMP     EAX, EBX
    43. 10004E9D    74 09           JE      SHORT KeyData.10004EA8
    44. 10004E9F    8D4C24 48       LEA     ECX, DWORD PTR SS:[ESP+0x48]
    45. 10004EA3    E8 08D6FFFF     CALL    KeyData.100024B0
    46. 10004EA8    895C24 48       MOV     DWORD PTR SS:[ESP+0x48], EBX
    47. 10004EAC    C64424 60 05    MOV     BYTE PTR SS:[ESP+0x60], 0x5
    48. 10004EB1    E9 47020000     JMP     KeyData.100050FD
    49. 10004EB6    8D4C24 0C       LEA     ECX, DWORD PTR SS:[ESP+0xC]
    50. 10004EBA    E8 0D080000     CALL    KeyData.100056CC                     ; JMP 到 mfc42.#540
    51. 10004EBF    8D4C24 10       LEA     ECX, DWORD PTR SS:[ESP+0x10]
    52. 10004EC3    C64424 60 08    MOV     BYTE PTR SS:[ESP+0x60], 0x8
    53. 10004EC8    E8 FF070000     CALL    KeyData.100056CC                     ; JMP 到 mfc42.#540
    54. 10004ECD    51              PUSH    ECX
    55. 10004ECE    8D4C24 20       LEA     ECX, DWORD PTR SS:[ESP+0x20]
    56. 10004ED2    8BC4            MOV     EAX, ESP
    57. 10004ED4    C64424 64 09    MOV     BYTE PTR SS:[ESP+0x64], 0x9
    58. 10004ED9    896424 6C       MOV     DWORD PTR SS:[ESP+0x6C], ESP
    59. 10004EDD    C700 F8830010   MOV     DWORD PTR DS:[EAX], KeyData.100083F8 ; ASCII "UserName"
    60. 10004EE3    E8 48C6FFFF     CALL    KeyData.10001530
    61. 10004EE8    3AC3            CMP     AL, BL
    62. 10004EEA    74 2B           JE      SHORT KeyData.10004F17
    63. 10004EEC    8D5424 68       LEA     EDX, DWORD PTR SS:[ESP+0x68]
    64. 10004EF0    8D4C24 1C       LEA     ECX, DWORD PTR SS:[ESP+0x1C]
    65. 10004EF4    52              PUSH    EDX
    66. 10004EF5    E8 36020000     CALL    KeyData.10005130
    67. 10004EFA    50              PUSH    EAX
    68. 10004EFB    8D4C24 10       LEA     ECX, DWORD PTR SS:[ESP+0x10]
    69. 10004EFF    C64424 64 0A    MOV     BYTE PTR SS:[ESP+0x64], 0xA
    70. 10004F04    E8 BD070000     CALL    KeyData.100056C6                     ; JMP 到 mfc42.#858
    71. 10004F09    8D4C24 68       LEA     ECX, DWORD PTR SS:[ESP+0x68]
    72. 10004F0D    C64424 60 09    MOV     BYTE PTR SS:[ESP+0x60], 0x9
    73. 10004F12    E8 A9070000     CALL    KeyData.100056C0                     ; JMP 到 mfc42.#800
    74. 10004F17    53              PUSH    EBX
    75. 10004F18    53              PUSH    EBX
    76. 10004F19    53              PUSH    EBX
    77. 10004F1A    8D4C24 28       LEA     ECX, DWORD PTR SS:[ESP+0x28]
    78. 10004F1E    E8 2D020000     CALL    KeyData.10005150
    79. 10004F23    51              PUSH    ECX
    80. 10004F24    8D4C24 20       LEA     ECX, DWORD PTR SS:[ESP+0x20]
    81. 10004F28    8BC4            MOV     EAX, ESP
    82. 10004F2A    896424 6C       MOV     DWORD PTR SS:[ESP+0x6C], ESP
    83. 10004F2E    C700 F0830010   MOV     DWORD PTR DS:[EAX], KeyData.100083F0 ; ASCII "SerNo"
    84. 10004F34    E8 F7C5FFFF     CALL    KeyData.10001530
    85. 10004F39    3AC3            CMP     AL, BL
    86. 10004F3B    74 2B           JE      SHORT KeyData.10004F68
    87. 10004F3D    8D4424 68       LEA     EAX, DWORD PTR SS:[ESP+0x68]
    88. 10004F41    8D4C24 1C       LEA     ECX, DWORD PTR SS:[ESP+0x1C]
    89. 10004F45    50              PUSH    EAX
    90. 10004F46    E8 E5010000     CALL    KeyData.10005130
    91. 10004F4B    50              PUSH    EAX
    92. 10004F4C    8D4C24 14       LEA     ECX, DWORD PTR SS:[ESP+0x14]
    93. 10004F50    C64424 64 0B    MOV     BYTE PTR SS:[ESP+0x64], 0xB
    94. 10004F55    E8 6C070000     CALL    KeyData.100056C6                     ; JMP 到 mfc42.#858
    95. 10004F5A    8D4C24 68       LEA     ECX, DWORD PTR SS:[ESP+0x68]
    96. 10004F5E    C64424 60 09    MOV     BYTE PTR SS:[ESP+0x60], 0x9
    97. 10004F63    E8 58070000     CALL    KeyData.100056C0                     ; JMP 到 mfc42.#800
    98. 10004F68    8B4C24 0C       MOV     ECX, DWORD PTR SS:[ESP+0xC]          ; 用户名
    99. 10004F6C    8B35 8C710010   MOV     ESI, DWORD PTR DS:[0x1000718C]       ; msvcrt._mbscmp
    100. 10004F72    68 80850010     PUSH    KeyData.10008580
    101. 10004F77    51              PUSH    ECX
    102. 10004F78    FFD6            CALL    NEAR ESI
    103. 10004F7A    83C4 08         ADD     ESP, 0x8
    104. 10004F7D    85C0            TEST    EAX, EAX
    105. 10004F7F    0F84 2C010000   JE      KeyData.100050B1
    106. 10004F85    8B5424 10       MOV     EDX, DWORD PTR SS:[ESP+0x10]         ; 假码
    107. 10004F89    68 80850010     PUSH    KeyData.10008580
    108. 10004F8E    52              PUSH    EDX
    109. 10004F8F    FFD6            CALL    NEAR ESI
    110. 10004F91    83C4 08         ADD     ESP, 0x8
    111. 10004F94    85C0            TEST    EAX, EAX
    112. 10004F96    0F84 15010000   JE      KeyData.100050B1
    113. 10004F9C    8B4424 0C       MOV     EAX, DWORD PTR SS:[ESP+0xC]
    114. 10004FA0    8D4C24 0C       LEA     ECX, DWORD PTR SS:[ESP+0xC]
    115. 10004FA4    8B40 F8         MOV     EAX, DWORD PTR DS:[EAX-0x8]          ; 用户名长度
    116. 10004FA7    50              PUSH    EAX
    117. 10004FA8    E8 3D070000     CALL    KeyData.100056EA                     ; JMP 到 mfc42.#2915
    118. 10004FAD    8D4C24 14       LEA     ECX, DWORD PTR SS:[ESP+0x14]
    119. 10004FB1    50              PUSH    EAX
    120. 10004FB2    51              PUSH    ECX
    121. 10004FB3    8BCF            MOV     ECX, EDI
    122. 10004FB5    E8 66040000     CALL    KeyData.10005420                     ; 计算真码
    123. 10004FBA    8B5424 10       MOV     EDX, DWORD PTR SS:[ESP+0x10]         ; 假码
    124. 10004FBE    8B4424 14       MOV     EAX, DWORD PTR SS:[ESP+0x14]         ; 真码
    125. 10004FC2    52              PUSH    EDX                                  ; 假码
    126. 10004FC3    50              PUSH    EAX                                  ; 真码
    127. 10004FC4    FFD6            CALL    NEAR ESI
    128. 10004FC6    83C4 08         ADD     ESP, 0x8
    129. 10004FC9    C64424 60 09    MOV     BYTE PTR SS:[ESP+0x60], 0x9
    130. 10004FCE    85C0            TEST    EAX, EAX
    131. 10004FD0    8D4C24 14       LEA     ECX, DWORD PTR SS:[ESP+0x14]
    132. 10004FD4    0F85 84000000   JNZ     KeyData.1000505E
    133. 10004FDA    E8 E1060000     CALL    KeyData.100056C0                     ; JMP 到 mfc42.#800
    134. 10004FDF    8D4C24 10       LEA     ECX, DWORD PTR SS:[ESP+0x10]
    135. 10004FE3    C64424 60 08    MOV     BYTE PTR SS:[ESP+0x60], 0x8
    136. 10004FE8    E8 D3060000     CALL    KeyData.100056C0                     ; JMP 到 mfc42.#800
    137. 10004FED    8D4C24 0C       LEA     ECX, DWORD PTR SS:[ESP+0xC]
    138. 10004FF1    C64424 60 04    MOV     BYTE PTR SS:[ESP+0x60], 0x4
    139. 10004FF6    E8 C5060000     CALL    KeyData.100056C0                     ; JMP 到 mfc42.#800
    140. 10004FFB    8D4C24 4C       LEA     ECX, DWORD PTR SS:[ESP+0x4C]
    141. 10004FFF    C74424 60 12000>MOV     DWORD PTR SS:[ESP+0x60], 0x12
    142. 10005007    E8 84CDFFFF     CALL    KeyData.10001D90
    143. 1000500C    8B4424 48       MOV     EAX, DWORD PTR SS:[ESP+0x48]
    144. 10005010    C64424 60 11    MOV     BYTE PTR SS:[ESP+0x60], 0x11
    145. 10005015    3BC3            CMP     EAX, EBX
    146. 10005017    74 09           JE      SHORT KeyData.10005022
    147. 10005019    8D4C24 48       LEA     ECX, DWORD PTR SS:[ESP+0x48]
    148. 1000501D    E8 8ED4FFFF     CALL    KeyData.100024B0
    149. 10005022    8D4C24 20       LEA     ECX, DWORD PTR SS:[ESP+0x20]
    150. 10005026    895C24 48       MOV     DWORD PTR SS:[ESP+0x48], EBX
    151. 1000502A    C64424 60 10    MOV     BYTE PTR SS:[ESP+0x60], 0x10
    152. 1000502F    E8 8C060000     CALL    KeyData.100056C0                     ; JMP 到 mfc42.#800
    153. 10005034    8D4C24 1C       LEA     ECX, DWORD PTR SS:[ESP+0x1C]
    154. 10005038    C74424 60 FFFFF>MOV     DWORD PTR SS:[ESP+0x60], -0x1
    155. 10005040    E8 7B060000     CALL    KeyData.100056C0                     ; JMP 到 mfc42.#800
    156. 10005045    B8 01000000     MOV     EAX, 0x1
    157. 1000504A    8B4C24 58       MOV     ECX, DWORD PTR SS:[ESP+0x58]
    158. 1000504E    64:890D 0000000>MOV     DWORD PTR FS:[0], ECX
    159. 10005055    5F              POP     EDI
    160. 10005056    5E              POP     ESI
    161. 10005057    5B              POP     EBX
    162. 10005058    83C4 58         ADD     ESP, 0x58
    163. 1000505B    C2 0800         RETN    0x8
    复制代码
    这个CALL有点长,有点像是关键验证CALL,经过多次跟踪发现
    10004FBA 8B5424 10 MOV EDX, DWORD PTR SS:[ESP+0x10] ; 假码
    10004FBE 8B4424 14 MOV EAX, DWORD PTR SS:[ESP+0x14] ; 真码
    10004FC2 52 PUSH EDX ; 假码
    10004FC3 50 PUSH EAX ; 真码
    10004FC4 FFD6 CALL NEAR ESI
    这里出来了真码和假码的对比,这里的真码出现,那么上面的几个CALL应该有计算真码的CALL
    到这里真码也找到了,继续看上面的几个CALL看看能不能找出算法部分
    再次分析发现上面的这个CALL就是计算真码用的
    10004FB5    E8 66040000     CALL    KeyData.10005420                     ; 计算真码
    双击跟进去看一下到底是怎么算出真码的,(注:我用的用户名是“千千万是福朋友”)
    1. 10005420    6A FF           PUSH    -0x1
    2. 10005422    68 E1610010     PUSH    KeyData.100061E1
    3. 10005427    64:A1 00000000  MOV     EAX, DWORD PTR FS:[0]
    4. 1000542D    50              PUSH    EAX
    5. 1000542E    64:8925 0000000>MOV     DWORD PTR FS:[0], ESP
    6. 10005435    81EC F4030000   SUB     ESP, 0x3F4
    7. 1000543B    56              PUSH    ESI
    8. 1000543C    8BF1            MOV     ESI, ECX
    9. 1000543E    57              PUSH    EDI
    10. 1000543F    8D8C24 14020000 LEA     ECX, DWORD PTR SS:[ESP+0x214]
    11. 10005446    C74424 10 00000>MOV     DWORD PTR SS:[ESP+0x10], 0x0
    12. 1000544E    E8 0DEAFFFF     CALL    KeyData.10003E60
    13. 10005453    8B8424 10040000 MOV     EAX, DWORD PTR SS:[ESP+0x410]        ; 用户名
    14. 1000545A    8D8C24 14020000 LEA     ECX, DWORD PTR SS:[ESP+0x214]
    15. 10005461    50              PUSH    EAX
    16. 10005462    C78424 08040000>MOV     DWORD PTR SS:[ESP+0x408], 0x1
    17. 1000546D    E8 9EEAFFFF     CALL    KeyData.10003F10
    18. 10005472    8D8C24 14020000 LEA     ECX, DWORD PTR SS:[ESP+0x214]
    19. 10005479    E8 42F6FFFF     CALL    KeyData.10004AC0                     ; 用户名MD5
    20. 1000547E    33C9            XOR     ECX, ECX                             ; EAX=0012CE26, (ASCII "2749525809be1ef30c1afd46807d5a98")
    21. 10005480    8BF8            MOV     EDI, EAX
    22. 10005482    894C24 19       MOV     DWORD PTR SS:[ESP+0x19], ECX
    23. 10005486    C64424 18 00    MOV     BYTE PTR SS:[ESP+0x18], 0x0
    24. 1000548B    894C24 1D       MOV     DWORD PTR SS:[ESP+0x1D], ECX
    25. 1000548F    894C24 21       MOV     DWORD PTR SS:[ESP+0x21], ECX
    26. 10005493    894C24 25       MOV     DWORD PTR SS:[ESP+0x25], ECX
    27. 10005497    8BD1            MOV     EDX, ECX
    28. 10005499    81E2 01000080   AND     EDX, 0x80000001
    29. 1000549F    79 05           JNS     SHORT KeyData.100054A6
    30. 100054A1    4A              DEC     EDX
    31. 100054A2    83CA FE         OR      EDX, 0xFFFFFFFE
    32. 100054A5    42              INC     EDX
    33. 100054A6    75 0E           JNZ     SHORT KeyData.100054B6
    34. 100054A8    8BC1            MOV     EAX, ECX
    35. 100054AA    99              CDQ
    36. 100054AB    2BC2            SUB     EAX, EDX
    37. 100054AD    8A1439          MOV     DL, BYTE PTR DS:[ECX+EDI]
    38. 100054B0    D1F8            SAR     EAX, 1
    39. 100054B2    885404 18       MOV     BYTE PTR SS:[ESP+EAX+0x18], DL
    40. 100054B6    41              INC     ECX
    41. 100054B7    83F9 20         CMP     ECX, 0x20
    42. 100054BA  ^ 7C DB           JL      SHORT KeyData.10005497
    43. 100054BC    8D4424 18       LEA     EAX, DWORD PTR SS:[ESP+0x18]         ; 堆栈地址=0012CA68, (ASCII "24550b1f01f48759")
    44. 100054C0    6A 10           PUSH    0x10
    45. 100054C2    8D4C24 10       LEA     ECX, DWORD PTR SS:[ESP+0x10]
    46. 100054C6    50              PUSH    EAX
    47. 100054C7    51              PUSH    ECX
    48. 100054C8    8BCE            MOV     ECX, ESI
    49. 100054CA    E8 E1FCFFFF     CALL    KeyData.100051B0                     ; 587F528
    50. 100054CF    8D4C24 2C       LEA     ECX, DWORD PTR SS:[ESP+0x2C]
    51. 100054D3    C68424 04040000>MOV     BYTE PTR SS:[ESP+0x404], 0x2
    52. 100054DB    E8 80E9FFFF     CALL    KeyData.10003E60
    53. 100054E0    8B5424 0C       MOV     EDX, DWORD PTR SS:[ESP+0xC]          ; 堆栈 SS:[0012CA5C]=00BB6DD8, (ASCII "B578F528")
    54. 100054E4    8D4C24 2C       LEA     ECX, DWORD PTR SS:[ESP+0x2C]
    55. 100054E8    52              PUSH    EDX
    56. 100054E9    C68424 08040000>MOV     BYTE PTR SS:[ESP+0x408], 0x3
    57. 100054F1    E8 1AEAFFFF     CALL    KeyData.10003F10
    58. 100054F6    8D4C24 2C       LEA     ECX, DWORD PTR SS:[ESP+0x2C]
    59. 100054FA    E8 C1F5FFFF     CALL    KeyData.10004AC0                     ; 取MD5
    60. 100054FF    50              PUSH    EAX                                  ; EAX=0012CC3E, (ASCII "1619457074b437461336c80a531ccd67")
    61. 10005500    8D4C24 0C       LEA     ECX, DWORD PTR SS:[ESP+0xC]
    62. 10005504    E8 E7010000     CALL    KeyData.100056F0                     ; JMP 到 mfc42.#537
    63. 10005509    8D4424 14       LEA     EAX, DWORD PTR SS:[ESP+0x14]
    64. 1000550D    6A 08           PUSH    0x8
    65. 1000550F    50              PUSH    EAX
    66. 10005510    8D4C24 10       LEA     ECX, DWORD PTR SS:[ESP+0x10]
    67. 10005514    C68424 0C040000>MOV     BYTE PTR SS:[ESP+0x40C], 0x4
    68. 1000551C    E8 23020000     CALL    KeyData.10005744                     ; JMP 到 mfc42.#4129
    69. 10005521    50              PUSH    EAX                                  ; 取前8 “16194570”
    70. 10005522    8D4C24 0C       LEA     ECX, DWORD PTR SS:[ESP+0xC]
    71. 10005526    C68424 08040000>MOV     BYTE PTR SS:[ESP+0x408], 0x5
    72. 1000552E    E8 93010000     CALL    KeyData.100056C6                     ; JMP 到 mfc42.#858
    73. 10005533    8D4C24 14       LEA     ECX, DWORD PTR SS:[ESP+0x14]
    74. 10005537    C68424 04040000>MOV     BYTE PTR SS:[ESP+0x404], 0x4
    75. 1000553F    E8 7C010000     CALL    KeyData.100056C0                     ; JMP 到 mfc42.#800
    76. 10005544    8D4C24 08       LEA     ECX, DWORD PTR SS:[ESP+0x8]
    77. 10005548    E8 F1010000     CALL    KeyData.1000573E                     ; JMP 到 mfc42.#4204
    78. 1000554D    8BB424 0C040000 MOV     ESI, DWORD PTR SS:[ESP+0x40C]
    79. 10005554    8D4C24 08       LEA     ECX, DWORD PTR SS:[ESP+0x8]          ; 到大写 6DD95E07
    80. 10005558    51              PUSH    ECX
    81. 10005559    8BCE            MOV     ECX, ESI
    82. 1000555B    E8 96010000     CALL    KeyData.100056F6                     ; JMP 到 mfc42.#535
    83. 10005560    C74424 10 01000>MOV     DWORD PTR SS:[ESP+0x10], 0x1
    84. 10005568    8D4C24 08       LEA     ECX, DWORD PTR SS:[ESP+0x8]
    85. 1000556C    C68424 04040000>MOV     BYTE PTR SS:[ESP+0x404], 0x3
    86. 10005574    E8 47010000     CALL    KeyData.100056C0                     ; JMP 到 mfc42.#800
    87. 10005579    8D4C24 2C       LEA     ECX, DWORD PTR SS:[ESP+0x2C]
    88. 1000557D    C68424 04040000>MOV     BYTE PTR SS:[ESP+0x404], 0x2
    89. 10005585    E8 06E9FFFF     CALL    KeyData.10003E90
    90. 1000558A    8D4C24 0C       LEA     ECX, DWORD PTR SS:[ESP+0xC]
    91. 1000558E    C68424 04040000>MOV     BYTE PTR SS:[ESP+0x404], 0x1
    92. 10005596    E8 25010000     CALL    KeyData.100056C0                     ; JMP 到 mfc42.#800
    93. 1000559B    8D8C24 14020000 LEA     ECX, DWORD PTR SS:[ESP+0x214]
    94. 100055A2    C68424 04040000>MOV     BYTE PTR SS:[ESP+0x404], 0x0
    95. 100055AA    E8 E1E8FFFF     CALL    KeyData.10003E90
    96. 100055AF    8B8C24 FC030000 MOV     ECX, DWORD PTR SS:[ESP+0x3FC]
    97. 100055B6    8BC6            MOV     EAX, ESI
    98. 100055B8    5F              POP     EDI
    99. 100055B9    5E              POP     ESI
    100. 100055BA    64:890D 0000000>MOV     DWORD PTR FS:[0], ECX
    101. 100055C1    81C4 00040000   ADD     ESP, 0x400
    102. 100055C7    C2 0800         RETN    0x8
    复制代码
    多次跟踪发现这里出现了几个比较敏感的字符串
    类似MD5的字符串1000547E 33C9 XOR ECX, ECX ; EAX=0012CE26, (ASCII "2749525809be1ef30c1afd46807d5a98")
    100054BC    8D4424 18       LEA     EAX, DWORD PTR SS:[ESP+0x18]         ; 堆栈地址=0012CA68, (ASCII "24550b1f01f48759")

    100054E0 8B5424 0C MOV EDX, DWORD PTR SS:[ESP+0xC] ; 堆栈 SS:[0012CA5C]=00BB6DD8, (ASCII "B578F528")
    100054FF 50 PUSH EAX ; EAX=0012CC3E, (ASCII "1619457074b437461336c80a531ccd67")
    10005521 50 PUSH EAX ; 取前8 “16194570”,也就是真码

    使用MD5计算器计算下用户名“千千万是福朋友”的MD5值,刚好就是第一个关键字符串“2749525809be1ef30c1afd46807d5a98”
    第二个字符串一看还看不出来,但和第一个对比看一下,发现刚好是第一个字符串中取出奇数位的字符(第1、3、5、7、9、11、13、15、17、19、21、23、25、27、29、31)组合"24550b1f01f48759"
    第三个字符串B578F528怎么也猜不出来是什么东西,那就先不管了
    看看第四个也有点像MD5,再计算下B578F528的MD5,哈哈刚好就是"1619457074b437461336c80a531ccd67"
    第五个字符串就很简单了,用眼睛一看就知道取的是B578F528的MD5前8位数


    现在问题就只剩一个了:这个B578F528”到底是怎么得出来的??
    跟到这个字符串的上一个CALL进去看看能不能找到什么东西
    1. 100051B0    6A FF           PUSH    -0x1
    2. 100051B2    68 5F610010     PUSH    KeyData.1000615F
    3. 100051B7    64:A1 00000000  MOV     EAX, DWORD PTR FS:[0]
    4. 100051BD    50              PUSH    EAX
    5. 100051BE    64:8925 0000000>MOV     DWORD PTR FS:[0], ESP
    6. 100051C5    83EC 14         SUB     ESP, 0x14
    7. 100051C8    55              PUSH    EBP
    8. 100051C9    56              PUSH    ESI
    9. 100051CA    57              PUSH    EDI                                  ; 用户名MD5
    10. 100051CB    8BF1            MOV     ESI, ECX
    11. 100051CD    C74424 10 00000>MOV     DWORD PTR SS:[ESP+0x10], 0x0
    12. 100051D5    E8 A6FFFFFF     CALL    KeyData.10005180
    13. 100051DA    8B7C24 38       MOV     EDI, DWORD PTR SS:[ESP+0x38]         ; 位数
    14. 100051DE    8B4C24 34       MOV     ECX, DWORD PTR SS:[ESP+0x34]         ; 真码MD5取奇数位
    15. 100051E2    83C8 FF         OR      EAX, 0xFFFFFFFF
    16. 100051E5    85FF            TEST    EDI, EDI
    17. 100051E7    7E 1B           JLE     SHORT KeyData.10005204
    18. 100051E9    8BE8            MOV     EBP, EAX
    19. 100051EB    33D2            XOR     EDX, EDX
    20. 100051ED    8A11            MOV     DL, BYTE PTR DS:[ECX]
    21. 100051EF    81E5 FF000000   AND     EBP, 0xFF
    22. 100051F5    33EA            XOR     EBP, EDX
    23. 100051F7    C1E8 08         SHR     EAX, 0x8
    24. 100051FA    8B54AE 04       MOV     EDX, DWORD PTR DS:[ESI+EBP*4+0x4]
    25. 100051FE    33C2            XOR     EAX, EDX
    26. 10005200    41              INC     ECX
    27. 10005201    4F              DEC     EDI
    28. 10005202  ^ 75 E5           JNZ     SHORT KeyData.100051E9
    29. 10005204    33C9            XOR     ECX, ECX
    30. 10005206    8D5424 14       LEA     EDX, DWORD PTR SS:[ESP+0x14]
    31. 1000520A    894C24 15       MOV     DWORD PTR SS:[ESP+0x15], ECX
    32. 1000520E    6A 10           PUSH    0x10
    33. 10005210    F7D0            NOT     EAX
    34. 10005212    894C24 1D       MOV     DWORD PTR SS:[ESP+0x1D], ECX
    35. 10005216    52              PUSH    EDX
    36. 10005217    50              PUSH    EAX
    37. 10005218    C64424 20 00    MOV     BYTE PTR SS:[ESP+0x20], 0x0
    38. 1000521D    884C24 29       MOV     BYTE PTR SS:[ESP+0x29], CL
    39. 10005221    FF15 00720010   CALL    NEAR DWORD PTR DS:[0x10007200]       ; msvcrt._itoa
    40. 10005227    8D7C24 20       LEA     EDI, DWORD PTR SS:[ESP+0x20]         ; 堆栈地址=0012CA28, (ASCII "b578f528")
    41. 1000522B    83C9 FF         OR      ECX, 0xFFFFFFFF
    42. 1000522E    33C0            XOR     EAX, EAX
    43. 10005230    83C4 0C         ADD     ESP, 0xC
    44. 10005233    33F6            XOR     ESI, ESI
    45. 10005235    F2:AE           REPNE   SCAS BYTE PTR ES:[EDI]
    46. 10005237    F7D1            NOT     ECX
    47. 10005239    49              DEC     ECX
    48. 1000523A    74 28           JE      SHORT KeyData.10005264
    49. 1000523C    8B2D C4710010   MOV     EBP, DWORD PTR DS:[0x100071C4]       ; msvcrt.toupper
    50. 10005242    0FBE4434 14     MOVSX   EAX, BYTE PTR SS:[ESP+ESI+0x14]
    51. 10005247    50              PUSH    EAX
    52. 10005248    FFD5            CALL    NEAR EBP
    53. 1000524A    884434 18       MOV     BYTE PTR SS:[ESP+ESI+0x18], AL
    54. 1000524E    83C4 04         ADD     ESP, 0x4
    55. 10005251    8D7C24 14       LEA     EDI, DWORD PTR SS:[ESP+0x14]
    56. 10005255    83C9 FF         OR      ECX, 0xFFFFFFFF
    57. 10005258    33C0            XOR     EAX, EAX
    58. 1000525A    46              INC     ESI
    59. 1000525B    F2:AE           REPNE   SCAS BYTE PTR ES:[EDI]
    60. 1000525D    F7D1            NOT     ECX
    61. 1000525F    49              DEC     ECX
    62. 10005260    3BF1            CMP     ESI, ECX
    63. 10005262  ^ 72 DE           JB      SHORT KeyData.10005242
    64. 10005264    8D4C24 0C       LEA     ECX, DWORD PTR SS:[ESP+0xC]          ; 堆栈地址=0012CA20, (ASCII "5a98")
    65. 10005268    E8 5F040000     CALL    KeyData.100056CC                     ; JMP 到 mfc42.#540
    66. 1000526D    8D4C24 14       LEA     ECX, DWORD PTR SS:[ESP+0x14]         ; 堆栈地址=0012CA28, (ASCII "B578F528")
    67. 10005271    8D5424 0C       LEA     EDX, DWORD PTR SS:[ESP+0xC]
    68. 10005275    51              PUSH    ECX
    69. 10005276    BF 01000000     MOV     EDI, 0x1
    70. 1000527B    68 04840010     PUSH    KeyData.10008404                     ; ASCII "%s"
    71. 10005280    52              PUSH    EDX
    72. 10005281    897C24 34       MOV     DWORD PTR SS:[ESP+0x34], EDI
    73. 10005285    E8 A8040000     CALL    KeyData.10005732                     ; JMP 到 mfc42.#2818
    74. 1000528A    8B7424 3C       MOV     ESI, DWORD PTR SS:[ESP+0x3C]
    75. 1000528E    83C4 0C         ADD     ESP, 0xC
    76. 10005291    8D4424 0C       LEA     EAX, DWORD PTR SS:[ESP+0xC]
    77. 10005295    8BCE            MOV     ECX, ESI
    78. 10005297    50              PUSH    EAX
    79. 10005298    E8 59040000     CALL    KeyData.100056F6                     ; JMP 到 mfc42.#535
    80. 1000529D    897C24 10       MOV     DWORD PTR SS:[ESP+0x10], EDI
    81. 100052A1    8D4C24 0C       LEA     ECX, DWORD PTR SS:[ESP+0xC]
    82. 100052A5    C64424 28 00    MOV     BYTE PTR SS:[ESP+0x28], 0x0
    83. 100052AA    E8 11040000     CALL    KeyData.100056C0                     ; JMP 到 mfc42.#800
    84. 100052AF    8B4C24 20       MOV     ECX, DWORD PTR SS:[ESP+0x20]
    85. 100052B3    8BC6            MOV     EAX, ESI
    86. 100052B5    5F              POP     EDI
    87. 100052B6    5E              POP     ESI
    88. 100052B7    5D              POP     EBP
    89. 100052B8    64:890D 0000000>MOV     DWORD PTR FS:[0], ECX
    90. 100052BF    83C4 20         ADD     ESP, 0x20
    91. 100052C2    C2 0C00         RETN    0xC
    复制代码
    发现上面的第三个关键字符串是从10005227 8D7C24 20 LEA EDI, DWORD PTR SS:[ESP+0x20] ; 堆栈地址=0012CA28, (ASCII "b578f528")这里算出来的

    100051DA    8B7C24 38       MOV     EDI, DWORD PTR SS:[ESP+0x38]         ; 位数
    100051DE    8B4C24 34       MOV     ECX, DWORD PTR SS:[ESP+0x34]         ; 真码MD5取奇数位
    100051E2    83C8 FF         OR      EAX, 0xFFFFFFFF    ;初始为0xFFFFFFFF
    100051E5    85FF            TEST    EDI, EDI
    100051E7    7E 1B           JLE     SHORT KeyData.10005204
    100051E9    8BE8            MOV     EBP, EAX    ; ebp = eax
    100051EB    33D2            XOR     EDX, EDX
    100051ED    8A11            MOV     DL, BYTE PTR DS:[ECX]    ;依次循环取真码奇数位MD5的ASCII码
    100051EF    81E5 FF000000   AND     EBP, 0xFF    ; ebp 和 0xff 进行与运算
    100051F5    33EA            XOR     EBP, EDX    ; EBP 和 EDX 异或运算
    100051F7    C1E8 08         SHR     EAX, 0x8    ; EAX 右移8位
    100051FA    8B54AE 04       MOV     EDX, DWORD PTR DS:[ESI+EBP*4+0x4]    ; ESI = 0012CED8 计算 [ESI+EBP*4+0x4] 地址查取数据
    100051FE    33C2            XOR     EAX, EDX
    10005200    41              INC     ECX
    10005201    4F              DEC     EDI
    10005202  ^ 75 E5           JNZ     SHORT KeyData.100051E9
    10005204    33C9            XOR     ECX, ECX
    10005206    8D5424 14       LEA     EDX, DWORD PTR SS:[ESP+0x14]
    1000520A    894C24 15       MOV     DWORD PTR SS:[ESP+0x15], ECX
    1000520E    6A 10           PUSH    0x10
    10005210    F7D0            NOT     EAX    ; EAX 按位取反
    10005212    894C24 1D       MOV     DWORD PTR SS:[ESP+0x1D], ECX
    10005216    52              PUSH    EDX
    10005217    50              PUSH    EAX
    10005218    C64424 20 00    MOV     BYTE PTR SS:[ESP+0x20], 0x0
    1000521D    884C24 29       MOV     BYTE PTR SS:[ESP+0x29], CL
    10005221    FF15 00720010   CALL    NEAR DWORD PTR DS:[0x10007200]       ; msvcrt._itoa
    10005227    8D7C24 20       LEA     EDI, DWORD PTR SS:[ESP+0x20]         ; 堆栈地址=0012CA28, (ASCII "b578f528")


    发现ASCII "b578f528"上面也没有调用其他什么CALL了,那这上面的这些汇编就是算法部分了
    这里也不需要看懂怎么算的(因为我看着也有点复杂),只要把代码照搬到注册机中就行,还需要把 0012CED8 地址的数据(大小0x400)烤出来一份用于计算
    1. 00 00 00 00 96 30 07 77 2C 61 0E EE BA 51 09 99 19 C4 6D 07 8F F4 6A 70 35 A5 63 E9 A3 95 64 9E
    2. 32 88 DB 0E A4 B8 DC 79 1E E9 D5 E0 88 D9 D2 97 2B 4C B6 09 BD 7C B1 7E 07 2D B8 E7 91 1D BF 90
    3. 64 10 B7 1D F2 20 B0 6A 48 71 B9 F3 DE 41 BE 84 7D D4 DA 1A EB E4 DD 6D 51 B5 D4 F4 C7 85 D3 83
    4. 56 98 6C 13 C0 A8 6B 64 7A F9 62 FD EC C9 65 8A 4F 5C 01 14 D9 6C 06 63 63 3D 0F FA F5 0D 08 8D
    5. C8 20 6E 3B 5E 10 69 4C E4 41 60 D5 72 71 67 A2 D1 E4 03 3C 47 D4 04 4B FD 85 0D D2 6B B5 0A A5
    6. FA A8 B5 35 6C 98 B2 42 D6 C9 BB DB 40 F9 BC AC E3 6C D8 32 75 5C DF 45 CF 0D D6 DC 59 3D D1 AB
    7. AC 30 D9 26 3A 00 DE 51 80 51 D7 C8 16 61 D0 BF B5 F4 B4 21 23 C4 B3 56 99 95 BA CF 0F A5 BD B8
    8. 9E B8 02 28 08 88 05 5F B2 D9 0C C6 24 E9 0B B1 87 7C 6F 2F 11 4C 68 58 AB 1D 61 C1 3D 2D 66 B6
    9. 90 41 DC 76 06 71 DB 01 BC 20 D2 98 2A 10 D5 EF 89 85 B1 71 1F B5 B6 06 A5 E4 BF 9F 33 D4 B8 E8
    10. A2 C9 07 78 34 F9 00 0F 8E A8 09 96 18 98 0E E1 BB 0D 6A 7F 2D 3D 6D 08 97 6C 64 91 01 5C 63 E6
    11. F4 51 6B 6B 62 61 6C 1C D8 30 65 85 4E 00 62 F2 ED 95 06 6C 7B A5 01 1B C1 F4 08 82 57 C4 0F F5
    12. C6 D9 B0 65 50 E9 B7 12 EA B8 BE 8B 7C 88 B9 FC DF 1D DD 62 49 2D DA 15 F3 7C D3 8C 65 4C D4 FB
    13. 58 61 B2 4D CE 51 B5 3A 74 00 BC A3 E2 30 BB D4 41 A5 DF 4A D7 95 D8 3D 6D C4 D1 A4 FB F4 D6 D3
    14. 6A E9 69 43 FC D9 6E 34 46 88 67 AD D0 B8 60 DA 73 2D 04 44 E5 1D 03 33 5F 4C 0A AA C9 7C 0D DD
    15. 3C 71 05 50 AA 41 02 27 10 10 0B BE 86 20 0C C9 25 B5 68 57 B3 85 6F 20 09 D4 66 B9 9F E4 61 CE
    16. 0E F9 DE 5E 98 C9 D9 29 22 98 D0 B0 B4 A8 D7 C7 17 3D B3 59 81 0D B4 2E 3B 5C BD B7 AD 6C BA C0
    17. 20 83 B8 ED B6 B3 BF 9A 0C E2 B6 03 9A D2 B1 74 39 47 D5 EA AF 77 D2 9D 15 26 DB 04 83 16 DC 73
    18. 12 0B 63 E3 84 3B 64 94 3E 6A 6D 0D A8 5A 6A 7A 0B CF 0E E4 9D FF 09 93 27 AE 00 0A B1 9E 07 7D
    19. 44 93 0F F0 D2 A3 08 87 68 F2 01 1E FE C2 06 69 5D 57 62 F7 CB 67 65 80 71 36 6C 19 E7 06 6B 6E
    20. 76 1B D4 FE E0 2B D3 89 5A 7A DA 10 CC 4A DD 67 6F DF B9 F9 F9 EF BE 8E 43 BE B7 17 D5 8E B0 60
    21. E8 A3 D6 D6 7E 93 D1 A1 C4 C2 D8 38 52 F2 DF 4F F1 67 BB D1 67 57 BC A6 DD 06 B5 3F 4B 36 B2 48
    22. DA 2B 0D D8 4C 1B 0A AF F6 4A 03 36 60 7A 04 41 C3 EF 60 DF 55 DF 67 A8 EF 8E 6E 31 79 BE 69 46
    23. 8C B3 61 CB 1A 83 66 BC A0 D2 6F 25 36 E2 68 52 95 77 0C CC 03 47 0B BB B9 16 02 22 2F 26 05 55
    24. BE 3B BA C5 28 0B BD B2 92 5A B4 2B 04 6A B3 5C A7 FF D7 C2 31 CF D0 B5 8B 9E D9 2C 1D AE DE 5B
    25. B0 C2 64 9B 26 F2 63 EC 9C A3 6A 75 0A 93 6D 02 A9 06 09 9C 3F 36 0E EB 85 67 07 72 13 57 00 05
    26. 82 4A BF 95 14 7A B8 E2 AE 2B B1 7B 38 1B B6 0C 9B 8E D2 92 0D BE D5 E5 B7 EF DC 7C 21 DF DB 0B
    27. D4 D2 D3 86 42 E2 D4 F1 F8 B3 DD 68 6E 83 DA 1F CD 16 BE 81 5B 26 B9 F6 E1 77 B0 6F 77 47 B7 18
    28. E6 5A 08 88 70 6A 0F FF CA 3B 06 66 5C 0B 01 11 FF 9E 65 8F 69 AE 62 F8 D3 FF 6B 61 45 CF 6C 16
    29. 78 E2 0A A0 EE D2 0D D7 54 83 04 4E C2 B3 03 39 61 26 67 A7 F7 16 60 D0 4D 47 69 49 DB 77 6E 3E
    30. 4A 6A D1 AE DC 5A D6 D9 66 0B DF 40 F0 3B D8 37 53 AE BC A9 C5 9E BB DE 7F CF B2 47 E9 FF B5 30
    31. 1C F2 BD BD 8A C2 BA CA 30 93 B3 53 A6 A3 B4 24 05 36 D0 BA 93 06 D7 CD 29 57 DE 54 BF 67 D9 23
    32. 2E 7A 66 B3 B8 4A 61 C4 02 1B 68 5D 94 2B 6F 2A 37 BE 0B B4 A1 8E 0C C3 1B DF 05 5A 8D EF 02 2D
    复制代码

    下面附上注册机
    ClipNow v4.7 Keygen.zip (14.37 KB, 下载次数: 8)

    评分

    参与人数 3威望 +8 飘云币 +44 收起 理由
    左岸麦田 + 4 + 4 感谢发布原创作品!
    MOV + 4 + 20 优秀作业,鼓励下~
    GGLHY + 20 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2015-5-10 08:12:34 | 显示全部楼层
    厉害!
    下面是码表,其实是标准的CrC32运算!

    赞一个~

    点评

    现在知道了,感谢G大指点  详情 回复 发表于 2015-5-10 19:00
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2019-3-25 06:30
  • 签到天数: 1096 天

    [LV.10]以坛为家III

    发表于 2015-5-10 13:46:38 | 显示全部楼层
    分析很精辟,赞一下。
    PYG19周年生日快乐!
  • TA的每日心情

    2022-5-20 13:32
  • 签到天数: 235 天

    [LV.7]常住居民III

     楼主| 发表于 2015-5-10 19:00:29 | 显示全部楼层
    GGLHY 发表于 2015-5-10 08:12
    厉害!
    下面是码表,其实是标准的CrC32运算!

    现在知道了,感谢G大指点
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    6 天前
  • 签到天数: 1199 天

    [LV.10]以坛为家III

    发表于 2015-5-10 22:30:01 | 显示全部楼层
    论坛高人辈出,顶一下
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-2 19:01
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2015-5-10 22:36:53 | 显示全部楼层
    学校学习了一下。 感谢楼主
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-2 19:01
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2015-5-10 22:38:50 | 显示全部楼层
    学校学习了一下。 感谢楼主
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2020-7-31 08:47
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2015-5-11 09:22:58 | 显示全部楼层
    感谢楼主破解分享,貌似有人也爆破过,非注册机算法类。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-12-31 12:17
  • 签到天数: 587 天

    [LV.9]以坛为家II

    发表于 2015-5-11 21:52:52 | 显示全部楼层
    感谢楼主的破文。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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