论文部分内容阅读
在安全事件中,恶意代码造成的经济损失占有最大的比例。恶意代码的检测技术总是滞后于新恶意代码的出现。一方面是人们很难区别正常代码和恶意代码;另一方面,很多信息系统缺少必要的保护措施。因此,人们常常被恶意代码欺骗,而无意地执行恶意代码。可见恶意代码被引入系统并执行是不可避免的,监控、分析或检测二进制程序是否为恶意程序已经成为现阶段的研究热点。
恶意代码为了防止被分析,都有很强的自保护功能,现在主要的调试器很难对恶意代码进行分析。同时,软件保护技术的发展使大量的反调试工具出现,既有针对源代码的反调试工具,又有针对二进制程序的反调试工具。在反调试工具中,加壳工具功能比较突出,它综合使用多种技术对抗代码分析调试,而且加壳工具使用非常简单,越来越多的恶意代码使用加壳技术保护自己。
本文在分析了很多反调试技术后,包括检测断点技术、检测调试器技术和自动修改代码技术等,设计并实现了一种隐蔽性强的调试器。该隐蔽调试器利用windows分页管理机制,巧妙地对目标进程设置断点以获取控制,很好地实现了隐蔽调试的特性。
为获得对目标进程的控制权,本调试器利用了windows系统中进程的地址空间分为用户空间和系统空间,代码执行之前系统会进行权限检查的特点,通过修改了目标进程内存页面属性,使目标进程执行时出现异常,从而获得目标进程的控制权。为增强隐蔽性,本调试器还采用了多种设计技术,包括:通过向目标进程插入shellcode控制目标进程、不产生在windows系统中的注册信息等等。在功能使用性方面,本隐蔽调试器为系统增加了一些新的系统调用,以方便实现调试功能设置和用户交互。
实验和测试证明,本文提出的调试方法可以作为现行调试技术的一种有效的补充。