- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
;Part;9.1静态分析;9.1.1控制流分析;9.1.1控制流分析;;;;;;;;;;;;;;;;;;;;;;;;;;;;;软件调试(也可以说是动态分析),在软件运行过程中实时观察程序的运行效果,甚至控制并修改程序。
调试原理
伪调试技术
本地调试
远程调试;调试原理:在x86指令集系统中一般是指CPU等相关硬件在设计时内置的一系列用于调试目的的功能的工作原理(此处特指这些技术在Windows平台的体现)
调试API:Windows系统的设计中提供的一些与软件调试息息相关的函数;Windows的异常处理流程
任何异常都需要通过内核过滤,然后在保护层与内核层来回交换,从而异常处理的速度是相当慢的
调试器处理异常的优先级在保护层中是最高的,系统内核无法处理的异常都会优先传递给调试器来处理;调试原理;软断点实例被执行时使程序暂停
的指令修改为INT3指令,引发一个软件异常,实现中断的目的
继续运行程序
的指令恢复成原始的“pusheax”;硬件断点:通过CPU设计时提供的调试寄存器实现的。在设计CPU时,有一组DR系列寄存器,有DR0~DR7共8个寄存器,主要用于实现对代码指令的调试和跟踪。
由于寄存器的数据有限,因此只能同时下4个硬件断点。
硬件断点无须对被调试指令进行修改,而且在内存访问断点上执行效率非常高。;调试原理是系统组成部分之一,其特点是将被调试程序的进程转换到另外一个工作状态,系统内核一定能够判断程序是否处于被调试状态,否则系统将无法正确转发调试事件
“伪调试技术”可以避免将被调试程序转换到调试模式,因此,许多针对一般调试原理进行检测的保护系统都无法侦测到这种调试器的存在。;伪调试技术就是通过一系列技术手段实现对目标程序的各种调试功能,但不改变目标程序的工作环境和状态。
如果在一个软件内部引发一个异常,当软件未处于调试状态时,系统同样会将处理异常的权力转交给程序本身,且所有异常都是通过同一个入口(KiUserExceptionDispatcher函数)传入程序进程的,这就给了我们介入的机会。
可以在该程序的进程内注入一些代码,通过接管KiUserExceptionDispatcher函数入口从而在该程序处理任何???常前得到对异常的优先处理权。然后,在这个节点将异常处理的各种信息都传递给一个外部调试器,这样就等于模拟了系统转交调试事件的过程。;这种技术的优势在于,在整个过程中都不会影响被调试
程序的工作状态,尤其是在系统内核部分,由于进程在
正常运行中“被调试”,因此,基于任何技术的反调试
都无法准确判定进程是否处于调试状态。而且,由于在被调试程序进程内转发了异常,因此,在实现断点方面拥有更多的选择。例如,可以不通过构造异常来达到下断点的目的,而是通过代码HOOK达到同样的功能(因为对代码HOOK的检测将更加困难)。;本地调试也称本机调试,是指所调试的程序就运行在本地系统中,并与调试器处于同一个会话中
被调试程序与调试器处于同一桌面。调试器和被调试程序可以通过系统技术进行交互,并可以相互影响,因此,这也成为反调试中最重要的技术依据。;技术原理
在这种调试原理中,调试器与被调试程序之间主要通过提供的
系统函数来交换调试数据,因此调试事件的反应速度相当快。
因为许多调试器都是针对这一类型的“调试模式”开发的,所
以本地调试环境经常在调试器发行时就已经完成了自动化配置。
局限性:调试环境和被调试程序的运行环境必须处于同一个环境;远程调试:被调试的程序和调试器处于相互分离的执行环境,中间通过远程连接来交换调试信息
调试原理;远程调试的特点:调试器与被调试程序运行于两个执行环境(可用同一个执行环境代替),这使被调试的程序执行环境不需要完全具备调试环境所需的条件,如程序的调试符号信息、开发环境等。
被调试程序执行环境的结构与一般调试没有太大的区别。在被调试程序的执行环境当中,被调试的进程同样是通过系统提供的调试层(如调试API)来操作的,而这些操作一般由一个调试服务进程发出,这个调试服务进程通过与远程环境当中的调试器沟通,从而向被调试程序发出调试指令。这个调试服务进程实际上类似于一个代理程序。;9.2.2剖分---软件保护及分析技术;9.2.2剖分---软件保护及分析技术;9.2.2剖分---软件保护及分析技术;9.2.2剖分---软件保护及分析技术;9.2.2剖分---软件保护及分析技术;9.2.2剖分---软件保护及分析技术;9.2.2剖分---软件保护及分析技术;9.2.2剖分---软件保护及分析技术;9.2.2剖分---软件保护及分析技术;9.2.2剖分---软件保护及分析技术;9.2.2剖分---软件保护及分析技术;9.2.2剖分---软件保护及分析
文档评论(0)