好友
阅读权限20
听众
最后登录1970-1-1
|
分析-去除天狼星视频加密系统的各种限制 转自天草
此帖售价 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 . |
免费评分
-
查看全部评分
|