吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 22543|回复: 48
收起左侧

[分享] 天狼星加密又更新了,6月底的视频无法去除黑屏问题了

  [复制链接]
q16351334 发表于 2010-7-4 22:39
分析-去除天狼星视频加密系统的各种限制 转自天草

此帖售价 30 铜币,已有 4 人购买
大家好,最近看到去除天狼星加密系统的各种限制炒得比较火爆,那个 混蛋论坛 居然还要公开对外出售。觉得好奇,于是就拿来分析了一下,还算收获不少,把分析过程贴出来,希望高手别见笑。^言归正传,限制主要有 智能防翻录(抓屏)、防止屏幕录像软件翻录,用户名(水印)、3389检测、断网限制。那就下面就逐一来分析一下吧。

                             一、智能防翻录(抓屏)
这个就是用一些冷门的翻录软件、或者截屏时,虽然不被发现,但是录出来却是黑屏的。原理是:软件调用了Direct3D加速,普通的录像软件自然黑屏了。解决方法:自然是不让他启用Direct3D加速了。用OD载入我们的录像文件,在字符串里找到DirectDrawCreate,然后双击,跳转到相应的汇编代码处。如下:

复制代码
  • 00413B35    8B85 FCFEFFFF      mov     eax, dword ptr [ebp-0x104]
  • 00413B3B    F680 27060000 02   test    byte ptr [eax+0x627], 0x2
  • 00413B42    74 10              je      short 00413B54
  • 00413B44    8B15 E8844B00      mov     edx, dword ptr [0x4B84E8]
  • 00413B4A    C782 6C020000 0200>mov     dword ptr [edx+0x26C], 0x2
  • 00413B54    8B0D E8844B00      mov     ecx, dword ptr [0x4B84E8]
  • 00413B5A    83B9 6C020000 00   cmp     dword ptr [ecx+0x26C], 0x0
  • 00413B61    0F8E CC040000      jle     00414033
  • 00413B67    68 43964B00        push    004B9643                         ; ddraw.dll
  • 00413B6C    E8 9D2E0A00        call    <jmp.&KERNEL32.LoadLibraryA> //加载ddraw.dll
  • 00413B71    8B15 E8844B00      mov     edx, dword ptr [0x4B84E8]
  • 00413B77    8982 EC010000      mov     dword ptr [edx+0x1EC], eax
  • 00413B7D    A1 E8844B00        mov     eax, dword ptr [0x4B84E8]
  • 00413B82    83B8 EC010000 00   cmp     dword ptr [eax+0x1EC], 0x0
  • 00413B89    75 05              jnz     short 00413B90
  • 00413B8B    83C9 FF            or      ecx, -0x1
  • 00413B8E    EB 78              jmp     short 00413C08
  • 00413B90    68 4D964B00        push    004B964D                         ; directdrawcreate
  • 00413B95    A1 E8844B00        mov     eax, dword ptr [0x4B84E8]
  • 00413B9A    8B90 EC010000      mov     edx, dword ptr [eax+0x1EC]
  • 00413BA0    52                 push    edx
  • 00413BA1    E8 A22D0A00        call    <jmp.&KERNEL32.GetProcAddress> // 初始化directdraw
  • 00413BA6    8985 B4FEFFFF      mov     dword ptr [ebp-0x14C], eax
  • 00413BAC    83BD B4FEFFFF 00   cmp     dword ptr [ebp-0x14C], 0x0
  • 00413BB3    75 07              jnz     short 00413BBC
  • 00413BB5    B9 FEFFFFFF        mov     ecx, -0x2



我们的目的是直接不让程序加载Direct,那么可以看出

复制代码
  • 00413B61    0F8E CC040000      jle     00414033

可以完全跳过direct加载,那就改成jmp了。 这样改了之后,就不黑屏了。但是会弹出一个错误框,提示)  directx错误2,请关闭后重新运行试试。错误代码找到相应的代码:

