莱斯布里奇大学吧:Smallfrogs‘ Technical BLOG : System Repair Engineer (SREng) 和 Win32 API HOOK(1)

来源:百度文库 编辑:中财网 时间:2024/04/30 21:11:19

System Repair Engineer (SREng) 是一款计算机安全辅助和系统维护辅助软件。主要用于发现、发掘潜在的系统故障和大多数由于计算机病毒造成的破坏,并提供一系列的修改建议和自动修复方法。 该软件是由 KZTechs.COM 网站站长 Smallfrogs 开发的,能够运行在所有主流的 Windows 操作系统上。”

上面这段话是System Repair Engineer (SREng) 的正式介绍,比较书面化,既然是BLOG,我认为可以这样解释SystemRepair Engineer (SREng) :是一种计算机安全辅助软件,用途是发现常见的问题和探测可能存在的问题。

具不完全统计,SREng月使用人数已经超过了40万次,且月增长幅度为20%左右。我认为现在有必要介绍一下和SREng有关的几种技术以及为什么我会在SREng里面增加这项功能。

想来想去,觉得SREng里面最近加入的API HOOK检测功能可能是最需要关注的技术内容了,因为API HOOK虽然是一种很正常的技术,但是由于被计算机病毒作者肆意使用,这种技术已经逐渐堕落成为计算机病毒的一种常见的技术。

让我们从头开始吧:

  • 2004年之前,我曾经发布了一个叫做RegFix的注册表修复软件,发布以后,反响还不错。不过由于当时种种技术限制,我觉得做的不是很好。
  • 2004 年中期,我开始构思一个新的软件,用于替代RegFix,2004年10月28日,SREng界面框架定型。从那以后,我就开始在业余时间进行开发(现在 也是业余时间 :)),2005年6月,1.0公开测试版完成,后来又经过1.0 RC2 版本、1.0 正式版、1.1 正式版等几个版本以后,我开始开发2.0版本。从界面框架上来看,2.0版本和1.X版本保持一致,不过在代码上却有相当大的区别。
  • 2.0版本经过2.0 RC1版和2.0 RC版之后,SREng 2.0框架里面的第一个正式版被命名为 2.2 版本,与2006年9月30日发布。
  • 2.2发布以后,我发现常用的一些功能在SREng里面都有了,后面做什么呢,这个时候,我发现利用Rootkit技术的软件变得非常流行,是不是从Rootkits下手呢?我开始思考这个问题。
    • Rootkit:不同的人有不同的看法,Wiki上认为是一类不怀好意的软件,但是我比较偏向于认为这是一种技术,这种技术可以被正常的软件使用,也可以被病毒使用。正常的软件如杀毒软件、虚拟光驱等,利用这种技术的病毒就很多了。想对Rootkit进行了解,可以访问 http://www.rootkits.com。
  • 我认识Rootkit这个词是在2004年初,后来在新加坡Windows Vista专题讲座上看到了一个最典型的内核级Rootkit——Hack Defender的演示,当时的冲击力的确很强的。SONY Rootkit事件的曝光,让Rootkit走向了前台。
  • 由 于种种限制,SREng目前是不能带有驱动的,这就造就了SREng很难发现内核层次的Rookit。虽然利用一些特殊的方法也能访问系统高端的保留地 址,但是这些方法都是Undocumented,而且在不同的操作系统版本里面还不一样,因此我决定先从用户层面的下手,瞄准的目标就是Win32 API HOOK。
  • 2006年12月24日,带有Win32 API HOOK检测功能的SREng 2.3版本发布。
  • 2007年3月10日,带有更强Win32 API HOOK检测功能的SREng 2.4版本发布。
  • 2007年XX月XX日,继续增强Win32 API HOOK检测功能的SREng 新版本也会推出,

要了解我为什么会突然增加Win32 API HOOK检测功能,就需要从Win32 API HOOK的原理说起了。

Win32API HOOK其实是一种挺正常的技术,在《Windows核心编程》这本书里面还有专门的篇幅介绍。很多软件都在使用这种技术来实现一些特殊的功能,其实微软自己也在使用这种技术,例如:在 WindowsXP 里面引入的兼容模式就是一个最典型的例子,另外,一些程序稳定性验证工具也使用了这种技术。一些杀毒软件也使用了这种技术来抵御计算机病毒。

可惜啊,只要是技术,总会有其好的一面和不好的一面。Win32 API HOOK也是这样,利用这个技术,计算机病毒编写者可以实现基本上所有的病毒功能,例如:主动传播,隐藏文件,隐藏进程,隐藏XXX,窃取资料……等等。

出于上述原因,同时也是自己的一点好奇心,另外再加上对一个以前从未接触过的领域的探索精神,我在SREng里面加入了这个检测。从目前的反馈来看,效果不错。一些流氓软件、病毒的隐藏内容被SREng成功的揪出来了,最典型的就是“灰鸽子远程控制软件服务端”了。

  • 关于“灰鸽子”的解释,请各位自己搜索吧,后文我会以“灰鸽子”为例说说它是怎么隐藏的。

在本文的第一部分里面,我简单的介绍了一下SREng的发展历程以及加入Win32 API HOOK检测机制的一个大概原因,后文我会从例子出发,和大家一起探索一下这个我显得比较生疏的技术领域。