首页 > 技术文章 > 天狼星加密系统分析

BjblCracked 2013-11-15 16:08 原文

                            天狼星加密系统分析

 

/**************************************
/* 作者:半斤八兩
/* 博客:http://cnblogs.com/bjblcracked
/* 日期:2013-11-15  12:01
/**************************************

只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

 

 

 

 

 

0x1.  去除进程检测

 

  天狼星在运行的时候, 会对一些进程做检测.像比如 svn mstsc 之类的,他都会检测到,并提示. 想想枚举进程环3也就那几种方法.一个个测试过去,发现用快照就能河蟹了.

 

// 检测进程2

         gpa "CreateToolhelp32Snapshot", "kernel32.dll"

         mov temp, $RESULT

         cmp temp, 0

         je notfound

         asm temp, "xor eax, eax"

         asm temp+2, "retn 8"

 

// 检测进程3

         gpa "Process32Next", "kernel32.dll"

         mov temp, $RESULT

         cmp temp, 0

         je notfound

         asm temp, "xor eax, eax"

         asm temp+2, "retn 8"

 

// 检测进程4

         gpa "Process32First", "kernel32.dll"

         mov temp, $RESULT

         cmp temp, 0

         je notfound

         asm temp, "xor eax, eax"

         asm temp+2, "retn 8"

 

为了以防万一读进程内存,再加个

 

// 检测进程1

         gpa "OpenProcess", "kernelbase.dll"

         mov temp, $RESULT

         cmp temp, 0

         je next1

         asm temp, "xor eax, eax"

         asm temp+2, "retn c"

 

 

0x2.  去除窗口名检测

 

检测窗口,就用下面这个.

 

// 检测窗口

         gpa "GetWindowTextA", "user32.dll"

         mov temp, $RESULT

         cmp temp, 0

         je notfound

         asm temp, "xor eax, eax"

         asm temp+2, "retn c"

 

大家也可以试试 findwindow, 我没有试过.

 

0x3.  去除断网(支持xp)

 

这个网上早已经有公布的方法了.但是这个仅是在xp下有效果的.

 

         gpa "_PfCreateInterface@24", "iphlpapi.dll"

         mov temp, $RESULT

         cmp temp, 0

         je notfound

         asm temp, "xor eax, eax"

         asm temp+2, "retn 18"

         bp temp

//     esto

//     bc

 

 

0x4.  去除断网(支持Win7)

 

Win7的这个,我也是找了挺久的,才找到的. 也分享出来.

知道这个,也能写个win7限制网络的小程序了. J

 

// win7断网络

         gpa "FwpmEngineOpen0", "FWPUCLNT.DLL"

         mov temp, $RESULT

         cmp temp, 0

         je next2

         asm temp, "xor eax, eax"

         asm temp+2, "retn 14"

 

0x5.  去除水印(蓝水印)

 

两个都可以试一下, 两个都加上的话,播放的控制器,会不显示信息~

 

// 干掉水印1

         gpa "DrawTextA", "user32.dll"

         mov temp, $RESULT

         cmp temp, 0

         je notfound

         asm temp, "xor eax, eax"

         asm temp+2, "retn 14"

 

// 干掉水印2

         gpa "ExtTextOutA", "gdi32.dll"

         mov temp, $RESULT

         cmp temp, 0

         je notfound

         asm temp, "xor eax, eax"

         asm temp+2, "retn 20"

 

0x6.  去除水印(灰水印)

 

  这个我觉得没有必要更新了, 作者是把注册用户名 添加到每一帧的视频中去的. 想分离的话,对于一小部分人来说(特别是做翻录的),还是有挑战性的 J

 

0x7.  去除进程结束暗桩

0x8.  快速提取avi(需要KEY)

0x9.  快速提取voice(需要KEY)

0xA.  绕过内存crc检测

0xB.  河蟹内存占用过高提示(暗桩)

 

以上的也都没有必要更新了.

 

0xC.  去除黑屏

0xD.  河蟹硬件加速

0xE.  支持gdi翻录

0xF.  移除dx播放

0x10. 绕过虚拟机检测

 

最后的几个,其实最终目的就是翻录.

只要能在虚拟机里面播放, 那上面的所有问题都解决了.

这个是必须要更新的. 真的是弱爆了.

最开始运行的时候,会以一个经典的错误框来结束虚拟机播放.

 

 

 

 

 

最开始分析的时候,就从这个错误框开始分析. 可以说一路拔山涉水, 发现了好几种方法可以过虚拟机检测的. 但最终还是选择了最简单的方法. 就是在他检测到虚拟机时,做处理.

在分析天狼星的时候,发现天狼星用的wmi 的方法来检测是不是虚拟机. 这也算是学到了一个新的方法. 方法是不错, 可惜的是, 没有一点加密处理. 而且检测是在视频EXE里面, 没有在模块里面检测.

 

 1 /.  55            push ebp
 2 
 3 |.  8BEC          mov ebp,esp
 4 
 5 |.  83C4 D8       add esp,-28
 6 
 7 |.  B8 C4915600   mov eax,19_使用O.005691C4
 8 
 9 |.  E8 F8E91200   call 19_使用O.00535F7C
10 
11 |.  66:C745 E8 08>mov word ptr ss:[ebp-18],8
12 
13 |.  BA 31785600   mov edx,19_使用O.00567831
14 
15 |.  8D45 FC       lea eax,[local.1]
16 
17 |.  E8 B9D51300   call 19_使用O.00544B50
18 
19 |.  FF45 F4       inc [local.3]
20 
21 |.  8B10          mov edx,dword ptr ds:[eax]
22 
23 |.  52            push edx
24 
25 |.  E8 CAFDFFFF   call 19_使用O.0040736C
26 
27 |.  59            pop ecx
28 
29 |.  50            push eax
30 
31 |.  FF4D F4       dec [local.3]
32 
33 |.  8D45 FC       lea eax,[local.1]
34 
35 |.  BA 02000000   mov edx,2
36 
37 |.  E8 D4D51300   call 19_使用O.00544B88
38 
39 |.  58            pop eax
40 
41 |.  8B55 D8       mov edx,[local.10]
42 
43 |.  64:8915 00000>mov dword ptr fs:[0],edx
44 
45 |.  8BE5          mov esp,ebp
46 
47 |.  5D            pop ebp
48 
49 \.  C3            retn

 

 

在通过wmi 读取完后 retn 时, 把 eax 清0 就过了虚拟机检测了.

紧接着这下面一个函数也有同样的一处检测, 同样 eax 清0这样就能正常的播放了.

9代  10代 都是一样的.  没有一丁点儿的变化. L)

 

0x11. patch(需要KEY)

 

这个没啥好说的了. 谁能防的住? 

但是作者你啥处理也不弄, 你至少 cpuid 那, 得保护好吧?

 

本人最近也在尝试着写支持intel & amd多核的hev.

不知有没有有兴趣的,一起研究下?

当然了,主要目的还是 cpuid L

 

 

文章的最后再送一个好玩的小东西.~ J

 

大概播放10秒左右,你就会发现好玩的东西了 J (详见附件)

 

PDF和附件下载地址:<<<看雪学院>>>

推荐阅读