标题:
[sbasm] 打电玩之前,简单说下微点杀毒~~
[打印本页]
作者:
点饭的百度空间
时间:
2010-5-6 20:50
标题:
[sbasm] 打电玩之前,简单说下微点杀毒~~
微点杀毒的6大核心反病毒技术 个人感觉好像是在欺骗用户~~
这个是在保护方面,在扫描方面,简单的ring3蹲坑它就哑了。微点杀毒还有很长的路要走。
2010-05-06
微点出杀毒了,网上down了一份下来看了下,才发现在保护方面只挂了KeInitializeApc一个函数,貌似几个月前就有人分析了:
http://www.debugman.com/read.php?tid=4669
。微点杀毒也没有用多少WS的法子,恢复inline hook之后,任务管理器直接就可以结束进程,不知道微点的开发人员处于什么样的理由不多做点保护,如果处于稳定性的原因,那也太囧~~~
另外,微点杀毒不做驱动加载拦截的原因,估计是想以主动为主,杀毒为辅的配套组合,拦截驱动加载已经在微点主动防御软件里完成,所以没有必须在杀毒里多此一举了~~
lkd> u KeInitializeApc l 13
nt!KeInitializeApc:
804fba46 8bff mov edi,edi
804fba48 55 push ebp
804fba49 8bec mov ebp,esp
804fba4b 8b4508 mov eax,dword ptr [ebp+8]
804fba4e 8b5510 mov edx,dword ptr [ebp+10h]
804fba51 83fa02 cmp edx,2
804fba54 8b4d0c mov ecx,dword ptr [ebp+0Ch]
804fba57 66c7001200 mov word ptr [eax],12h
804fba5c 66c740023000 mov word ptr [eax+2],30h
804fba62 7506 jne nt!KeInitializeApc+0x24 (804fba6a)
804fba64 8a9165010000 mov dl,byte ptr [ecx+165h]
804fba6a 90 nop
804fba6b e800492d77 call f77d0370
挂钩之后:
lkd> u KeInitializeApc l 13
nt!KeInitializeApc:
804fba46 8bff mov edi,edi
804fba48 55 push ebp
804fba49 8bec mov ebp,esp
804fba4b 8b4508 mov eax,dword ptr [ebp+8]
804fba4e 8b5510 mov edx,dword ptr [ebp+10h]
804fba51 83fa02 cmp edx,2
804fba54 8b4d0c mov ecx,dword ptr [ebp+0Ch]
804fba57 66c7001200 mov word ptr [eax],12h
804fba5c 66c740023000 mov word ptr [eax+2],30h
804fba62 7506 jne nt!KeInitializeApc+0x24 (804fba6a)
804fba64 8a9165010000 mov dl,byte ptr [ecx+165h]
804fba6a 894808 mov dword ptr [eax+8],ecx
804fba6d 8b4d14 mov ecx,dword ptr [ebp+14h]
恢复hook也挺简单:
#include <ntddk.h>
typedef BOOLEAN BOOL;
typedef unsigned long DWORD;
typedef unsigned char BYTE;
VOID FFCON()
{
_asm
{
CLI ;
MOV EAX, CR0 ;
AND EAX, NOT 10000H ;
MOV CR0, EAX;
}
}
VOID FFCoff()
{
_asm
{
MOV EAX, CR0;
OR EAX, 10000H;
MOV CR0, EAX ;
STI;
}
}
BOOL RemoveMAPInlineHook()
{
UNICODE_STRING functionName;
DWORD ApcFunctionAddress;
BYTE lpHook[1] = {0x90}; //特征码
BYTE lpHookCheck[1] = {0};
BYTE lpHookCode[6] = {0x89,0x48,0x08,0x8b,0x4d,0x14}; //被微点pass了的代码
DWORD i;
RtlInitUnicodeString(&functionName,L"KeInitializeApc");
ApcFunctionAddress = (DWORD)MmGetSystemRoutineAddress(&functionName);
if(ApcFunctionAddress == 0)
{
DbgPrint("get KeInitializeApc Function address fialed\n");
return FALSE;
}
DbgPrint("0x%x",ApcFunctionAddress);
for (i=ApcFunctionAddress;i<ApcFunctionAddress+PAGE_SIZE;i++)
{
memcpy(lpHookCheck,(PVOID)i,1);
if (memcmp(lpHookCheck,lpHook,1) == 0)
{
DbgPrint("Found : 0x%x",i);
FFCON();
memcpy((PVOID)i,lpHookCode,6); //恢复inline hook
FFCoff();
return TRUE;
}
}
DbgPrint("Can't Found MAPV\r\n");
return FALSE;
}
NTSTATUS DriverUnload(
IN PDRIVER_OBJECT DriverObject
)
{
DbgPrint("驱动已经被卸载了\n");
return STATUS_SUCCESS;
}
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
DbgPrint("Hello World\n");
DriverObject->DriverUnload = DriverUnload;
RemoveMAPInlineHook();
return STATUS_SUCCESS;
}
然后任务管理器就可以直接结束了~~
PS:打电玩去,最近“拳皇97”老TMD被人虐~~
作者:
风风雨雨
时间:
2010-5-7 11:58
不用微点杀毒扫描版(在我眼里这个只是一个辅助产品)
我用微点主动防御版。
作者:
f8312519
时间:
2010-5-7 23:21
楼主首先要弄懂微点公司的策略
微点杀毒只是为了满足用户的需要而设计出来的.它完全是为了用来辅助微点主防的
如果有了微点主防.一个杀毒辅助还有必要弄这么强的自保吗.既然很多功能微点主防有了.何必弄到杀毒里面来.如果这样不就冲突了么!!
所以我认为微点的做法是对的.不过在介绍方面.微点应该重点还是大力推广微点主防!!
完全可以把微点杀毒免费.然后当达到相当数量的用户后就开始大力推广主防.不管是弹窗呢还是小广告呢.反正就是向用户推荐微点主防!!
欢迎光临 微点交流论坛 (http://bbs.micropoint.com.cn/)
bbs.micropoint.com.cn