复制代码
  • 0041C490   /75 67              jnz     short 0041C4F9
  • 0041C492   |66:C785 58FFFFFF E>mov     word ptr [ebp-0xA8], 0xE0
  • 0041C49B   |8D45 B0            lea     eax, dword ptr [ebp-0x50]
  • 0041C49E   |8B95 0CFFFFFF      mov     edx, dword ptr [ebp-0xF4]
  • 0041C4A4   |E8 DF5A0800        call    004A1F88
  • 0041C4A9   |FF85 64FFFFFF      inc     dword ptr [ebp-0x9C]
  • 0041C4AF   |8BD0               mov     edx, eax
  • 0041C4B1   |33C0               xor     eax, eax
  • 0041C4B3   |8D4D AC            lea     ecx, dword ptr [ebp-0x54]
  • 0041C4B6   |8945 AC            mov     dword ptr [ebp-0x54], eax
  • 0041C4B9   |B8 489A4B00        mov     eax, 004B9A48                    ; directx错误2,请关闭后重新运行试试。错误代码:
  • 0041C4BE   |FF85 64FFFFFF      inc     dword ptr [ebp-0x9C]
  • 0041C4C4   |E8 AB5F0800        call    004A2474


这句
0041C490   /75 67              jnz     short 0041C4F9//改为jmp就行了
复制代码
这样经过测试,就完美解决智能防翻录问题了。此时用不知名的录像软件录就不黑屏了,抓屏自然也没问题。

                                                             二、防止屏幕录像软件翻录
            防止屏幕录像软件翻录,这里主要就是指的屏幕录像专家。这里下断GetWindowTextA,载入教程,运行断下后,取消断点,alt+F9返回,

