1   1  /  1  页   跳转

[原创] 对于瑞星的改进建议!!!

对于瑞星的改进建议!!!

1、东方x为了保护自身线程,通过修改 PsTerminateSystemThread 将对 PspTerminateThreadByPointer 的调用改为对HookOfPspTerminateThreadByPointer 的调用,大概是针对目前流行的搜索 PspTerminateThreadByPointer 地址的方法而采取的措施,因为这样修改后,其它驱动程序基本上就搜索不到 PspTerminateThreadByPointer 的地址了。比较奇怪的是,x未对 PspTerminateThreadByPointer 进行挂钩,所以如果通过其它办法得到该地址,x就防不住了。




  常用的挂钩方法方法有如下3种;要注意的是这里的挂钩方法仅限于SSDT表和SSDT shadow表的挂钩.
1,在要挂钩的函数中使用"JMP  XXXXXXXX"覆盖原函数的指令,该指令的机器码是E9XXXXXXXX,占用5个字节的地址空间.
2,在要挂钩的函数中使用"JMP FARXXXXXXXX"覆盖原函数的指令,后面的XXXXXXXX是跳转的绝对地址,该函数指令的机器码是EAXXXX0800,该指令占用7个字节的地址空间.
3,在要挂钩的函数中先使用"PUSHXXXXXXXX",之后直接用RETN返回,这样就间接实现了跳转,这两条指令共占用6个字节的地址空间.


      如上所述,那要避开挂钩的函数,跳转到函数中不被挂钩的代码段就可以跳出主动防御的重重拦截,即是跳转API函数+10的地址.但是通常情况下API+5就已经可以对付大部分钩子了.为了对付这种API+5的跳转,出现了变形的API函数挂钩技术[变形JMP],变形API函数挂钩是将挂钩的地址进行变形,就是挂钩的地址不再是在API+5的范围内,变成了API函数中数十个字节中任意几个,十几个甚至数十个字节.反正是在  [(API+5<API+X) X>5] 的情况下进行的,但这种技术也不是很好使用的,需要对进行变形API函数挂钩的API函数有比较深的理解,不然是无法使用的.同样x是使用变形API函数挂钩的,在挂钩深度上,连XueTr0.36和天琊都无法检测出来,这说明x的工程师对挂钩的API函数有很深的理解.实际上在挂钩深度上,x比卡巴斯基2011要深,在XueTr0.36的检测下卡巴斯基2011的挂钩还是相当多的. 


那变形API函数挂钩技术和钩子隐藏有何关系呢?    我看了下资料,钩子隐蔽技术是无意中被发现的技术,这和变形API函数挂钩技术有很深的关系.一个ARK工具扫描API函数是否被挂钩时,是基于对比来实现的.    简单来说就是检测,封装API函数的原始DLL文件中API函数的地址和内存中的API函数地址,是否一样,不一样就可以说该API函数已经被挂钩(要注意的是,这是在通常来讲的情况下,可认为其已被挂钩.)  这是反汇编引擎对其进行扫描,但反汇编引擎通常只扫描API函数地址的前十个字节,也是说万一变形API挂钩,不在前十个字节里,就会被认为其没被挂钩,但事实上API已经被挂钩. 这就实现了API钩子隐藏. 这便是初级的API钩子隐藏技术.


    这就是为何x的钩子无法扫描出来的原因---用工具 !!!




用户系统信息:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.33 Safari/534.3 SE 2.X MetaSr 1.0
分享到:
gototop
 

回复 1F shulun743 的帖子

lz建议已反馈到瑞星相关部门,感谢对瑞星产品的支持。
gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT