一种共享目标文件的保护方法及装置的制造方法

文档序号:9376152阅读:186来源:国知局
一种共享目标文件的保护方法及装置的制造方法【
技术领域
】[0001]本发明涉及通信
技术领域
,具体涉及数据安全
技术领域
,尤其涉及一种共享目标文件的保护方法及装置。【
背景技术
】[0002]每个Android安装包(AndroidPackage,APK)文件中都包括有共享目标文件(Sharedobjectfile,SO),Android中的SO文件类似于Windows中的动态链接库文件(DynamicLinkLibrary,DLL),其所包含的函数本身不会被当作是Android程序的一部分,而是可以根据程序的需要进行加载运行。对于一些安全要求高的Android应用程序(比如手机银行客户端等),通常使用SO文件来完成后端的核心动作,因此需要SO文件具备很高的安全性。[0003]现有技术中为了提高共享目标文件的安全性,会对共享目标文件进行保护处理,通常采取的保护方法包括:在开发阶段进行加密处理或使用软件开发工具包的形式进行二次包裹等。但是,这些保护方法需要用户修改源码或程序的核心逻辑,无法实现快速的加固,难以应用到大众用户的通用保护层面。【
发明内容】[0004]有鉴于此,本发明实施例提供一种共享目标文件的保护方法及装置,以实现对共享目标文件的快速加固。[0005]一方面,本发明实施例提供了一种共享目标文件的保护方法,该方法包括:[0006]获取共享目标文件的程序头表,所述程序头表中包含段描述信息;[0007]根据所述段描述信息,获取需要加密的原代码段;[0008]将所述原代码段进行加密处理,得到加密代码段和加密描述信息;[0009]根据所述加密代码段、所述加密描述信息以及所述共享目标文件中除所述原代码段以外的其他数据,构建受保护的共享目标文件。[0010]另一方面,本发明实施例提供了一种共享目标文件的保护装置,该装置包括:[0011]表获取模块,用于获取共享目标文件的程序头表,所述程序头表中包含段描述信息;[0012]段获取模块,用于根据所述表获取模块得到的段描述信息,获取需要加密的原代码段;[0013]加密模块,用于将所述段获取模块得到的原代码段进行加密处理,得到加密代码段和加密描述信息;[0014]构建模块,用于根据所述加密模块得到的加密代码段、加密描述信息以及所述共享目标文件中除所述原代码段以外的其他数据,构建受保护的共享目标文件。[0015]本发明实施例提出的一种共享目标文件的保护方法及装置,将共享目标文件中的原代码段进行加密处理,并根据加密后得到的加密代码段和加密描述信息来构建受保护的共享目标文件,该方法可以在不修改程序的源码或核心逻辑的情况下,实现对共享目标文件的保护,提高了共享目标文件对抗静态逆向破解的能力。【附图说明】[0016]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:[0017]图1是本发明的一个实施例提供的一种共享目标文件的保护方法流程图;[0018]图2是本发明的一个实施例提供的另一种共享目标文件的保护方法流程图;[0019]图3是本发明的一个实施例提供的又一种共享目标文件的保护方法流程图;[0020]图4是本发明的一个实施例提供的一种共享目标文件的保护装置的组成框图;[0021]图5是本发明的一个实施例提供的另一种共享目标文件的保护装置的组成框图;[0022]图6是本发明的一个实施例提供的又一种共享目标文件的保护装置的组成框图。【具体实施方式】[0023]下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。[0024]本发明的具体实施例提供了一种共享目标文件的具体保护方法,如图1所示,该方法在执行时,包括如下步骤:[0025]101、获取共享目标文件的程序头表,所述程序头表中包含段描述信息。[0026]其中,上述共享目标文件即SO文件的格式符合ELF(ExecutableandLinkableFormat,可执行连接格式)规范,而一个标准的ELF文件在运行时,通常可以划分为以下几个部分,包括:ELF文件头(ELFHeader)、程序头表(Programheadertable)、动态链接信息以及段(Segment)等内容。[0027]在获取上述共享目标文件的程序头表时,可以根据程序头表在共享目标文件中的偏移量,定位并获取到所述程序头表。在所述程序头表中包含有段描述信息,所述段描述信息用于记载文件中所包含的段的数目,段的位置以及用途等信息。根据段的用途,可以将ELF文件中的段大致分为两类:代码段和数据段,其中,代码段中主要存放有文件运行时需要执行的具体代码,数据段中主要存放有代码执行过程中需要使用的变量以及一些注释信息等数据。[0028]102、根据所述段描述信息,获取需要加密的原代码段。[0029]具体地,在根据所述段描述信息获取需要加密的原代码段时,可以根据所述段描述信息中关于段用途的描述信息,判断出上述共享目标文件中哪些段是代码段,哪些段是数据段。由于加密的主要目的是隐藏程序中的原始执行代码,因此,可以将所述共享目标文件的代码段作为需要加密的原代码段。[0030]103、将所述原代码段进行加密处理,得到加密代码段和加密描述信息。[0031]具体地,在将上述原代码段进行加密处理时,可以利用常用的数据加密算法,例如AES(AdvancedEncrypt1nStandard,高级加密标准)、MD5(MessageDigestAlgorithm5,消息摘要算法第五版)及DES(DataEncrypt1nStandard,美国数据加密标准)等,对所述原代码段进行数据加密,即对原来的明文代码数据进行算法处理,使得加密处理后的所述原代码段成为不可读的代码,即加密代码段。并且,在上述加密处理完成后,还可以得到加密描述信息,其用于记录加密代码段的存放位置和大小等信息,以便在解密时使用。[0032]104、根据所述加密代码段、所述加密描述信息以及所述共享目标文件中除所述原代码段以外的其他数据,构建受保护的共享目标文件。[0033]具体地,在根据上述加密代码段、上述加密描述信息以及上述共享目标文件中除所述原代码段以外的其他数据,构建受保护的共享目标文件时,可以将共享目标文件中的原代码段替换为所述加密代码段和所述加密描述信息,并保持所述共享目标文件中除所述原代码段以外的其他数据不变,然后修改各数据在文件中的偏移量,这样就可以得到受保护的共享目标文件。[0034]在本实施例的一个优选实施方式中,在构建受保护的共享目标文件时,还可以首先根据上述共享目标文件的平台类型重新构建一个空的共享目标文件,其中,所述平台是指Android软件可以运行在其上的指令集架构,包括:ARM(AdvancedRISCMachines)、X86和MIPS(Mill1nInstruct1nsPerSecond),其中ARM和MIPS均是基于精简指令集机器处理器的架构,而X86是由Intel公司推出的一种基于复杂指令集的架构,然后按照ELF文件的规范,将上述加密代码段、上述加密描述信息以及所述共享目标文件中除所述原代码段以外的其他数据,写入所述空的共享目标文件中的相应位置就得到了受保护的共享目标文件,从而使得本发明实施例提供的共享目标文件的保当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1