天狼星加密系统分析
/**************************************
/* 作者:半斤八兩
/* 博客: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和附件下载地址:<<<看雪学院>>>