一种程序代码保护方法和装置制造方法及图纸

技术编号:31234248 阅读:16 留言:0更新日期:2021-12-08 10:14
本发明专利技术的实施方式提供了一种程序代码保护方法和装置。该包括程序代码保护方法,包括:针对DEX文件中包含的每一函数,如果判断出该函数对应的函数代码指令需要加密,则获取所述函数的结构信息,所述结构信息中包含有函数代码指令及其访问标识;修改所述访问标识为预设值;并抽取所述函数对应的函数代码指令进行加密处理。对于判断出的DEX文件中包含的需要加密的函数,根据其结构信息中包含的访问标识和函数代码指令,修改访问标识为预设值,并将函数代码指令进行加密,而无需对整个DEX文件进行加密,从而能够节省系统处理资源,提高了DEX文件加密效率,为用户带来了更好的体验。此外,本发明专利技术的实施方式提供了一种程序代码保护装置。置。置。

【技术实现步骤摘要】
一种程序代码保护方法和装置
[0001]本申请为2017年6月6日申请的,申请号为“201710419286.0”,名称为“一种程序代码保护方法和装置”的分案申请。


[0002]本专利技术的实施方式涉及软件开发
,更具体地,本专利技术的实施方式涉及一种程序代码保护方法和装置。

技术介绍

[0003]本部分旨在为权利要求书中陈述的本专利技术的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
[0004]APP是Application(应用)的简称,通常是指移动设备(包括平板电脑、手机和其他移动设备)上的第三方开发的应用程序。DEX文件是Android平台上(Dalvik虚拟机)的可执行文件,相当于Windows平台中的exe文件,每个Apk(AndroidPackage,Android开发包)安装包中都有DEX文件,其由Java语言编写而成,其包含了APP的全部操作指令以及运行时所需的数据。DEX文件可以通过第三方逆向分析工具查看其Java源码,即通过反编译DEX文件可以直接看到Java源码,因此,越来越多的App(包括恶意病毒App)都使用了加固技术以防止App被轻易反编译。
[0005]现有技术中,通常采用以下两种方法对DEX文件进行加固,一种是对源DEX进行加密,并把加密后的文件打包存储到APK的某个目录下(加壳),这样,在APP运行时,外壳DEX首先启动,然后将加密文件解密,待解密出源DEX后再动态加载到内存运行源DEX。另外一种是将源DEX和外壳DEX混合处理成一个新DEX,在APP运行时,外壳DEX首先启动,然后将包含在新DEX里的源DEX解密出来,最后动态加载运行源DEX。

技术实现思路

