[发明专利]利用进程虚拟机反调试的方法、装置、系统及存储介质在审
申请号: | 202010145471.7 | 申请日: | 2020-03-04 |
公开(公告)号: | CN111309444A | 公开(公告)日: | 2020-06-19 |
发明(设计)人: | 陈钢 | 申请(专利权)人: | 北京奇艺世纪科技有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F8/41 |
代理公司: | 北京华夏泰和知识产权代理有限公司 11662 | 代理人: | 韩来兵;李雪 |
地址: | 100080 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 利用 进程 虚拟机 调试 方法 装置 系统 存储 介质 | ||
本发明实施例涉及一种利用进程虚拟机反调试的方法、装置、系统及存储介质,该方法包括:利用预建立的虚拟编码器将待保护程序编译至预建立的进程虚拟机,获取虚拟编码程序;利用进程虚拟机中包含的保护进程对已经运行在进程虚拟机中的虚拟编码程序进行调试。通过该方法,利用虚拟编码器将待保护程序编译至进程虚拟机中,并且在进程虚拟机中运行。保护进程直接对包含有待保护程序的虚拟编码程序整体进行调试。调试过程中可以防止攻击方调试待保护程序,因为一旦攻击方将虚拟编码程序“杀死”,则将导致程序运行停止,攻击方无法得逞。整个待保护程序运行过程都有保护程序的调试,让攻击方无懈可击,而且大大降低了开发成本。
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种利用进程虚拟机反调试的方法、装置、系统及存储介质。
背景技术
现有技术中,反调试和反反调试一直都是开发人员比较头疼的事情。举例而言,攻击方会通过用ptrace()接口调试需要被保护地程序P以获得P运行时的敏感信息。而防守方则会利用同时只有一个进程启用ptrace()接口调试程序的特点,在程序P启动时就先启动一个进程A对自己进行调试,这样就可以让后来的攻击方无法使用ptrace()接口做调试。攻击方同样会采取其他措施,实现反调试。例如,找到进程A,将其“杀死”,然后攻击方进行调试P。防守方为了避免这种情况的发生,则进行升级。升级的方式有多种技术路线,其目的就是不让攻击方轻易的“杀死”进程A。典型的方案是:让进程A在调试P时,在某些关键逻辑改变P的行为。
举一个例子,P在软件启动时,校验注册码SN。
P中有函数:
bool checkSN(sn){
if sn==md5(sn){
return true;
}
return false;
}
让A在调试P时截获函数checkSN(),将形参sn的值修改为md5(sn),这样软件运行时,checkSN()函数就能正确返回true了。软件正常运行。
如果有攻击者杀死了A,那么checkSN()中的if判断会不成立,返回false,软件不会继续往下运行。
所以,攻击者不能“杀死”A。而由于A在调试P,攻击者也无法调试P。
虽然,在上述过程中,攻方无法在checkSN()函数运行结束之前杀死A。但却可以等待checkSN()函数运行结束之后再“杀死”A。并在某个时刻获得调试P的能力。
上述案例的攻防过程中,会发现防守方存在很大的弊端,例如进程A需要保持隔段时间就对P中的某些逻辑作出修改,才能保证A不被杀死。但是,随着程序规模的逐渐扩大,想在P的所有逻辑中加入和A的互动,毫无疑问,其困难度将是非常巨大的,对于安全防护人员的技术能力、专业度的要求都将会非常高,成本也会大大增加。
发明内容
鉴于此,为解决现有技术中反调试的措施存在随着程序规模的逐渐扩大,编写难度增加,对开发人员的技术能力、专业度等要求高,而且成本大大增加的技术问题,本发明实施例提供一种利用进程虚拟机反调试的方法、装置、系统及存储介质。
第一方面,本发明实施例提供一种利用进程虚拟机反调试的方法,该方法包括:
利用预建立的虚拟编码器将待保护程序编译至预建立的进程虚拟机,获取虚拟编码程序;
利用进程虚拟机中包含的保护进程对已经运行在进程虚拟机中的虚拟编码程序进行调试。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇艺世纪科技有限公司,未经北京奇艺世纪科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010145471.7/2.html,转载请声明来源钻瓜专利网。