[发明专利]面向安卓应用程序的渐进控制流混淆方法和电子设备在审
申请号: | 201911360253.9 | 申请日: | 2019-12-25 |
公开(公告)号: | CN111190601A | 公开(公告)日: | 2020-05-22 |
发明(设计)人: | 刘茜 | 申请(专利权)人: | 航天信息股份有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/53;G06F21/14 |
代理公司: | 北京思创大成知识产权代理有限公司 11614 | 代理人: | 张立君 |
地址: | 100195 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 面向 应用程序 渐进 控制 混淆 方法 电子设备 | ||
本申请公开了面向安卓应用程序的渐进控制流混淆方法和电子设备。该方法包括:获取目标应用程序的smali文件;将所述smali文件中的各个函数拆分成可执行的逻辑块;确定各个逻辑块的混淆级别,并根据混淆级别将各个逻辑块划分为多个集合;按照混淆级别从高到低的顺序从所述多个集合中选择部分集合,对选中的集合中的逻辑块进行混淆;判断当前混淆后的代码是否达到期望的复杂度,如果没有达到,则对当前混淆后的代码进行进一步混淆,直到达到期望的复杂度。根据本申请,程序开发人员可以更自由的在程序混淆复杂程度和计算开销之间进行权衡。
技术领域
本申请属于软件开发领域,更具体地,涉及面向安卓应用程序的渐进控制流混淆方法和电子设备。
背景技术
Android(安卓)字节码易于逆向,因此Android应用程序开发人员采用混淆技术对软件代码进行变换,保护应用程序。控制流混淆是通过改变程序判定条件、对程序结构和执行路径进行调整、或向程序中添加不透明谓词等方法增加程序的复杂度,增加反编译程序的难度。尽管控制流混淆技术能够为应用程序提供更强的安全保障,但由于需要插入大量的调用和返回指令,会产生很大的开销,不易于实践。
发明内容
有鉴于此,本申请实施例提供了一种渐进控制流混淆方法、电子设备及介质,以便于在混淆复杂程度和计算开销之间取得平衡。
第一方面,本申请实施例提供了一种面向安卓应用程序的渐进控制流混淆方法,包括:获取目标应用程序的smali文件;将所述smali文件中的各个函数拆分成可执行的逻辑块;确定各个逻辑块的混淆级别,并根据混淆级别将各个逻辑块划分为多个集合;按照混淆级别从高到低的顺序从所述多个集合中选择部分集合,对选中的集合中的逻辑块进行混淆;判断当前混淆后的代码是否达到期望的复杂度,如果没有达到,则对当前混淆后的代码进行进一步混淆,直到达到期望的复杂度。
在一种可能的实施方式中,所述获取目标应用程序的smali代码,包括:将目标应用程序的apk文件解压,获取对应的classes.dex文件;使用apktool将classes.dex文件反编译成smali文件。
在一种可能的实施方式中,所述确定各个逻辑块的混淆级别,包括:根据每个逻辑块的长度和/或安全级别,确定该逻辑块的混淆级别。
在一种可能的实施方式中,所述根据混淆级别将各个逻辑块划分为多个集合,包括:将混淆级别处于同一范围的逻辑块,划分至同一个集合。
在一种可能的实施方式中,所述按照混淆级别从高到低的顺序从所述多个集合中选择部分集合,包括:从所述多个集合中选择混淆级别最高的预定数量个集合。
在一种可能的实施方式中,所述判断当前混淆后的代码是否达到期望的复杂度,包括:对当前混淆后的代码进行攻击;如果在预定时间内,当前混淆后的代码被成功破解,则判断未达到期望的复杂度;如果在预定时间内,当前混淆后的代码未被破解,则判断达到期望的复杂度。
第二方面,本申请实施例还提供了一种电子设备,该电子设备包括:
存储器,存储有可执行指令;
处理器,所述处理器运行所述存储器中的所述可执行指令,以实现上述方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法。
上述技术方案中,以渐进的方式对程序进行混淆,直到程序混淆达到符合目标的复杂程度。根据本申请,程序开发人员可以在程序混淆复杂程度和计算开销之间取得期望的平衡。
本申请的其它特征和优点将在随后具体实施方式部分予以详细说明。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于航天信息股份有限公司,未经航天信息股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911360253.9/2.html,转载请声明来源钻瓜专利网。