好友
阅读权限255
听众
最后登录1970-1-1
|
现在听说一些易语言写的程序动不动就蓝屏,外挂木马检测到调试器或者虚拟机就蓝屏,一直没有机会遇到没能尝试,恰巧今天有幸遇到一个病毒使用了这个方式,和大家分享一下分析方法,帖子:
恶意木马加密文件又来了,希望管理员密切关注!
http://www.52pojie.cn/thread-511674-1-1.html
(出处: 吾爱破解论坛)
楼下有位同学找到木马的出处,给出了木马解密工具地址:http://disk.680.com/3uUnaa (会检测虚拟机、调试器等,发现就蓝屏)
开始我在虚拟机里打开样本,发现蓝屏了,Godfather.Cr说有检测虚拟机,我就把虚拟机的特征去掉了,继续打开后点击还被蓝屏了,看来还是先去掉蓝屏代码吧,没研究过,怎么找了?
我的思路先去找找蓝屏实现的易语言代码,就搜索到这个:
原来蓝屏实现原理就是先调用CreateWindowStation,然后SetHandleInformation,最后通过CloseWindowStation引发蓝屏。
知道原理后简单多了,直接对CreateWindowStationA下断点,中断后
来自程序的调用,我们回朔到代码段看看(程序加了压缩壳并使用了易语言花指令,自行脱壳去花指令):
[Asm] 纯文本查看 复制代码 00402130 55 push ebp
00402131 8BEC mov ebp,esp
00402133 81EC 28000000 sub esp,0x28
00402139 C745 FC 00000000 mov dword ptr ss:[ebp-0x4],0x0
00402140 68 0C000000 push 0xC
00402145 E8 20020100 call dumped_.0041236A
0040214A 83C4 04 add esp,0x4
0040214D 8945 F8 mov dword ptr ss:[ebp-0x8],eax
00402150 8BD8 mov ebx,eax
00402152 C703 00000000 mov dword ptr ds:[ebx],0x0
00402158 C743 04 00000000 mov dword ptr ds:[ebx+0x4],0x0
0040215F C743 08 00000000 mov dword ptr ds:[ebx+0x8],0x0
00402166 68 18000000 push 0x18
0040216B E8 FA010100 call dumped_.0041236A
00402170 83C4 04 add esp,0x4
00402173 8945 F4 mov dword ptr ss:[ebp-0xC],eax
00402176 8BF8 mov edi,eax
00402178 BE 161C4A00 mov esi,dumped_.004A1C16
0040217D AD lods dword ptr ds:[esi]
0040217E AB stos dword ptr es:[edi]
0040217F AD lods dword ptr ds:[esi]
00402180 AB stos dword ptr es:[edi]
00402181 33C0 xor eax,eax
00402183 B9 04000000 mov ecx,0x4
00402188 F3:AB rep stos dword ptr es:[edi]
0040218A 8965 F0 mov dword ptr ss:[ebp-0x10],esp
0040218D 90 nop
0040218E 90 nop
0040218F 90 nop
00402190 68 00000000 push 0x0
00402195 68 37000000 push 0x37
0040219A 68 00000000 push 0x0
0040219F 68 A81B4A00 push dumped_.004A1BA8
004021A4 B8 05000000 mov eax,0x5
004021A9 E8 D4010100 call dumped_.00412382 ; CreateWindowStationA
004021AE 3965 F0 cmp dword ptr ss:[ebp-0x10],esp
004021B1 74 0D je short dumped_.004021C0
004021B3 68 06000000 push 0x6
004021B8 E8 BF010100 call dumped_.0041237C
004021BD 83C4 04 add esp,0x4
004021C0 8945 EC mov dword ptr ss:[ebp-0x14],eax
004021C3 90 nop
004021C4 90 nop
004021C5 90 nop
004021C6 8B45 EC mov eax,dword ptr ss:[ebp-0x14]
004021C9 8945 FC mov dword ptr ss:[ebp-0x4],eax
004021CC 8965 F0 mov dword ptr ss:[ebp-0x10],esp
004021CF 90 nop
004021D0 90 nop
004021D1 90 nop
004021D2 68 02000000 push 0x2
004021D7 68 02000000 push 0x2
004021DC FF75 FC push dword ptr ss:[ebp-0x4]
004021DF B8 06000000 mov eax,0x6
004021E4 E8 99010100 call dumped_.00412382 ; SetHandleInformation
004021E9 3965 F0 cmp dword ptr ss:[ebp-0x10],esp
004021EC 74 0D je short dumped_.004021FB
004021EE 68 06000000 push 0x6
004021F3 E8 84010100 call dumped_.0041237C
004021F8 83C4 04 add esp,0x4
004021FB 8965 F0 mov dword ptr ss:[ebp-0x10],esp
004021FE 90 nop
004021FF 90 nop
00402200 90 nop
00402201 FF75 FC push dword ptr ss:[ebp-0x4]
00402204 B8 07000000 mov eax,0x7
00402209 E8 74010100 call dumped_.00412382 ; CloseWindowStation
0040220E 3965 F0 cmp dword ptr ss:[ebp-0x10],esp
00402211 74 0D je short dumped_.00402220
00402213 68 06000000 push 0x6
00402218 E8 5F010100 call dumped_.0041237C
看到了吧,代码实现流程和上面源码提供的原理相同,那知道代码如果弄了处理方式也简单,提供一些解决蓝屏的方法:
1、我一般喜欢在蓝屏代码的开始直接retn,这里就是00402130 这里retn就好了。
2、3个API随便哪个失败,应该都不会蓝屏,所以下3个断点,中断下来直接到断尾新建EIP返回即可,这个我没验证,你们验证下吧。
3、知道会蓝屏,最好还要把为啥会蓝屏的原因处理下,比如这里有检测虚拟机还有检测调试器等,一并处理掉,这样也不会触发到蓝屏的代码。
最后过了蓝屏后他还会关机,这个比较简单,直接下关机ExitWindowsEx断点就好了。
好了,分享到这里结束,大家也可以探讨一下自己的经验。
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|