复制代码
  • 00411482  |.  68 549B4B00   push    004B9B54                         ; /pmlxzj
  • 00411487  |.  6A 00         push    0x0                              ; |Inheritable = FALSE
  • 00411489  |.  68 01001F00   push    0x1F0001                         ; |Access = 1F0001
  • 0041148E  |.  E8 B1550A00   call    <jmp.&KERNEL32.OpenMutexA>       ; \OpenMutexA
  • 00411493  |.  85C0          test    eax, eax
  • 00411495  |.  74 2C         je      short 004114C3
  • 00411497  |.  50            push    eax                              ; /hObject
  • 00411498  |.  E8 BB530A00   call    <jmp.&KERNEL32.CloseHandle>      ; \CloseHandle
  • 0041149D  |.  B8 01000000   mov     eax, 0x1
  • 004114A2  |.  BA 02000000   mov     edx, 0x2
  • 00411482  |.  68 549B4B00   push    004B9B54                         ; /pmlxzj
  • 00411487  |.  6A 00         push    0x0                              ; |Inheritable = FALSE
  • 00411489  |.  68 01001F00   push    0x1F0001                         ; |Access = 1F0001
  • 0041148E  |.  E8 B1550A00   call    <jmp.&KERNEL32.OpenMutexA>       ; \OpenMutexA
  • 00411493  |.  85C0          test    eax, eax
  • 00411495  |.  74 2C         je      short 004114C3
  • 00411497  |.  50            push    eax                              ; /hObject
  • 00411498  |.  E8 BB530A00   call    <jmp.&KERNEL32.CloseHandle>      ; \CloseHandle
  • 0041149D  |.  B8 01000000   mov     eax, 0x1
  • 004114A2  |.  BA 02000000   mov     edx, 0x2
  • 004114A7  |.  50            push    eax
  • 004114A8  |.  8D45 FC       lea     eax, dword ptr [ebp-0x4]
  • 004114AB  |.  FF4D EC       dec     dword ptr [ebp-0x14]
  • 004114AE  |.  E8 5D0B0900   call    004A2010
  • 004114B3  |.  58            pop     eax
  • 004114B4  |.  8B55 D0       mov     edx, dword ptr [ebp-0x30]
  • 004114B7  |.  64:8915 00000>mov     dword ptr fs:[0], edx
  • 004114BE  |.  E9 B1010000   jmp     00411674
  • 004114C3  |>  33F6          xor     esi, esi
  • 004114C5  |.  85DB          test    ebx, ebx
  • 004114C7  |.  0F84 4E010000 je      0041161B
  • 004114CD  |>  68 00040000   /push    0x400                           ; /Arg3 = 00000400
  • 004114D2  |.  6A 00         |push    0x0                             ; |Arg2 = 00000000
  • 004114D4  |.  8D85 C8F7FFFF |lea     eax, dword ptr [ebp-0x838]      ; |
  • 004114DA  |.  50            |push    eax                             ; |Arg1
  • 004114DB  |.  E8 A4290800   |call    00493E84                        ; \第十八讲.00493E84
  • 004114E0  |.  83C4 0C       |add     esp, 0xC
  • 004114E3  |.  8D95 C8F7FFFF |lea     edx, dword ptr [ebp-0x838]
  • 004114E9  |.  68 00040000   |push    0x400                           ; /Count = 400 (1024.)
  • 004114EE  |.  52            |push    edx                             ; |Buffer
  • 004114EF  |.  53            |push    ebx                             ; |hWnd
  • 004114F0  |.  E8 E55A0A00   |call    <jmp.&USER32.GetWindowTextA>    ; \GetWindowTextA
  • 004114F5  |.  66:C745 E0 20>|mov     word ptr [ebp-0x20], 0x20 //返回到这里
  • ; 004114FB  |.  8D95 C8F7FFFF |lea     edx, dword ptr [ebp-0x838]
  • 向上看还发现
  • 00411482  |.  68 549B4B00   push    004B9B54                         ; /pmlxzj
  • 00411487  |.  6A 00         push    0x0                              ; |Inheritable = FALSE
  • 00411489  |.  68 01001F00   push    0x1F0001                         ; |Access = 1F0001
  • 0041148E  |.  E8 B1550A00   call    <jmp.&KERNEL32.OpenMutexA>       ; \OpenMutexA
  • 这个地方OpenMutexA一般用来进程互斥,看到pmlxzj,很明显是 屏幕录像专家的缩写吧。哈哈F8F8F8">/ e6 \* a6 y+ I: w# E那就修改这里,
  • 00411493  |.  85C0          test    eax, eax
  • 00411495  |.  74 2C         je      short 004114C3
  • 改为
  • 00411493      33C0          xor     eax, eax
  • 00411495      EB 2C         jmp     short 004114C3
  • 还有这里
  • 004114C3  |> \33F6          xor     esi, esi
  • 004114C5  |.  85DB          test    ebx, ebx
  • 004114C7  |.  0F84 4E010000 je      0041161B
  • 改为
  • 004114C3  |> \33F6          xor     esi, esi
  • 004114C5  |.  85DB          test    ebx, ebx
  • 004114C7      90            nop
  • 004114C8      E9 4E010000   jmp     0041161B
  • 这样就修改好了。顺便在这个程序的断尾下段,看看这个call的上一层是什么。
  • 00411677  |.  8BE5          mov     esp, ebp
  • 00411679  |.  5D            pop     ebp
  • 0041167A  \.  C3            retn  //在这里F2,断下后F8来到下面
  • 复制代码
  • 00414A3F   .  50            push    eax                              ; /Arg1
  • 00414A40   .  E8 DBC9FFFF   call    00411420                         ; \第十八讲.00411420  //刚才的那个call
  • 00414A45   .  59            pop     ecx     //来到这里。                         ;  00B12724
  • 00414A46   .  48            dec     eax
  • 00414A47   .  0F85 98000000 jnz     00414AE5  //有个跳转,不跳就检测到非法软件
  • 00414A4D   .  66:C785 10FFF>mov     word ptr [ebp-0xF0], 0x1DC
  • 00414A56   .  8B95 FCFEFFFF mov     edx, dword ptr [ebp-0x104]
  • 00414A5C   .  33C0          xor     eax, eax
  • 00414A5E   .  8B8A 401B0000 mov     ecx, dword ptr [edx+0x1B40]
  • 00414A64   .  8D95 40FFFFFF lea     edx, dword ptr [ebp-0xC0]
  • 00414A6A   .  51            push    ecx
  • 00414A6B   .  8985 40FFFFFF mov     dword ptr [ebp-0xC0], eax
  • 00414A71   .  52            push    edx
  • 00414A72   .  FF85 1CFFFFFF inc     dword ptr [ebp-0xE4]
  • 00414A78   .  E8 E34D0200   call    00439860
  • 00414A7D   .  33C0          xor     eax, eax
  • 00414A7F   .  83C4 08       add     esp, 0x8
  • 00414A82   .  8985 3CFFFFFF mov     dword ptr [ebp-0xC4], eax
  • 00414A88   .  B8 45994B00   mov     eax, 004B9945                    ;  播放时请关闭其它不相关软件:
  • 00414A8D   .  FF85 1CFFFFFF inc     dword ptr [ebp-0xE4]

