飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7540|回复: 13

[原创] SPXStudio v2.1 爆破+DLL劫持补丁+通杀patch

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

    [LV.10]以坛为家III

    发表于 2014-6-29 13:21:44 | 显示全部楼层 |阅读模式
    本帖最后由 geekcat 于 2014-6-29 13:22 编辑

    【文章标题】: SPXStudio v2.1  爆破+DLL劫持补丁+通杀patch
    【文章作者】: geekcat
    【作者邮箱】: geek_huang@163.com
    【作者主页】:
    【软件名称】: SPXStudio v2.1   
    【软件大小】: 1.80 MB (1,893,420 字节)
    【加壳方式】: 无
    【保护方式】: 注册码
    【编写语言】: Borland Delphi 6.0 - 7.0
    【使用工具】: OD、PEID
    【操作平台】: XP SP3
    【下载地址】:http://www.moodysoft.com/
    破解声明】:破解在于交流思路和过程,结果并不重要,请不要用于非法用途;
    【软件介绍】:SPX Studio 是 SPX Instant Screen Capture 的配套工具,主要用来编辑 SPX Instant Screen Capture 抓取的屏幕抓图,其功能包括:添加图象,文字说明、注释、气泡提示等……与 SPX Instant Screen Capture 搭配使用,能让你的抓图更加完美地表达出你的意图!
    【破解声明】:PYG第九轮作业五
    --------------------------------------------------------------------------------------------------------------------------------
    【破解过程】

    1、OD加载程序F9运行输入注册信息,有错误提示“Invalid User Name or Product ID. Please try again.”;
    2、重载程序,搜索字符串找到错误提示,双击到来程序出错处,向上看到注册成功,找到关键CALL和关键跳;
    代码:

    004B2D64  |.  59              pop ecx
    004B2D65  |.  8B83 3C030000   mov eax,dword ptr ds:[ebx+0x33C]
    004B2D6B  |.  FF93 38030000   call dword ptr ds:[ebx+0x338]            ;  关键CALL 注册时验证
    004B2D71  |.  84C0            test al,al
    004B2D73      74 65           je short Studio.004B2DDA                 ;  关键跳
    004B2D75  |.  6A 30           push 0x30
    004B2D77  |.  8D55 E8         lea edx,dword ptr ss:[ebp-0x18]
    004B2D7A  |.  A1 30414C00     mov eax,dword ptr ds:[0x4C4130]
    004B2D7F  |.  8B00            mov eax,dword ptr ds:[eax]
    004B2D81  |.  E8 72C9FAFF     call Studio.0045F6F8
    004B2D86  |.  8B45 E8         mov eax,dword ptr ss:[ebp-0x18]
    004B2D89  |.  E8 B61CF5FF     call Studio.00404A44
    004B2D8E  |.  50              push eax
    004B2D8F  |.  68 9C2E4B00     push Studio.004B2E9C                     ;  Thank you for registering
    004B2D94  |.  8D55 E0         lea edx,dword ptr ss:[ebp-0x20]
    004B2D97  |.  A1 30414C00     mov eax,dword ptr ds:[0x4C4130]
    ………………………………………………………………………………………………………省略去中间N多代码
    004B2DEB  |.  8B45 DC         mov eax,dword ptr ss:[ebp-0x24]
    004B2DEE  |.  E8 511CF5FF     call Studio.00404A44
    004B2DF3  |.  50              push eax                                 ; |Title
    004B2DF4  |.  68 C42E4B00     push Studio.004B2EC4                     ; |Invalid User Name or Product ID. Please try again.

    3、在关键CALL和关键跳下断,重载程序F9运行输入注册信息断在关键CALL处F7进行:可以看到这个CALL有两处调用;一处为重启验证调用,一处为关于功能调用;
    代码:

    004B3494  /$  55              push ebp                                 ;  算法CALL
    004B3495  |.  8BEC            mov ebp,esp
    ………………………………………………………………………………………………………省略去中间N多代码
    004B34F1  |.  E8 CE53F5FF     call Studio.004088C4
    004B34F6  |.  837D E8 00      cmp dword ptr ss:[ebp-0x18],0x0          ;  判断注册名是否为空
    004B34FA  |.  0F84 E5000000   je Studio.004B35E5
    004B3500  |.  837D F8 00      cmp dword ptr ss:[ebp-0x8],0x0           ;  判断输入的假是否为空
    004B3504  |.  0F84 DB000000   je Studio.004B35E5
    004B350A  |.  8D45 F0         lea eax,dword ptr ss:[ebp-0x10]
    004B350D  |.  BA 38364B00     mov edx,Studio.004B3638                  ;  life
    004B3512  |.  E8 1511F5FF     call Studio.0040462C
    004B3517  |.  8D45 EC         lea eax,dword ptr ss:[ebp-0x14]          ;  (ASCII "86K")
    004B351A  |.  BA 48364B00     mov edx,Studio.004B3648                  ;  is soft and moody
    004B351F  |.  E8 0811F5FF     call Studio.0040462C
    004B3524  |.  33C9            xor ecx,ecx
    004B3526  |.  B2 01           mov dl,0x1
    004B3528  |.  A1 88E74A00     mov eax,dword ptr ds:[0x4AE788]          ;  (ASCII "H6K")
    004B352D  |.  E8 42C7FFFF     call Studio.004AFC74
    004B3532  |.  8BF0            mov esi,eax
    004B3534  |.  8B0D 04FD4A00   mov ecx,dword ptr ds:[0x4AFD04]          ;  Studio.004AFD50
    004B353A  |.  8B53 38         mov edx,dword ptr ds:[ebx+0x38]          ;  (ASCII "ldmaigtbsmare")
    004B353D  |.  8BC6            mov eax,esi
    004B353F  |.  E8 D8DEFEFF     call Studio.004A141C
    004B3544  |.  8D4D F0         lea ecx,dword ptr ss:[ebp-0x10]          ;  (ASCII "86K")
    004B3547  |.  8B55 E8         mov edx,dword ptr ss:[ebp-0x18]
    004B354A  |.  8BC6            mov eax,esi
    004B354C  |.  8B38            mov edi,dword ptr ds:[eax]
    004B354E  |.  FF57 54         call dword ptr ds:[edi+0x54]
    004B3551  |.  8BC6            mov eax,esi
    004B3553  |.  8B10            mov edx,dword ptr ds:[eax]               ;  (ASCII "IpWq0V/w6w==")
    004B3555  |.  FF52 44         call dword ptr ds:[edx+0x44]
    004B3558  |.  8BC6            mov eax,esi
    004B355A  |.  E8 4502F5FF     call Studio.004037A4
    004B355F  |.  33C9            xor ecx,ecx
    004B3561  |.  B2 01           mov dl,0x1
    004B3563  |.  A1 94304A00     mov eax,dword ptr ds:[0x4A3094]          ;  ムJ
    004B3568  |.  E8 FBE2FEFF     call Studio.004A1868
    004B356D  |.  8BF0            mov esi,eax
    004B356F  |.  8B0D 34414A00   mov ecx,dword ptr ds:[0x4A4134]          ;  Studio.004A4180
    004B3575  |.  8B53 3C         mov edx,dword ptr ds:[ebx+0x3C]          ;  (ASCII "bsstopudioxmil")
    004B3578  |.  8BC6            mov eax,esi
    004B357A  |.  E8 9DDEFEFF     call Studio.004A141C
    004B357F  |.  8D4D EC         lea ecx,dword ptr ss:[ebp-0x14]          ;  (ASCII "H6K")入ecx
    004B3582  |.  8B55 F8         mov edx,dword ptr ss:[ebp-0x8]           ;  假码入edx
    004B3585  |.  8BC6            mov eax,esi
    004B3587  |.  8B38            mov edi,dword ptr ds:[eax]
    004B3589  |.  FF57 58         call dword ptr ds:[edi+0x58]
    004B358C  |.  8BC6            mov eax,esi
    004B358E  |.  8B10            mov edx,dword ptr ds:[eax]
    004B3590  |.  FF52 44         call dword ptr ds:[edx+0x44]
    004B3593  |.  8BC6            mov eax,esi
    004B3595  |.  E8 0A02F5FF     call Studio.004037A4
    004B359A  |.  8B45 F0         mov eax,dword ptr ss:[ebp-0x10]
    004B359D  |.  8B55 EC         mov edx,dword ptr ss:[ebp-0x14]
    004B35A0  |.  E8 EB13F5FF     call Studio.00404990                      ;  注意al的值
    004B35A5  |.  0F94C0          sete al                                               ;爆破点:修改为setne al
    004B35A8      8843 34         mov byte ptr ds:[ebx+0x34],al        ;全局变量:ebx+0x34
    004B35AB      807B 34 00      cmp byte ptr ds:[ebx+0x34],0x0   
    004B35AF  |.  74 34           je short Studio.004B35E5
    ………………………………………………………………………………………………………省略去中间N多代码   
    004B3617   .  5F              pop edi
    004B3618   .  5E              pop esi
    004B3619   .  5B              pop ebx
    004B361A   .  8BE5            mov esp,ebp
    004B361C   .  5D              pop ebp
    004B361D   .  C2 0400         retn 0x4

    4、来到第三步中提到的两处处调用分别下断,重载程序F9运行在重启验证处断下;
    代码:

    004B37A7   .  8B55 F4         mov edx,dword ptr ss:[ebp-0xC]
    004B37AA   .  8B45 FC         mov eax,dword ptr ss:[ebp-0x4]
    004B37AD   .  59              pop ecx
    004B37AE   .  E8 E1FCFFFF     call Studio.004B3494                     ;  启动时调用
    004B37B3   .  84C0            test al,al
    004B37B5   .  75 08           jnz short Studio.004B37BF
    004B37B7   .  8B45 FC         mov eax,dword ptr ss:[ebp-0x4]


    5、第四中断下后直接F8向下走,返回到如下: 看到这里看软件还可以试用多少天,这不就是软件在之前输入注册信息处的提示吗?
    代码

    004B31F4  |.  8BC3            mov eax,ebx
    004B31F6  |.  E8 61040000     call Studio.004B365C
    004B31FB      807B 34 00      cmp byte ptr ds:[ebx+0x34],0x0           ;  返回处  全局变量:ebx+0x34再次出现
    004B31FF      0F85 9F010000   jnz Studio.004B33A4
    ………………………………………………………………………………………………………省略去中间N多代码
    004B328E  |.  FF51 08         call dword ptr ds:[ecx+0x8]
    004B3291  |.  68 04344B00     push Studio.004B3404                     ;  Thank you for using
    004B3296  |.  8D95 E4FEFFFF   lea edx,dword ptr ss:[ebp-0x11C]
    ………………………………………………………………………………………………………省略去中间N多代码
    004B32EC  |.  8D85 E0FEFFFF   lea eax,dword ptr ss:[ebp-0x120]
    004B32F2  |.  BA 30344B00     mov edx,Studio.004B3430                  ;   days remaining.
    004B32F7  |.  E8 5815F5FF     call Studio.00404854
    004B32FC  |.  8B95 E0FEFFFF   mov edx,dword ptr ss:[ebp-0x120]
    004B3302  |.  8B86 FC020000   mov eax,dword ptr ds:[esi+0x2FC]
    004B3308  |.  E8 13C3F8FF     call Studio.0043F620
    004B330D  |.  EB 25           jmp short Studio.004B3334
    004B330F  |>  4F              dec edi
    004B3310  |.  75 12           jnz short Studio.004B3324
    004B3312  |.  BA 4C344B00     mov edx,Studio.004B344C                  ;  1 day remaining.
    004B3317  |.  8B86 FC020000   mov eax,dword ptr ds:[esi+0x2FC]
    004B331D  |.  E8 FEC2F8FF     call Studio.0043F620
    004B3322  |.  EB 10           jmp short Studio.004B3334
    004B3324  |>  BA 68344B00     mov edx,Studio.004B3468                  ;  0 days remaining.
    004B3329  |.  8B86 FC020000   mov eax,dword ptr ds:[esi+0x2FC]
    004B332F  |.  E8 ECC2F8FF     call Studio.0043F620
    004B3334  |>  83BB 50020000 0>cmp dword ptr ds:[ebx+0x250],0x0

    6、在重启验证的段首下断,重载程序F9运行断下F8向下走在信息窗口可以看到“(ASCII "C:\WINDOWS\system32\winsoap.crc")”注册信息保存在这里用记事本打开可以看到;

    ----------------------------------------------------------------------------------------------------------------------------
    【破解总结】:
    1、字符串没加密,容易切入注册验证流程中;
    2、写出第五5步的目的是为了提供另一个思路,下取系统时间API断点来切入验证体系,我没试过但觉得这是可以的!
    ----------------------------------------------------------------------------------------------------------------------------
    【版权声明】:
    本文原创于geekcat,转载请注明作者并保存文章的完整!
    通杀spx.studio-patch.rar (261.37 KB, 下载次数: 15)
    lpk.rar (49.19 KB, 下载次数: 11)


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

    [LV.10]以坛为家III

    发表于 2014-7-5 18:37:51 | 显示全部楼层
    收藏一个,写的很详细。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-4-9 09:28
  • 签到天数: 603 天

    [LV.9]以坛为家II

    发表于 2014-7-6 00:01:29 | 显示全部楼层
    谢谢分享,收下了。
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2022-8-24 06:35
  • 签到天数: 190 天

    [LV.7]常住居民III

    发表于 2015-1-9 13:23:22 | 显示全部楼层
    太感谢了```手下`
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-2-4 15:46
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2015-1-14 21:09:23 | 显示全部楼层
    非常好,长知识了,那个爆破点没看明白。

    点评

    sete al 根据zf(zero flags)标志位来设置al的值。即是如果zf=1,则al等于1,否则等于0 把sete修改成setne 相当于取反 al值 其中al值赋给全局变量 当我们随便输入的注册码肯定是错误的,如果不修改al的值值赋给全  详情 回复 发表于 2015-1-14 21:59
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-25 14:18
  • 签到天数: 881 天

    [LV.10]以坛为家III

     楼主| 发表于 2015-1-14 21:59:36 | 显示全部楼层
    tt521 发表于 2015-1-14 21:09
    非常好,长知识了,那个爆破点没看明白。

    sete al 根据zf(zero flags)标志位来设置al的值。即是如果zf=1,则al等于1,否则等于0
    把sete修改成setne 相当于取反 al值
    其中al值赋给全局变量

    当我们随便输入的注册码肯定是错误的,如果不修改al的值值赋给全局变量得到的结果就是注册 失败,修改了反之就变成注册成功了。
    这些指令在Intel指令上有说明

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-12-30 03:15
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-1-15 00:57:05 | 显示全部楼层
    太感谢了```手下`
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-2-4 15:46
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2015-1-15 08:30:05 | 显示全部楼层
    geekcat 发表于 2015-1-14 21:59
    sete al 根据zf(zero flags)标志位来设置al的值。即是如果zf=1,则al等于1,否则等于0
    把sete修改成setne ...

    非常感谢,明白了。
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-6-1 20:17
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2016-7-6 20:23:38 | 显示全部楼层
    路过必顶,谢谢分享。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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