[发明专利]调试方法和调试设备有效
申请号: | 201010142081.0 | 申请日: | 2010-04-06 |
公开(公告)号: | CN102214137A | 公开(公告)日: | 2011-10-12 |
发明(设计)人: | 李毅超;刘丹;陈沁源;刘泽鹏;仇冰雪;张大成 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 彭愿洁;李文红 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 调试 方法 设备 | ||
技术领域
本发明涉及计算机技术领域,具体涉及一种调试方法和调试设备。
背景技术
调试技术被广泛运用于代码分析、逆向工程领域、恶意代码分析领域。对软件进行调试,包含以下几个方面的内容:一是对目标程序执行路径下断点,并使之能在执行时停下来;二是能对目标程序进行单步跟踪;三是能够提供目标程序运行时的丰富信息。
在对现有技术的研究和实践过程中,本发明的发明人发现,目前较常用的调试方法是通过修改目标程序代码来实现断点机制,容易被反调试技术发现被修改的代码并恢复目标程序,因此现有的调试方法隐蔽性较差。
发明内容
本发明实施例提供一种调试方法和调试设备,能够在不修改目标程序代码的情况下对目标程序进行调试,隐蔽性较高。
本发明实施例提供了一种调试方法,包括:
将系统处理器的中断描述符表中,页面属性故障对应的故障处理函数地址,修改为自定义故障处理函数地址;
当目标程序出现指定的页面属性故障时,获取目标程序的现场信息;
将获取的现场信息保存到当前线程对应的虚拟执行缓冲区;
将所述虚拟执行缓冲区中的现场信息压栈保存;
判断目标程序扩展指令指针是否与出现故障的页面的预置断点地址匹配;
若匹配,则与用户交互;
否则拷贝构造目标程序扩展指令指针所指向指令到当前线程对应的虚拟执行缓冲区;
从栈中弹出现场信息,执行所述虚拟执行缓冲区中的指令,并重复判断目标程序扩展指令指针是否与预置断点地址匹配。
本发明实施例还提供了一种调试设备,包括:
第一修改模块,用于将系统处理器的中断描述符表中,页面属性故障对应的故障处理函数地址,修改为自定义故障处理函数地址;
获取模块,用于当目标程序出现指定的页面属性故障时,获取目标程序的现场信息;
第一保存模块,用于将获取的现场信息保存到当前线程对应的虚拟执行缓冲区;
第二保存模块,用于将当前线程对应的虚拟执行缓冲区中的现场信息压栈保存;
第一判断模块,用于判断目标程序扩展指令指针是否与出现故障的页面的预置断点地址匹配,若匹配,则触发交互模块执行相关操作,否则触发拷贝模块执行相关操作;
交互模块,用于与用户交互;
拷贝模块,用于拷贝构造目标程序扩展指令指针所指向指令到虚拟执行缓冲区;
执行模块,用于从栈中弹出现场信息,执行虚拟执行缓冲区中的指令,并触发第一判断模块执行相关操作。
从以上技术方案可以看出,本发明实施例具有如下有益效果:
本发明实施例中,通过修改页面属性故障对应的故障处理函数地址,使得在目标程序出现页面属性故障时,调试设备能够截获对目标程序的控制权,在截获控制权后,调试设备将现场信息保存到当前线程对应的缓冲区并压栈保存,再对目标程序的指令拷贝构造并执行,使目标程序运行到预置断点位置,与用户交互,让用户对目标程序进行调试,从而实现在不修改目标程序代码的情况下对目标程序进行调试,隐蔽性较高。
附图说明
图1是本发明实施例中调试方法的一个实施例的示意图;
图2是本发明实施例中调试方法的另一实施例的示意图;
图3是本发明实施例中调试方法的另一实施例的多处理器流程示意图;
图4是本发明实施例中调试方法的另一实施例的多线程流程示意图;
图5是本发明实施例中调试方法的另一实施例的单步处理流程示意图;
图6是本发明实施例中调试方法的另一实施例的抗结构化异常处理流程示意图;
图7是本发明实施例中调试设备的一个实施例的示意图;
图8是本发明实施例中调试设备的另一实施例的示意图。
具体实施方式
本发明实施例提供一种调试方法和调试设备。以下分别进行详细说明。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010142081.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:电子书阅读器与其信息收集方法
- 下一篇:一种生物质气化燃烧环保锅炉