从上面的代码,可以看出下GetWindowTextA 还是比较准确的。至于
00414A47   .  0F85 98000000 jnz     00414AE5  

这里就没有必要修改了,因为我们已经在关键call里面改动了相关的代码了,这样 防止屏幕录像软件翻录的限制 就去除了,现在可以使用屏幕录像专家或者其他知名录像软件来翻录了。
                                       


                                                       用户名(水印)

这个所谓的水印就是指跳动的用户名、屏幕上固定不动的字符`原理应该是:视频解码之后,然后在临时电脑屏幕上绘上去的吧。, i那就下bp GDI32.ExtTextOutA 这个断点既然是视频解码之后,然后在临时电脑屏幕上绘上去的,那我们就等录像显示正在打开那个进度条时,再下段吧。一开始就下断点,可能断的次数太多。重新载入教程,bp GDI32.ExtTextOutA,断下之后,看堆栈:

复制代码
  • 0012F2DC   0044D30E  /CALL to ExtTextOutA from 第十八讲.0044D309
  • 0012F2E0   E6011DDD  |hDC = E6011DDD
  • 0012F2E4   00000000  |X = 0
  • 0012F2E8   00000000  |Y = 0
  • 0012F2EC   00000000  |Options = 0
  • 0012F2F0   00000000  |pRect = NULL
  • 0012F2F4   00B4F3BC  |String = "用",BB,"?wWw.Begin09.COM"
  • 0012F2F8   00000016  |StringSize = 16 (22.)
  • 0012F2FC   00000000  \pSpacing = NULL



很明显,"用",BB,"?http://www.begin09.com/" ,这个就是漂浮着的那个水印。那我们可以修改成任意的名字,这也就是传说中的替换水印。注意:(不能把这个内容清空,因为程序会校验,清空了,播放一段时间,就出错)。
0012F2F8   00000016  |StringSize = 16 (22.)指的就是水印的大小,我们改为1(注意不能改为0,因为程序会校验,改为0,播放一段时间,就出错b  |! D) w. w- N2 B# t0 J- L结合上面的分析,我们这样修改:修改水印大小为1,把用户名变为“-”,很小的字符,占两个像素,几乎看不出来了。




                                             四、3389检测
这个的话,也非常容易。查找字符串“请断开远程终端后再播放”

复制代码
  • 00412F5D   . /74 21         je      short 00412F80
  • 00412F5F   . |66:C785 10FFF>mov     word ptr [ebp-0xF0], 0x50
  • 00412F68   . |8B55 E0       mov     edx, dword ptr [ebp-0x20]
  • 00412F6B   . |52            push    edx                              ; /Arg1
  • 00412F6C   . |E8 677F0200   call    0043AED8                         ; \第十八讲.0043AED8
  • 00412F71   . |59            pop     ecx
  • 00412F72   . |66:C785 10FFF>mov     word ptr [ebp-0xF0], 0x44
  • 00412F7B   . |8B5D E0       mov     ebx, dword ptr [ebp-0x20]
  • 00412F7E   . |EB 03         jmp     short 00412F83
  • 00412F80   > \8B5D E0       mov     ebx, dword ptr [ebp-0x20]
  • 00412F83   >  53            push    ebx                              ; /Arg1
  • 00412F84   .  E8 EF800200   call    0043B078                         ; \第十八讲.0043B078
  • 00412F89   .  59            pop     ecx
  • 00412F8A   .  48            dec     eax
  • 00412F8B   .  75 3E         jnz     short 00412FCB
  • 00412F8D   .  66:C785 10FFF>mov     word ptr [ebp-0xF0], 0x5C
  • 00412F96   .  BA C3954B00   mov     edx, 004B95C3                    ;  请断开远程终端后再播放
  • 00412F9B   .  8D45 DC       lea     eax, dword ptr [ebp-0x24]
  • 00412F9E   .  E8 71EF0800   call    004A1F14
  • 00412FA3   .  FF85 1CFFFFFF inc     dword ptr [ebp-0xE4]
  • 00412FA9   .  8B00          mov     eax, dword ptr [eax]
  • 00412FAB   .  E8 7C120500   call    0046422C
  • 00412FB0   .  FF8D 1CFFFFFF dec     dword ptr [ebp-0xE4]
  • 00412FB6   .  8D45 DC       lea     eax, dword ptr [ebp-0x24]
  • 00412FB9   .  BA 02000000   mov     edx, 0x2
  • 00412FBE   .  E8 4DF00800   call    004A2010
  • 00412FC3   .  6A 00         push    0x0
  • 00412FC5   .  E8 C69F0800   call    0049CF90
  • 00412FCA   .  59            pop     ecx
  • 00412FCB   >  6A 03         push    0x3                              ; /Arg2 = 00000003
  • 00412FCD   .  53            push    ebx                              ; |Arg1

复制代码
直接修改这个就行吧
00412F8B   .  75 3E         jnz     short 00412FCB// jnz改jmp即可

不过,我更喜欢进上面的关键call里改。
00412F84   .  E8 EF800200   call    0043B078
F7进到这里面,现在本机没有开3389,那就在OD里走一遍,把发生跳转的都改jmp,没跳的都nop,就行了。这里就不演示了。这样,就去除了3389检测 的限制。

                                         
                                               五、断网限制
断网限制,下断IPHLPAPI.PfCreateInterface,断下之后alt+F9返回

复制代码
  • 00401854  /$  55            push    ebp
  • 00401855  |.  8BEC          mov     ebp, esp
  • 00401857  |.  83C4 D0       add     esp, -0x30
  • 0040185A  |.  53            push    ebx
  • 0040185B  |.  56            push    esi
  • 0040185C  |.  8B75 10       mov     esi, dword ptr [ebp+0x10]
  • 0040185F  |.  8B5D 08       mov     ebx, dword ptr [ebp+0x8]
  • 00401862  |.  8D04B3        lea     eax, dword ptr [ebx+esi*4]
  • 00401865  |.  83C0 50       add     eax, 0x50
  • 00401868  |.  50            push    eax
  • 00401869  |.  6A 01         push    0x1
  • 0040186B  |.  6A 00         push    0x0
  • 0040186D  |.  6A 01         push    0x1
  • 0040186F  |.  6A 01         push    0x1
  • 00401871  |.  6A 00         push    0x0
  • 00401873  |.  E8 804F0B00   call    <jmp.&IPHLPAPI.PHLPAPI._PfCreate>
  • 00401878  |.  85C0          test    eax, eax
  • 0040187A  |.  74 07         je      short 00401883
  • 0040187C  |.  33C0          xor     eax, eax
  • 0040187E  |.  E9 8C000000   jmp     0040190F
  • 00401883  |>  8B15 EC844B00 mov     edx, dword ptr [0x4B84EC]
  • 00401889  |.  8955 FC       mov     dword ptr [ebp-0x4], edx


很明显把
0040187A  |.  74 07         je      short 00401883

改为
0040187A      90            nop
0040187B      90            nop

即可这样,就去掉了断网限制。; 总结一下,以上分析,就完美去掉了 天狼系加密系统的所有限制,经测试,对于不同的录像文件,这个限制部分的程序的代码结构是一模一样的。感兴趣的朋友可以做一个 通用的去限制补丁。附上我刚才分析的那个录像文件,供大家分析。

[PS:衷心祝愿混蛋的那个去限制工具一件也卖不出去。哈哈。
  

                                                                                                         转载请注明出处,谢谢
                                                                                                                              by zbzb97  .

免费评分

参与人数 1威望 +1 收起 理由
CHHSun + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

mantoou 发表于 2010-7-4 22:49
的确不错,很多断点第一次见
不舍远走 发表于 2010-7-4 23:00
ms2008 发表于 2010-7-4 23:21
头像被屏蔽
2750156 发表于 2010-7-5 00:39
提示: 作者被禁止或删除 内容自动屏蔽
q493632284 发表于 2010-7-5 18:25
学习中
头像被屏蔽
小寳 发表于 2010-7-5 20:26
提示: 作者被禁止或删除 内容自动屏蔽
老万 发表于 2010-7-5 22:21
这个得好好学习,谢谢楼主分享
神龙书生 发表于 2010-7-6 00:25
貌似很强大。补丁怎么写
clide2000 发表于 2010-7-6 07:39
怎么没有看到文中提到的练习文件?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-11 20:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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