GeekCat 发表于 2014-6-29 13:21:44

SPXStudio v2.1 爆破+DLL劫持补丁+通杀patch

本帖最后由 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 ecx004B2D65|.8B83 3C030000   mov eax,dword ptr ds:004B2D6B|.FF93 38030000   call dword ptr ds:            ;关键CALL 注册时验证004B2D71|.84C0            test al,al004B2D73      74 65         je short Studio.004B2DDA               ;关键跳004B2D75|.6A 30         push 0x30004B2D77|.8D55 E8         lea edx,dword ptr ss:004B2D7A|.A1 30414C00   mov eax,dword ptr ds:004B2D7F|.8B00            mov eax,dword ptr ds:004B2D81|.E8 72C9FAFF   call Studio.0045F6F8004B2D86|.8B45 E8         mov eax,dword ptr ss:004B2D89|.E8 B61CF5FF   call Studio.00404A44004B2D8E|.50            push eax004B2D8F|.68 9C2E4B00   push Studio.004B2E9C                     ;Thank you for registering004B2D94|.8D55 E0         lea edx,dword ptr ss:004B2D97|.A1 30414C00   mov eax,dword ptr ds:………………………………………………………………………………………………………省略去中间N多代码 004B2DEB|.8B45 DC         mov eax,dword ptr ss:004B2DEE|.E8 511CF5FF   call Studio.00404A44004B2DF3|.50            push eax                                 ; |Title004B2DF4|.68 C42E4B00   push Studio.004B2EC4                     ; |Invalid User Name or Product ID. Please try again.
3、在关键CALL和关键跳下断,重载程序F9运行输入注册信息断在关键CALL处F7进行:可以看到这个CALL有两处调用;一处为重启验证调用,一处为关于功能调用;代码:
004B3494/$55            push ebp                                 ;算法CALL004B3495|.8BEC            mov ebp,esp………………………………………………………………………………………………………省略去中间N多代码 004B34F1|.E8 CE53F5FF   call Studio.004088C4004B34F6|.837D E8 00      cmp dword ptr ss:,0x0          ;判断注册名是否为空004B34FA|.0F84 E5000000   je Studio.004B35E5004B3500|.837D F8 00      cmp dword ptr ss:,0x0         ;判断输入的假是否为空004B3504|.0F84 DB000000   je Studio.004B35E5004B350A|.8D45 F0         lea eax,dword ptr ss:004B350D|.BA 38364B00   mov edx,Studio.004B3638                  ;life004B3512|.E8 1511F5FF   call Studio.0040462C004B3517|.8D45 EC         lea eax,dword ptr ss:          ;(ASCII "86K")004B351A|.BA 48364B00   mov edx,Studio.004B3648                  ;is soft and moody004B351F|.E8 0811F5FF   call Studio.0040462C004B3524|.33C9            xor ecx,ecx004B3526|.B2 01         mov dl,0x1004B3528|.A1 88E74A00   mov eax,dword ptr ds:          ;(ASCII "H6K")004B352D|.E8 42C7FFFF   call Studio.004AFC74004B3532|.8BF0            mov esi,eax004B3534|.8B0D 04FD4A00   mov ecx,dword ptr ds:          ;Studio.004AFD50004B353A|.8B53 38         mov edx,dword ptr ds:          ;(ASCII "ldmaigtbsmare")004B353D|.8BC6            mov eax,esi004B353F|.E8 D8DEFEFF   call Studio.004A141C004B3544|.8D4D F0         lea ecx,dword ptr ss:          ;(ASCII "86K")004B3547|.8B55 E8         mov edx,dword ptr ss:004B354A|.8BC6            mov eax,esi004B354C|.8B38            mov edi,dword ptr ds:004B354E|.FF57 54         call dword ptr ds:004B3551|.8BC6            mov eax,esi004B3553|.8B10            mov edx,dword ptr ds:               ;(ASCII "IpWq0V/w6w==")004B3555|.FF52 44         call dword ptr ds:004B3558|.8BC6            mov eax,esi004B355A|.E8 4502F5FF   call Studio.004037A4004B355F|.33C9            xor ecx,ecx004B3561|.B2 01         mov dl,0x1004B3563|.A1 94304A00   mov eax,dword ptr ds:          ;ムJ004B3568|.E8 FBE2FEFF   call Studio.004A1868004B356D|.8BF0            mov esi,eax004B356F|.8B0D 34414A00   mov ecx,dword ptr ds:          ;Studio.004A4180004B3575|.8B53 3C         mov edx,dword ptr ds:          ;(ASCII "bsstopudioxmil")004B3578|.8BC6            mov eax,esi004B357A|.E8 9DDEFEFF   call Studio.004A141C004B357F|.8D4D EC         lea ecx,dword ptr ss:          ;(ASCII "H6K")入ecx004B3582|.8B55 F8         mov edx,dword ptr ss:         ;假码入edx004B3585|.8BC6            mov eax,esi004B3587|.8B38            mov edi,dword ptr ds:004B3589|.FF57 58         call dword ptr ds:004B358C|.8BC6            mov eax,esi004B358E|.8B10            mov edx,dword ptr ds:004B3590|.FF52 44         call dword ptr ds:004B3593|.8BC6            mov eax,esi004B3595|.E8 0A02F5FF   call Studio.004037A4004B359A|.8B45 F0         mov eax,dword ptr ss:004B359D|.8B55 EC         mov edx,dword ptr ss:004B35A0|.E8 EB13F5FF   call Studio.00404990                      ;注意al的值004B35A5|.0F94C0          sete al                                             ;爆破点:修改为setne al 004B35A8      8843 34         mov byte ptr ds:,al      ;全局变量:ebx+0x34004B35AB      807B 34 00      cmp byte ptr ds:,0x0   004B35AF|.74 34         je short Studio.004B35E5………………………………………………………………………………………………………省略去中间N多代码   004B3617   .5F            pop edi004B3618   .5E            pop esi004B3619   .5B            pop ebx004B361A   .8BE5            mov esp,ebp004B361C   .5D            pop ebp004B361D   .C2 0400         retn 0x4
4、来到第三步中提到的两处处调用分别下断,重载程序F9运行在重启验证处断下;代码:
004B37A7   .8B55 F4         mov edx,dword ptr ss:004B37AA   .8B45 FC         mov eax,dword ptr ss:004B37AD   .59            pop ecx004B37AE   .E8 E1FCFFFF   call Studio.004B3494                     ;启动时调用004B37B3   .84C0            test al,al004B37B5   .75 08         jnz short Studio.004B37BF004B37B7   .8B45 FC         mov eax,dword ptr ss:

