【技术实现步骤摘要】
面向安卓应用程序的渐进控制流混淆方法和电子设备
本申请属于软件开发领域,更具体地,涉及面向安卓应用程序的渐进控制流混淆方法和电子设备。
技术介绍
Android(安卓)字节码易于逆向,因此Android应用程序开发人员采用混淆技术对软件代码进行变换,保护应用程序。控制流混淆是通过改变程序判定条件、对程序结构和执行路径进行调整、或向程序中添加不透明谓词等方法增加程序的复杂度,增加反编译程序的难度。尽管控制流混淆技术能够为应用程序提供更强的安全保障,但由于需要插入大量的调用和返回指令,会产生很大的开销,不易于实践。
技术实现思路
有鉴于此,本申请实施例提供了一种渐进控制流混淆方法、电子设备及介质,以便于在混淆复杂程度和计算开销之间取得平衡。第一方面,本申请实施例提供了一种面向安卓应用程序的渐进控制流混淆方法,包括:获取目标应用程序的smali文件;将所述smali文件中的各个函数拆分成可执行的逻辑块;确定各个逻辑块的混淆级别,并根据混淆级别将各个逻辑块划分为多个集合;按照混淆级别从高到低的顺序从所述多 ...
【技术保护点】
1.一种面向安卓应用程序的渐进控制流混淆方法,其特征在于,包括:/n获取目标应用程序的smali文件;/n将所述smali文件中的各个函数拆分成可执行的逻辑块;/n确定各个逻辑块的混淆级别,并根据混淆级别将所有逻辑块划分为多个集合;/n按照混淆级别从高到低的顺序从所述多个集合中选择部分集合,对选中的集合中的逻辑块进行混淆;/n判断当前混淆后的代码是否达到期望的复杂度,如果没有达到,则对当前混淆后的代码进行进一步混淆,直到达到期望的复杂度。/n
【技术特征摘要】
1.一种面向安卓应用程序的渐进控制流混淆方法,其特征在于,包括:
获取目标应用程序的smali文件;
将所述smali文件中的各个函数拆分成可执行的逻辑块;
确定各个逻辑块的混淆级别,并根据混淆级别将所有逻辑块划分为多个集合;
按照混淆级别从高到低的顺序从所述多个集合中选择部分集合,对选中的集合中的逻辑块进行混淆;
判断当前混淆后的代码是否达到期望的复杂度,如果没有达到,则对当前混淆后的代码进行进一步混淆,直到达到期望的复杂度。
2.根据权利要求1所述的方法,其特征在于,所述获取目标应用程序的smali代码,包括:
将目标应用程序的apk文件解压,获取对应的classes.dex文件;
使用apktool将classes.dex文件反编译成smali文件。
3.根据权利要求1所述的方法,其特征在于,所述确定各个逻辑块的混淆级别,包括:
根据每个逻辑块的长度和/或安全级别,确定该逻辑块的混淆级别。
4.根据权利要求1所述的方法,其特征在于,所述根据混淆级别将所有逻辑块划分为多个集合,包括:
将混淆级别处于同一范围的逻辑块,划分至同一个集合。
5.根据权利要求1所述的方法,其特征在...
【专利技术属性】
技术研发人员:刘茜,
申请(专利权)人:航天信息股份有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。