[发明专利]应用程序的运行方法、装置、电子设备及可读存储介质有效
申请号: | 201910290159.4 | 申请日: | 2019-04-11 |
公开(公告)号: | CN110008662B | 公开(公告)日: | 2020-05-05 |
发明(设计)人: | 王赛 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京市立方律师事务所 11330 | 代理人: | 张筱宁 |
地址: | 100043 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用程序 运行 方法 装置 电子设备 可读 存储 介质 | ||
本申请提供了一种应用程序的运行方法、装置、电子设备及计算机可读存储介质,涉及应用程序处理领域。该方法包括:当检测到所述应用程序启动时,获取随机变量、加密后的调用函数和加密后的全局变量;基于所述随机变量获取解密密钥;采用所述解密密钥对所述加密后的调用函数,和所述加密后的全局变量进行解密,得到原始调用函数和原始全局变量;采用所述原始调用函数和原始全局变量运行所述应用程序。本发明实施例提高了应用程序的安全性,保护了用户的个人隐私。
技术领域
本申请涉及应用程序处理技术领域,具体而言,本申请涉及一种应用程序的运行方法、装置、电子设备及计算机可读存储介质。
背景技术
随着科技的发展,移动终端的硬件性能越来越强悍,用户可以通过安装各种功能不同的应用程序来实现不同的功能,给用户的日常生活带了便利,但是,也存在一定的安全隐患。
比如,攻击者通过对移动终端上的应用程序逆向分析的方法,可以获取应用程序的重要信息,甚至是用户的个人隐私,给用户带来危害的同时也给应用程序的开发者带来挑战。
由于Java程序较C语言容易被破解,一般开发人员将核心函数用C语言来编写,通过生成共享库so的方式集成到应用程序中。但是攻击者仍然可以借助逆向工具对C语言编译成后的二进制反汇编和反编译,借助逆向工具,攻击者可以方便的进行控制流分析,数据流分析,甚至将二进制代码反编译为C语言代码,如果不对二进制程序做保护,攻击者往往可以比较轻松的对二进制程序进行逆向分析。
二进制程序中符号引用关系一般包括两类,第一类是函数与函数间的调用关系即调用图(call graph),第二类是函数对全局变量的引用关系,在逆向分析过程中,分析人员常常会通过这两类信息作为重要的参考,来推断函数的功能以及全局变量的实际意义。
目前开发者通常采用函数级别的混淆方法来防止逆向分析,包括插入虚假分支,控制流平坦化、虚拟机执行等,这些方法的目标都是针对函数级别,将函数的逻辑复杂化让攻击者难以理解。但是实际逆向分析过程中,分析人员还可以通过获取符号间的引用关系来推断程序的功能,比如通过未知函数对已知功能的函数的调用关系来推断未知函数的功能,或是通过各个函数对全局变量的引用关系,来标记全局变量的意义,而且有些情况下,常量字符串作为全局变量的一个子类,攻击者可以通过对这类全局变量的引用来比较准确的推断函数的功能,最终仍然完成了逆向分析。
发明内容
本申请提供了一种应用程序的运行的方法、装置、电子设备及计算机可读存储介质,可以解决现有应用程序容易被攻击者反编译,从而获取应用程序的重要信息,给用户带来危害的问题。所述技术方案如下:
第一方面,提供了一种应用程序的运行的方法,该方法包括:
当检测到所述应用程序启动时,获取随机变量、加密后的调用函数和加密后的全局变量;
基于所述随机变量获取解密密钥;
采用所述解密密钥对所述加密后的调用函数,和所述加密后的全局变量进行解密,得到原始调用函数和原始全局变量;
采用所述原始调用函数和原始全局变量运行所述应用程序。
第二方面,提供了一种应用程序的运行的装置,该装置包括:
第一获取模块,用于当检测到所述应用程序启动时,获取随机变量、加密后的调用函数和加密后的全局变量;
第二获取模块,用于基于所述随机变量获取解密密钥;
解密模块,用于采用所述解密密钥对所述加密后的调用函数,和所述加密后的全局变量进行解密,得到原始调用函数和原始全局变量;
运行模块,用于采用所述原始调用函数和原始全局变量运行所述应用程序。
第三方面,提供了一种电子设备,该电子设备包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910290159.4/2.html,转载请声明来源钻瓜专利网。