飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3709|回复: 7

[原创] Cool Capture v1.25 算法分析

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

    [LV.10]以坛为家III

    发表于 2016-1-20 20:37:19 | 显示全部楼层 |阅读模式
    本帖最后由 GeekCat 于 2016-1-20 21:04 编辑

    【文章标题】: Cool Capture v1.25 算法分析
    【作者邮箱】: geek_huang@163.com
    【作者主页】:
    【软件名称】:  Cool Capture v1.25
    【软件大小】: 1.19 MB (1,252,703 字节)
    【加壳方式】: 无壳
    【保护方式】: 注册码
    【编写语言】: Microsoft Visual C++ 6.0
    【使用工具】: OD、PEID
    【操作平台】: XP SP3
    破解声明】: 破解在于交流思路和过程,结果并不重要,请不要用于非法用途;
    【软件介绍】:  Cool Capture是一款一站式的屏幕截图软件。用户可以包括全屏幕截图,区域截图,窗口截图,卷轴截图等多种方式来截取画面,该软件支持剪贴板,打印机,编辑软件等多种方式的输出。
    --------------------------------------------------------------------------------------------------------------------------------

    程序内置一张表:OMBHGX25V9EASIULR3Z41Y7JKD0C86TWPNQF

    0、OD调试程时序的注册窗口不能最小化和移动,遮挡住OD部分界面调试起来有点蛋疼;
    1、字符串、万能断点、F12、API快速切入关键点;
    2、关键点代码如下:


    1. 00415E7F   .  8D8C24 A00000>lea ecx,dword ptr ss:[esp+0xA0]
    2. 00415E86   .  E8 B5ADFFFF   call CoolCapt.00410C40                   ;  不是关键的关键点  [ecx+0xC]=0x11赋值的常量后面运算时要用到
    3. 00415E8B   .  8D77 64       lea esi,dword ptr ds:[edi+0x64]          ;  (ASCII "1234567890qwertYUIOP")
    4. 00415E8E   .  8D6F 60       lea ebp,dword ptr ds:[edi+0x60]          ;  (ASCII "GeekCat")
    5. 00415E91   .  56            push esi
    6. 00415E92   .  55            push ebp
    7. 00415E93   .  8D8C24 A80000>lea ecx,dword ptr ss:[esp+0xA8]
    8. 00415E9A   .  C78424 D40100>mov dword ptr ss:[esp+0x1D4],0x0
    9. 00415EA5   .  E8 E6B0FFFF   call CoolCapt.00410F90                   ;  算法CALL
    10. 00415EAA   .  84C0          test al,al
    11. 00415EAC   .  0F84 44020000 je CoolCapt.004160F6                     ;  关键跳转  不能跳转
    12. 00415EB2   .  8D8424 C00000>lea eax,dword ptr ss:[esp+0xC0]
    复制代码


    3、F7进算法CALL 代码如下:


    1. 00410FB8   .  8378 F8 13    cmp dword ptr ds:[eax-0x8],0x13          ;  注册码要大于等于0x13-->19位
    2. 00410FBC   .  7D 15         jge short CoolCapt.00410FD3
    3. ————————————————————————略代码N行——————————————————————————————————
    4. 00410FDD   .  8B0F          mov ecx,dword ptr ds:[edi]               ;  (ASCII "1234567890qwertYUIOP")
    5. 00410FDF   .  8A1431        mov dl,byte ptr ds:[ecx+esi]             ;  取注册码每1位,取前四位
    6. 00410FE2   .  8BCB          mov ecx,ebx
    7. 00410FE4   .  8855 EC       mov byte ptr ss:[ebp-0x14],dl
    8. 00410FE7   .  8B45 EC       mov eax,dword ptr ss:[ebp-0x14]
    9. 00410FEA   .  50            push eax
    10. 00410FEB   .  E8 B0000000   call CoolCapt.004110A0                   ;  计算CLL -1 查表找到表中的位置 14、6、11、13
    11. 00410FF0   .  8944B5 AC     mov dword ptr ss:[ebp+esi*4-0x54],eax
    12. ————————————————————————略代码N行——————————————————————————————————
    13. 00410FFC   .  8B0F          mov ecx,dword ptr ds:[edi]               ;  (ASCII "1234567890qwertYUIOP")
    14. 00410FFE   .  8A5431 01     mov dl,byte ptr ds:[ecx+esi+0x1]         ;  从第6~9位开始取每次取1位,循环4次
    15. 00411002   .  8BCB          mov ecx,ebx
    16. 00411004   .  8855 EC       mov byte ptr ss:[ebp-0x14],dl
    17. 00411007   .  8B45 EC       mov eax,dword ptr ss:[ebp-0x14]
    18. 0041100A   .  50            push eax
    19. 0041100B   .  E8 90000000   call CoolCapt.004110A0                   ;  计算CLL -2 查表找到表中的位置 1D、16、1C、9
    20. 00411010   .  8944B5 AC     mov dword ptr ss:[ebp+esi*4-0x54],eax
    21. ————————————————————————略代码N行——————————————————————————————————
    22. 00411037   .  8BCB          mov ecx,ebx
    23. 00411039   .  C745 FC 02000>mov dword ptr ss:[ebp-0x4],0x2
    24. 00411040   .  E8 0BFEFFFF   call CoolCapt.00410E50                   ;  计算CLL -3 计算注册码后两段(共8位)
    25. 00411045   .  84C0          test al,al
    26. ————————————————————————略代码N行——————————————————————————————————
    27. 00411069   > \8B4D 0C       mov ecx,dword ptr ss:[ebp+0xC]           ;  (ASCII "1234-6789-XTFU-0J7N") 真码
    28. 0041106C   .  8B3F          mov edi,dword ptr ds:[edi]               ;  (ASCII "1234567890qwertYUIOP")  假码
    29. 0041106E   .  51            push ecx                                 ; /s2
    30. 0041106F   .  57            push edi                                 ; |s1
    31. 00411070   .  FF15 A0D64100 call dword ptr ds:[<&MSVCRT._mbscmp>]    ; \对比CALL
    32. 00411076   .  83C4 08       add esp,0x8
    复制代码


    4、F7进计算CLL -3 代码如下:


    1. 00410E50  /$  55            push ebp
    2. ————————————————————————略代码N行——————————————————————————————————
    3. 00410E79  |.  8945 FC       mov dword ptr ss:[ebp-0x4],eax
    4. 00410E7C  |.  33FF          xor edi,edi                              ;  这个循环注册名AS值累加
    5. 00410E7E  |>  8B0A          /mov ecx,dword ptr ds:[edx]              ;  (ASCII "GeekCat")
    6. 00410E80  |.  3B41 F8       |cmp eax,dword ptr ds:[ecx-0x8]
    7. 00410E83  |.  7D 09         |jge short CoolCapt.00410E8E
    8. 00410E85  |.  0FBE0C01      |movsx ecx,byte ptr ds:[ecx+eax]         ;  取注册名的每1位
    9. 00410E89  |.  03F9          |add edi,ecx                             ;  注册名各字符串AS值累加和 294
    10. 00410E8B  |.  40            |inc eax
    11. 00410E8C  |.^ EB F0         \jmp short CoolCapt.00410E7E
    12. 00410E8E  |>  8B75 08       mov esi,dword ptr ss:[ebp+0x8]           ;  前面查表的第1个值 14
    13. 00410E91  |.  B9 24000000   mov ecx,0x24
    14. 00410E96  |.  8B46 1C       mov eax,dword ptr ds:[esi+0x1C]          ;  前面查表的第8个值(最生1个) 9
    15. 00410E99  |.  8B16          mov edx,dword ptr ds:[esi]               ;  14
    16. 00410E9B  |.  33C2          xor eax,edx                              ;  14 xor 9 = 1D
    17. 00410E9D  |.  03C7          add eax,edi                              ;  1D+294=2B1
    18. 00410E9F  |.  99            cdq
    19. 00410EA0  |.  F7F9          idiv ecx                                 ;  2B1 mod 24 =5
    20. 00410EA2  |.  B9 01000000   mov ecx,0x1
    21. 00410EA7  |.  8956 20       mov dword ptr ds:[esi+0x20],edx          ;  5
    22. 00410EAA  |>  83F9 08       /cmp ecx,0x8
    23. 00410EAD  |.  7D 1A         |jge short CoolCapt.00410EC9             ;  这个循环是查表的值依次xor运算
    24. 00410EAF  |.  8B448E FC     |mov eax,dword ptr ds:[esi+ecx*4-0x4]    ;  查表的值第1、2、3、4、5、6、7
    25. 00410EB3  |.  8B1C8E        |mov ebx,dword ptr ds:[esi+ecx*4]        ;  查表的值第2、3、4、5、6、7、8
    26. 00410EB6  |.  33C3          |xor eax,ebx                             ;  14 xor 6 =12
    27. 00410EB8  |.  BB 24000000   |mov ebx,0x24
    28. 00410EBD  |.  03C7          |add eax,edi                             ;  12 + 294 = 2A6
    29. 00410EBF  |.  99            |cdq
    30. 00410EC0  |.  F7FB          |idiv ebx                                ;  2A6 mod 24 =1E
    31. 00410EC2  |.  41            |inc ecx
    32. 00410EC3  |.  89548E 1C     |mov dword ptr ds:[esi+ecx*4+0x1C],edx
    33. 00410EC7  |.^ EB E1         \jmp short CoolCapt.00410EAA
    34. ——————————略代码N行(两个循环:一个无用一个反查注册名前8位)—————————
    35. 00410F10  |> /83FF 08       /cmp edi,0x8
    36. 00410F13  |. |7D 18         |jge short CoolCapt.00410F2D
    37. 00410F15  |. |8B44BE 20     |mov eax,dword ptr ds:[esi+edi*4+0x20]
    38. 00410F19  |. |8B4D EC       |mov ecx,dword ptr ss:[ebp-0x14]
    39. 00410F1C  |. |50            |push eax
    40. 00410F1D  |. |E8 CE010000   |call CoolCapt.004110F0                  ;  00410EA0(1个值)、00410EC0(7个值)两处xor计算的结果为位置来查表得到注册码9~12及14~17位
    41. 00410F22  |. |50            |push eax
    42. 00410F23  |. |8BCB          |mov ecx,ebx
    43. 00410F25  |. |E8 7C920000   |call <jmp.&MFC42.#940>
    44. 00410F2A  |. |47            |inc edi
    45. 00410F2B  |.^\EB E3         \jmp short CoolCapt.00410F10
    46. 00410F2D  |>  68 AC484200   push CoolCapt.004248AC                   ;  -
    47. 00410F32  |.  6A 04         push 0x4
    48. 00410F34  |.  8BCB          mov ecx,ebx
    49. 00410F36  |.  E8 F3940000   call <jmp.&MFC42.#6779>                  ;  第5位为‘-’
    50. 00410F3B  |.  68 AC484200   push CoolCapt.004248AC                   ;  -
    51. 00410F40  |.  6A 09         push 0x9
    52. 00410F42  |.  8BCB          mov ecx,ebx
    53. 00410F44  |.  E8 E5940000   call <jmp.&MFC42.#6779>                  ;  第10位为‘-’
    54. 00410F49  |.  68 AC484200   push CoolCapt.004248AC                   ;  -
    55. 00410F4E  |.  6A 0E         push 0xE
    56. 00410F50  |.  8BCB          mov ecx,ebx
    57. 00410F52  |.  E8 D7940000   call <jmp.&MFC42.#6779>                  ;  第15位为‘-’
    复制代码
    ---------------------------------------------------------------------------------------------------------------------------
    算法总结:
    1、注册码要大于等于0x13-->19位;
    2、注册码两段(前8位):数字和大写字母组成;
    3、注册码格式:XXXX-XXXX-XXXX-XXXX ;
    4、用注册码的前8位通过查表一得到8个数,并把查表得到的第1个和最后1个xor运算结果,设为A;
    5、A加上注册名各字符AS值累加值,最后的和跟0x24 mod运算 结果设为B;
    6、00410EA0(1个值)、00410EC0(7个值)两处xor计算的结果来查表得到注册码9~12及14~17位
    一组可用的注册信息:
    注册名:GeekCat
    注册码:PYGG-PYGC-F66S-S665必须带PYG标记
    ---------------------------------------------------------------------------------------------------------------------------
    【版权声明】:
    本文原创于GeekCat/P.Y.G,转载请注明作者及论坛并保存文章的完整!
    来自群组: 我们都爱月姐姐

    评分

    参与人数 4威望 +36 飘云币 +56 收起 理由
    0xcb + 8 + 8 PYG有你更精彩!
    [PYG]版务督察 + 20 PYG有你更精彩!
    gagmeng + 8 + 8 支持G版大牛
    pentium450 + 20 + 20 很给力!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 972 天

    [LV.10]以坛为家III

    发表于 2016-1-20 20:57:09 | 显示全部楼层

    好吧,我来支持一下~~~~
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-3-10 19:49
  • 签到天数: 473 天

    [LV.9]以坛为家II

    发表于 2016-1-21 09:38:04 | 显示全部楼层
    都是构造啊,牛逼
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-10-6 19:00
  • 签到天数: 107 天

    [LV.6]常住居民II

    发表于 2016-1-21 13:30:59 | 显示全部楼层
    6666666,表示看不懂,只会单纯的爆破
    PYG19周年生日快乐!
  • TA的每日心情

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

    [LV.7]常住居民III

    发表于 2016-1-21 15:31:25 | 显示全部楼层
    厉害啊,算法牛,要好好学习
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    17 小时前
  • 签到天数: 2525 天

    [LV.Master]伴坛终老

    发表于 2016-1-21 23:52:10 | 显示全部楼层
    汇编语言我看不懂啊,头都大了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-11-19 11:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-1-24 08:26:14 | 显示全部楼层
    为什么就移不动呢?
    cool capture.png

    点评

    难道是我的电脑或OD的问题~~~ 移开后OD时方便多了~~  详情 回复 发表于 2016-1-24 09:29
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-25 14:18
  • 签到天数: 881 天

    [LV.10]以坛为家III

     楼主| 发表于 2016-1-24 09:29:15 | 显示全部楼层
    DaShanRen 发表于 2016-1-24 08:26
    为什么就移不动呢?

    难道是我的电脑或OD的问题~~~
    移开后OD时方便多了~~
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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