[0006]但是,上述第一种方案中,由于需要加载加密文件以及解密和动态加载加密后的源DEX,需要消耗系统较多的处理资源;而在上述第二种方案中,其减少了DEX文件内存加载,在一定程度上降低了系统资源开销,但是,其在加密过程中,仍然需要对整个DEX文件进行加密,同样增加了系统处理资源的开销。
[0007]为此,非常需要一种改进的函数代码指令保护方法,以提高函数代码指令保护的安全性。
[0008]在本上下文中,本专利技术的实施方式期望提供一种程序代码保护方法和装置。
[0009]在本专利技术实施方式的第一方面中,提供了一种程序代码保护方法,包括:
[0010]针对DEX文件中包含的每一函数,如果判断出该函数对应的函数代码指令需要加密,则获取所述函数的结构信息,所述结构信息中包含有函数代码指令及其访问标识;
[0011]修改所述访问标识为预设值;并
[0012]抽取所述函数对应的函数代码指令进行加密处理。
[0013]优选地,针对DEX文件中包含的每一函数,按照以下流程判断该函数对应的函数代码指令是否需要加密:
[0014]针对DEX文件中包含的每一函数,判断该函数是否存在于预先存储的白名单中;
[0015]如果存在,则确定该函数对应的函数代码指令需要加密;
[0016]如果不存在,则确定该函数对应的函数代码指令不需要加密。
[0017]优选地,所述函数的结构信息中还包括指令偏移信息;以及
[0018]抽取所述函数对应的函数代码指令进行加密处理,具体包括:
[0019]根据所述指令偏移信息确定所述函数对应的函数代码指令的起始位置和终止位置;
[0020]抽取所述开始位置与终止位置之间包含的函数代码指令进行加密处理。
[0021]可选地,本专利技术实施例提供的程序代码保护方法,还包括:
[0022]存储加密后的函数代码指令;并
[0023]记录加密后的函数代码指令的存储位置信息。
[0024]可选地,本专利技术实施例提供的程序代码保护方法,还包括:
[0025]在执行所述DEX文件时,根据所述存储位置信息从相应的存储位置获取加密后的函数代码指令进行解密;并
[0026]执行解密后的函数代码指令。
[0027]可选地,本专利技术实施例提供的程序代码保护方法,还包括:
[0028]在执行所述DEX文件时,根据所述存储位置信息从相应的存储位置获取加密后的函数代码指令进行解密;并
[0029]记录系统为解密后的函数代码指令所分配的内存偏移信息;
[0030]修改所述函数的结构信息中包含的指令偏移信息为分配的内存偏移信息。
[0031]在本专利技术实施方式的第二方面中,提供了一种程序代码保护装置,包括:
[0032]第一获取单元,用于针对DEX文件中包含的每一函数,如果判断出该函数对应的函数代码指令需要加密,则获取所述函数的结构信息,所述结构信息中包含有函数代码指令及其访问标识;
[0033]第一修改单元,用于修改所述访问标识为预设值;
[0034]加密单元,用于抽取所述函数对应的函数代码指令进行加密处理。
[0035]可选地,本专利技术实施例提供的程序代码保护装置,还包括:
[0036]判断单元,用于针对DEX文件中包含的每一函数,判断该函数是否存在于预先存储的白名单中;如果存在,则确定该函数对应的函数代码指令需要加密;如果不存在,则确定该函数对应的函数代码指令不需要加密。
[0037]优选地,所述文件结构信息中还包括指令偏移信息;以及
[0038]所述加密单元,具体用于根据所述指令偏移信息确定所述访问标识对应的函数代码指令的起始位置和终止位置;抽取所述开始位置与终止位置之间包含的函数代码指令进行加密处理。
[0039]可选地,本专利技术实施例提供的程序代码保护装置,还包括:
[0040]存储单元,用于存储加密后的函数代码指令;
[0041]第一记录单元,用于记录加密后的函数代码指令的存储位置信息。
[0042]可选地,本专利技术实施例提供的程序代码保护装置,还包括:
[0043]第二获取单元,用于在执行所述DEX文件时,根据所述存储位置信息从相应的存储位置获取加密后的函数代码指令进行解密;
[0044]执行单元,用于执行解密后的函数代码指令。
[0045]可选地,本专利技术实施例提供的程序代码保护装置,还包括:
[0046]第三获取单元,用于在执行所述DEX文件时,根据所述存储位置信息从相应的存储位置获取加密后的函数代码指令进行解密;
[0047]第二记录单元,用于记录为解密后的函数代码指令所分配的内存偏移信息;
[0048]第二修改单元,用于修改所述文件结构信息中包含的指令偏移信息为分配的内存偏移信息。
[0049]在本专利技术实施方式的第三方面中,提供了一种程序代码保护装置,例如,可以包括存储器和处理器,其中,处理器可以用于读取存储器中的程序,执行下列过程:针对DEX文件中包含的每一函数,如果判断出该函数对应的函数代码指令需要加密,则获取所述函数的结构信息,所述结构信息中包含有函数代码指令及其访问标识;修改所述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种程序代码保护方法,其特征在于,包括:针对DEX文件中包含的每一函数,如果判断出该函数对应的函数代码指令需要加密,则获取所述函数的结构信息,所述结构信息中包含有函数代码指令、访问标识及其指令偏移信息;修改所述访问标识为预设值;并抽取所述函数对应的函数代码指令进行加密处理;存储加密后的函数代码指令;并记录加密后的函数代码指令的存储位置信息;在执行所述DEX文件时,根据所述存储位置信息从相应的存储位置获取加密后的函数代码指令进行解密;并记录系统为解密后的函数代码指令所分配的内存偏移信息;修改所述函数的结构信息中包含的指令偏移信息为分配的内存偏移信息,以便根据所述指令偏移信息获取解密后的函数代码指令并执行;其中,针对DEX文件中包含的每一函数,按照以下流程判断该函数对应的函数代码指令是否需要加密,包括:针对DEX文件中包含的每一函数,判断该函数是否存在于预先存储的白名单中;如果存在,则确定该函数对应的函数代码指令需要加密;如果不存在,则确定该函数对应的函数代码指令不需要加密。2.根据权利要求1所述的方法,其特征在于,抽取所述函数对应的函数代码指令进行加密处理,具体包括:根据所述指令偏移信息确定所述函数对应的函数代码指令的起始位置和终止位置;抽取所述开始位置与终止位置之间包含的函数代码指令进行加密处理。3.根据权利要求1所述的方法,其特征在于,还包括:在执行所述DEX文件时,根据所述存储位置信息从相应的存储位置获取加密后的函数代码指令进行解密;并执行解密后的函数代码指令。4.一种程序代码保护装置,其特征在于,包括:第一获取单元,用于针对DEX文件中包含的每一函数,如果判断出该函数对应的函数代码指令需要加密,则获取所述函数的结构信息,所述结构信息中包含有函数代码指令、访问标识及其指令偏移...

【专利技术属性】
技术研发人员:朱星星尹彬彬钟亚平卓辉
申请(专利权)人:杭州网易智企科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1