扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:TechTarget中国 2011年12月1日
关键字: 恶意软件
系列文章(四)中,我们介绍了恶意软件作者如何通过技术检测虚拟测试环境以及通过JavaScript的模糊代码对浏览器进行攻击。本文我们将介绍恶意软件作者如何干扰调试。
对付调试工具
与JavaScript自查功能的使用有异曲同工之妙的是,使用针对可执行调试工具的技术。调试器这种由程序员在汇编语言水平上监视程序执行的工具,可以挂起一个程序的执行,并允许用户检查内存,查看在代码执行过程中都发生了什么。
恶意程序的作者深谙此道,掌握多种技巧(许多技巧是从软件副本的保护方案中获得的,特别是从一些游戏开发商的开发思路中所获得的),其目的是挫败使用调试工具的反恶意软件分析师。下面谈的就是其中一些流行的技术:
检测调试工具:最有效的恶意软件技术依赖于这个事实:要让一个调试器来工作,就必须用某种方式调整程序及其操作环境。因此,调试程序必须得到操作系统的支持,允许其执行一些通常不被允许的操作,如监视另一个程序的内存等。这会使反调试技术检测到其行动轨迹。如果一个程序能够判定自己正在一个调试器中被监视,它就可以调整其功能,甚至拒绝运行。
搞乱调试工具:其它的反调试技术都是为了搞乱调试工具。为完成其工作,调试工具必须理解一个程序的流程,它一般以汇编语言代码来执行,并可以利用函数调用和指令流。然而,调试工具对程序的流程采取了一种先入为主的观念,它主要根据编译器所生成的代码的特性工作。如果一个为恶意软件公司工作的汇编语言程序员要创建违反这些假设的代码,就最终会扰乱调试工具的“反汇编”部分。
这类模糊的基础是一种称为“失调术”的技术,即恶意软件的作者使用复杂的偏移技术,并在其代码内部直接操纵执行点,用以跳转到一些非正常的位置。因而,调试工具就有可能显示错误的代码。
但不管恶意软件的作者多么狡猾,他们都面临一个很不利的问题:要让其商业模式成功,就必须让代码在某个地方运行。而恶意软件的分析师在其实验室里对他们所测试程序的环境拥有完全的控制。通常,胜利属于控制战场的一方。
恶意软件的分析师可以在其专用的JavaScript解析器中运行脚本,从而克服JavaScript的某些特性。这种解析器允许分析师调整内置函数的功能或者控制这种语言的某些属性值。只要有充足的时间,训练有素的恶意软件分析师就可以找到改变程序流程的方法,从而克服各种反调试技术。
下文将谈恶意软件编写者的终级武器:蛮力制胜
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者