[发明专利]一种保护异常机制的方法、智能终端及存储介质有效
| 申请号: | 201910934611.6 | 申请日: | 2019-09-29 |
| 公开(公告)号: | CN110673929B | 公开(公告)日: | 2022-11-22 |
| 发明(设计)人: | 方令;肖巍 | 申请(专利权)人: | 深圳爱加密科技有限公司 |
| 主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F8/41 |
| 代理公司: | 深圳市君胜知识产权代理事务所(普通合伙) 44268 | 代理人: | 王永文 |
| 地址: | 518000 广东省深圳市福田区梅*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 保护 异常 机制 方法 智能 终端 存储 介质 | ||
1.一种保护异常机制的方法,其特征在于,包括:
通过编译器获取到源文件中待虚拟化保护的源函数,生成第一IR指令,并将所述第一IR指令中表示异常的指令翻译成一组虚拟异常指令;
所述编译器生成第二IR指令替换所述第一IR指令,形成解释器入口函数,所述解释器入口函数调用解释器对所述一组虚拟异常指令进行解释执行;
所述编译器生成第二IR指令替换所述第一IR指令,形成解释器入口函数,所述解释器入口函数调用解释器对所述一组虚拟异常指令进行解释执行具体包括:
所述编译器生成第二IR指令替换所述第一IR指令,形成解释器入口函数,所述第二IR指令调用解释器对所述一组虚拟异常指令逐条执行;所述一组虚拟异常指令包括多条虚拟异常指令,所述解释器调用本地函数;
当所述本地函数抛出异常时,解释器捕获所述异常,执行所述异常处理的虚拟字节码;
所述当所述本地函数抛出异常时,解释器捕获所述异常,执行所述异常处理的虚拟字节码具体包括:
当所述本地函数抛出异常时,解释器捕获所述异常;
通过所述虚拟异常表的索引表查看当前被保护函数是否存在虚拟异常表,若不存在虚拟异常表,则解释器重新抛出所述异常;若存在虚拟异常表,则获取当前被保护函数的虚拟异常表;
查看当前被保护函数的虚拟异常表,当当前被保护函数不能捕获所述异常时,重新抛出所述异常;
当当前被保护函数能够捕获所述异常时,则设置vpc,控制所述vpc指向捕获所述异常后应执行的异常处理的虚拟字节码,解释器解释执行所述异常处理的虚拟字节码;
所述重新抛出所述异常之后包括:
沿函数调用链向上,解释器继续捕获所述异常。
2.根据权利要求1所述的保护异常机制的方法,其特征在于,所述通过编译器获取到源文件中待虚拟化保护的源函数,生成第一IR指令的同时,还生成了第一IR指令对应的第一IR文件,所述第一IR文件包括:待保护的函数、非保护的函数、包装函数、异常类型表和包装函数表;所述包装函数表中存储有包装函数,所述包装函数用于调用本地函数。
3.根据权利要求2所述的保护异常机制的方法,其特征在于,所述并将所述第一IR指令中表示异常的指令翻译成一组虚拟异常指令的同时,所述第一IR文件转化成第二IR文件,所述第二IR文件包括:异常类型表、包装函数表、虚拟异常表的合并表、虚拟异常表的索引表及虚拟字节码表;所述虚拟字节码表中存储有虚拟字节码,所述虚拟字节码包括多条虚拟异常指令;所述虚拟异常表的合并表中存储有多个虚拟异常表。
4.根据权利要求3所述的保护异常机制的方法,其特征在于,所述编译器生成第二IR指令替换所述第一IR指令,形成解释器入口函数,所述解释器入口函数调用解释器对所述一组虚拟异常指令进行解释执行之后还包括:
所述第二IR文件转化成二进制目标文件,调用链接器,将所述二进制目标文件与所述解释器链接,形成二进制可执行文件。
5.根据权利要求1所述的保护异常机制的方法,其特征在于,所述源函数为C++函数。
6.一种智能终端,其特征在于,包括处理器,以及与所述处理器连接的存储器,所述存储器存储有保护异常机制的程序,所述保护异常机制的程序被所述处理器执行时能够实现如权利要求1-5任一项所述的保护异常机制的方法。
7.一种存储介质,其特征在于,所述存储介质存储有保护异常机制的程序,所述保护异常机制的程序能够被执行以用于实现如权利要求1-5任一项所述的保护异常机制的方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳爱加密科技有限公司,未经深圳爱加密科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910934611.6/1.html,转载请声明来源钻瓜专利网。





