[发明专利]一种应用程序的处理方法及装置有效
申请号: | 201710243953.4 | 申请日: | 2017-04-14 |
公开(公告)号: | CN107133502B | 公开(公告)日: | 2019-10-15 |
发明(设计)人: | 阚志刚;陈彪;程显龙;方宁;卢佐华 | 申请(专利权)人: | 北京梆梆安全科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京国昊天诚知识产权代理有限公司 11315 | 代理人: | 许志勇 |
地址: | 100083 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 应用程序 处理 方法 装置 | ||
本申请实施例公开了一种应用程序的处理方法及装置,该方法包括:获取待保护的应用程序中的预定程序数据;从所述预定程序数据中获取控制流数据,基于所述控制流数据生成预定程序函数;基于所述控制流数据、所述预定程序数据和所述预定程序函数对所述待保护的应用程序进行控制流混淆处理,得到目标应用程序的数据,所述控制流混淆处理能够使得所述控制流数据在所述待保护的应用程序中被混淆。利用本申请实施例,可以降低了应用程序的程序代码的泄露或篡改风险,提高应用程序的程序代码的安全性。
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用程序的处理方法及装置。
背景技术
程序语言通常是解释性语言,如Java程序语言、C程序语言等。在编译的过程中,很多程序语言编写的源程序代码需要编译成某种中间代码,例如,Java语言编写的源程序代码可编译为一种“字节码”形式的中间代码。在中间代码中会包含很多源程序代码的信息,例如方法名、变量名等,这样就使得中间代码的反编译变得非常容易,从而造成应用程序的程序代码的泄露或篡改。为了保护应用程序的应用版权等,就需要对应用程序进行保护。
应用程序加壳是极其普遍的应用程序保护方式,即编写程序代码,并将该程序代码设置在应用程序的程序代码外,设置在外层的程序代码在待保护的程序代码(或应用程序)前执行,以便执行其中的解密程序代码、反调试等操作,完成上述操作后,再执行待保护的应用程序(或其程序代码),这样,通过在待保护的程序代码外层增加包含解密程序代码、反调试等操作的程序代码来对应用程序进行保护。
然而,应用程序加壳的方式尽管可以有效的阻止对待保护的应用程序的静态分析,但是,由于解密后的待保护的程序代码最终要在内存中执行,因此,只要用户能够在内存中找到解密后的待保护的程序代码的地址,即可获取待保护的程序代码,因此,对于对待保护的应用程序的动态分析,应用程序加壳的方式却无法阻止,应用程序的程序代码的泄露或篡改风险依然存在,从而使得应用程序的程序代码的安全性低下。
发明内容
本申请实施例的目的是提供一种应用程序的处理方法及装置,以解决现有技术中存在的应用程序的程序代码的泄露或篡改风险,从而使得应用程序的程序代码的安全性低下的问题。
为解决上述技术问题,本申请实施例是这样实现的:
本申请实施例提供的一种应用程序的处理方法,所述方法包括:
获取待保护的应用程序中的预定程序数据;
从所述预定程序数据中获取控制流数据,基于所述控制流数据生成预定程序函数;
基于所述控制流数据、所述预定程序数据和所述预定程序函数对所述待保护的应用程序进行控制流混淆处理,得到目标应用程序的数据,所述控制流混淆处理能够使得所述控制流数据在所述待保护的应用程序中被混淆。
可选地,所述从所述预定程序数据中获取控制流数据,基于所述控制流数据生成预定程序函数,包括:
将所述预定程序数据转换为预定程序语言的目标程序数据;
从所述目标程序数据中提取控制流数据,基于所述控制流数据生成预定程序函数。
可选地,所述基于所述控制流数据、所述预定程序数据和所述预定程序函数对所述待保护的应用程序进行控制流混淆处理,得到目标应用程序的数据,包括:
将所述预定程序数据中除控制流数据外的程序数据输入所述预定程序函数中,得到返回值;
基于所述返回值确定相应的统一控制流函数;
将所述控制流数据输入到所述统一控制流函数中,以通过所述统一控制流函数能够调用所述控制流数据;
根据所述预定程序数据中除控制流数据外的程序数据、所述统一控制流函数和所述控制流数据生成目标应用程序的数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京梆梆安全科技有限公司,未经北京梆梆安全科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710243953.4/2.html,转载请声明来源钻瓜专利网。