0045A1A9 8B80 20020000 mov eax,dword ptr ds:[eax+220] 0045A1AF BA A4A34500 mov edx,超强灰鸽.0045A3A4 0045A1B4 8B08 mov ecx,dword ptr ds:[eax] 0045A1B6 FF51 38 call dword ptr ds:[ecx+38] 0045A1B9 EB 2A jmp short 超强灰鸽.0045A1E5
处理完毕啦。。。。
0045A1E5 33C0 xor eax,eax 0045A1E7 5A pop edx 0045A1E8 59 pop ecx 0045A1E9 59 pop ecx 0045A1EA 64:8910 mov dword ptr fs:[eax],edx 0045A1ED 68 07A24500 push 超强灰鸽.0045A207 0045A1F2 8D45 B8 lea eax,dword ptr ss:[ebp-48] 0045A1F5 BA 12000000 mov edx,12 0045A1FA E8 F99CFAFF call 超强灰鸽.00403EF8 0045A1FF C3 retn
总结: 该检测器通过OpenFileMappingA()函数检测指定的映射对象是否存在作判断,如存在,获取VIP用户名,继续检测隐藏的进程模块,获取其进程ID,映像出具体文件名(继而作相应的文件完整路径的组合),进行权限提升(打开令牌环,设置系统调试权限),PostMessageA()发送消息关闭隐藏进程主窗口,处理服务进程,取消病毒文件的所有属性(系统,隐藏,只读),最后删除病毒体!!!
检测器代码采用Borland Delphi编写,看这些反汇编代码总会碰到层层调用这一现象,在这些主要CALL的注释中,其实其内部的调用还有很多较详细的代码调用,限于篇幅,就不一一列举了.
此外, 由于本人能力的有限,错误及遗漏在所难免! 或许检测器原理并没有这么简单,还请检测器程序的编写作者或其他高手作出指点. 万分感谢!
|