首页 > 信息安全 > 正文

恶意软件作者如何干扰调试?

2011-12-07 11:33:59  来源:CIO时代网

摘要:恶意程序的作者深谙此道,掌握多种技巧(许多技巧是从软件副本的保护方案中获得的,特别是从一些游戏开发商的开发思路中所获得的),其目的是挫败使用调试工具的反恶意软件分析师。
关键词: 恶意程序 恶意软件

  本文我们将介绍恶意软件作者如何干扰调试。


  对付调试工具


  与JavaScript自查功能的使用有异曲同工之妙的是,使用针对可执行调试工具的技术。调试器这种由程序员在汇编语言水平上监视程序执行的工具,可以挂起一个程序的执行,并允许用户检查内存,查看在代码执行过程中都发生了什么。


  恶意程序的作者深谙此道,掌握多种技巧(许多技巧是从软件副本的保护方案中获得的,特别是从一些游戏开发商的开发思路中所获得的),其目的是挫败使用调试工具的反恶意软件分析师。下面谈的就是其中一些流行的技术:


  检测调试工具:最有效的恶意软件技术依赖于这个事实:要让一个调试器来工作,就必须用某种方式调整程序及其操作环境。因此,调试程序必须得到操作系统的支持,允许其执行一些通常不被允许的操作,如监视另一个程序的内存等。这会使反调试技术检测到其行动轨迹。如果一个程序能够判定自己正在一个调试器中被监视,它就可以调整其功能,甚至拒绝运行。


  搞乱调试工具:其它的反调试技术都是为了搞乱调试工具。为完成其工作,调试工具必须理解一个程序的流程,它一般以汇编语言代码来执行,并可以利用函数调用和指令流。然而,调试工具对程序的流程采取了一种先入为主的观念,它主要根据编译器所生成的代码的特性工作。如果一个为恶意软件公司工作的汇编语言程序员要创建违反这些假设的代码,就最终会扰乱调试工具的“反汇编”部分。


  这类模糊的基础是一种称为“失调术”的技术,即恶意软件的作者使用复杂的偏移技术,并在其代码内部直接操纵执行点,用以跳转到一些非正常的位置。因而,调试工具就有可能显示错误的代码。


  但不管恶意软件的作者多么狡猾,他们都面临一个很不利的问题:要让其商业模式成功,就必须让代码在某个地方运行。而恶意软件的分析师在其实验室里对他们所测试程序的环境拥有完全的控制。通常,胜利属于控制战场的一方。


  恶意软件的分析师可以在其专用的JavaScript解析器中运行脚本,从而克服JavaScript的某些特性。这种解析器允许分析师调整内置函数的功能或者控制这种语言的某些属性值。只要有充足的时间,训练有素的恶意软件分析师就可以找到改变程序流程的方法,从而克服各种反调试技术。


 


第三十五届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:kaifangli

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。