5、第四中断下后直接F8向下走,返回到如下: 看到这里看软件还可以试用多少天,这不就是软件在之前输入注册信息处的提示吗?代码
004B31F4|.8BC3            mov eax,ebx004B31F6|.E8 61040000   call Studio.004B365C004B31FB      807B 34 00      cmp byte ptr ds:,0x0         ;返回处全局变量:ebx+0x34再次出现004B31FF      0F85 9F010000   jnz Studio.004B33A4………………………………………………………………………………………………………省略去中间N多代码 004B328E|.FF51 08         call dword ptr ds:004B3291|.68 04344B00   push Studio.004B3404                     ;Thank you for using004B3296|.8D95 E4FEFFFF   lea edx,dword ptr ss:………………………………………………………………………………………………………省略去中间N多代码 004B32EC|.8D85 E0FEFFFF   lea eax,dword ptr ss:004B32F2|.BA 30344B00   mov edx,Studio.004B3430                  ;   days remaining.004B32F7|.E8 5815F5FF   call Studio.00404854004B32FC|.8B95 E0FEFFFF   mov edx,dword ptr ss:004B3302|.8B86 FC020000   mov eax,dword ptr ds:004B3308|.E8 13C3F8FF   call Studio.0043F620004B330D|.EB 25         jmp short Studio.004B3334004B330F|>4F            dec edi004B3310|.75 12         jnz short Studio.004B3324004B3312|.BA 4C344B00   mov edx,Studio.004B344C                  ;1 day remaining.004B3317|.8B86 FC020000   mov eax,dword ptr ds:004B331D|.E8 FEC2F8FF   call Studio.0043F620004B3322|.EB 10         jmp short Studio.004B3334004B3324|>BA 68344B00   mov edx,Studio.004B3468                  ;0 days remaining.004B3329|.8B86 FC020000   mov eax,dword ptr ds:004B332F|.E8 ECC2F8FF   call Studio.0043F620004B3334|>83BB 50020000 0>cmp dword ptr ds:,0x0
6、在重启验证的段首下断,重载程序F9运行断下F8向下走在信息窗口可以看到“(ASCII "C:\WINDOWS\system32\winsoap.crc")”注册信息保存在这里用记事本打开可以看到;
----------------------------------------------------------------------------------------------------------------------------【破解总结】:1、字符串没加密,容易切入注册验证流程中;2、写出第五5步的目的是为了提供另一个思路,下取系统时间API断点来切入验证体系,我没试过但觉得这是可以的!----------------------------------------------------------------------------------------------------------------------------【版权声明】:本文原创于geekcat,转载请注明作者并保存文章的完整!



xingbing 发表于 2014-7-5 18:37:51

收藏一个,写的很详细。

tsycjl 发表于 2014-7-6 00:01:29

谢谢分享,收下了。{:victory:}

qweokup 发表于 2014-12-24 09:12:39

谢谢分享

14614286 发表于 2015-1-9 13:23:22

太感谢了```手下`

tt521 发表于 2015-1-14 21:09:23

非常好,长知识了,那个爆破点没看明白。

GeekCat 发表于 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指令上有说明

l4730325 发表于 2015-1-15 00:57:05

太感谢了```手下`

tt521 发表于 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 ...

非常感谢,明白了。

xinbinchi 发表于 2016-7-6 20:23:38

路过必顶,谢谢分享。
页: [1] 2
查看完整版本: SPXStudio v2.1 爆破+DLL劫持补丁+通杀patch