[发明专利]自调试方法和系统有效
申请号: | 201780075541.2 | 申请日: | 2017-12-05 |
公开(公告)号: | CN110088736B | 公开(公告)日: | 2023-05-23 |
发明(设计)人: | 斯泰恩·福尔克特;比约恩·德萨特;贝尔特·阿布拉斯 | 申请(专利权)人: | 耐瑞唯信有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京银龙知识产权代理有限公司 11243 | 代理人: | 曾贤伟;许静 |
地址: | 瑞士舍索-*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 调试 方法 系统 | ||
总的来说,提供了保护软件的方法、计算机程序产品和设备。依照本公开,该方法可包括:将调试器进程附连到所述软件进程。所述软件进程执行期间,在所述调试器进程内执行与所述代码进程的功能有关的操作。结果,不侵害所述软件进程的功能情况下是不能替代或破坏所述调试器进程的。因此,可保护所述软件进程避免被通过修改的或恶意调试技术检查。
产生本公开的工作受到[欧盟][欧洲原子能共同体]第七框架计划([FP7/2007-2013][FP7/2007-2011])第609734号拨款协议的资助。
技术领域
本发明涉及软件安全,尤其涉及利用调试技术来保护诸如应用程序或库的软件免受攻击。
背景技术
调试是这样一种进程:通过调试能够识别代码中的错误。用于调试的一个工具是调试器,调试器是许多操作系统允许其与要调试的代码配对的一种类型的工具。当发生异常或其他错误时,异常或其他错误的发生被报告给调试器,调试器随后能够检查代码并确定此问题的源头。
将调试器与代码配对的能力已被恶意方用于危害该代码的安全。特别地,由于调试器能够识别代码的运行,其能够成为漏洞之源。
已经开发出一些技术来视图保护代码免受这样的攻击。这些技术包括:尝试允许代码识别现用的调试器何时不正当地连接到代码。另一种方法是:将代码设计为本身能够在执行时启动调试器(此调试器可称为“自调试器”)。大多数操作系统将仅允许单个调试器与给定的进程配对,这意味着自调试器占用恶意调试器可能希望使用的空间。
附图说明
图1是在先的代码进程、以及本公开的耦合代码进程和调试器进程的主要特征的示意图;
图2是示出根据一种实施例的运行时步骤的流程图;
图3示出了根据本公开的二进制文件生成的主要方面;以及
图4示出了用于实现优选实施例的硬件架构。
具体实施方式
总的来说,提供了保护代码运行的方法。依照本公开,一种方法可包括:启动代码进程,并初始化附连到该代码进程的调试器进程。执行代码进程期间,能够在调试器进程内执行与代码进程的功能决定性地有关的操作。结果,不可能在不影响代码进程的功能的前提下替换或破坏调试器进程。因此,能够保护代码进程免受修改或恶意调试技术的检查。
在这样的背景下,“决定性地”可理解为表示调试器进程中执行的那些操作产生的输出作为代码进程其他部分的输入,并且表示考虑到代码进程的其他输入该输入对于允许代码进程生成其正确的输出是必要的。
在本公开的一些方面中,提供了一种保护软件的方法。该方法可以包括:启动软件进程,以及将调试器进程附连到该软件进程。然后,能够执行代码进程以使得至少一次调用调试器进程。调用时,可以在调试器进程中实施一个或多个函数,这些函数具有依赖于与软件进程关联的数据的输出。由于输出能够随着与软件进程关联的数据而发生变化(即,不是预定的),仅在软件进程和调试器进程都正常运行时才能实现整体功能。这样并没有给干预调试器进程以分析代码留出空间。
由于其取代了调试器正调试的进程,此方面的软件进程可视为“被调试”进程。可在启动软件进程时或之后初始化调试器进程。例如,可在(在软件进程中)加载某些功能(例如,库)时初始化调试器进程。在一些示例中,软件进程分叉以初始化调试器进程。在其他示例中,可先初始化调试器进程,然后分叉以生成软件进程。
在一些实施例中,输出包括由软件进程使用的数据输出。因此,调试器进程中的函数的输出能够直接影响软件进程之后的运行,由此,以不容易被破坏的方式将两个进程紧密结合在一起。调试器进程中的函数的输出包括软件进程的数据输入,所述数据输入对于软件进程的执行至关重要。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于耐瑞唯信有限公司,未经耐瑞唯信有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201780075541.2/2.html,转载请声明来源钻瓜专利网。