一种隐藏SO文件的方法及装置与流程

文档序号:11156223
本发明涉及文件加密及保护
技术领域
:,具体而言,涉及一种隐藏SO文件的方法及装置。
背景技术
::在安卓系统中,SO文件是应用程序包括的动态链接库文件,应用程序通过调用这些SO文件实现自身的功能。应用程序包括多个SO文件,其中包括一些通用的普通SO文件和实现应用程序核心功能的核心SO文件。在发布应用程序时,通常将应用程序包括的多个SO文件打包压缩在应用程序的安装包中。当前,黑客或竞争对手获取到应用程序的安装包,对安装包解压缩即可得到应用程序包括的所有SO文件,但是实现核心功能的核心SO文件通常都属于商业秘密,黑客或竞争对手获得核心SO文件会损害应用程序开发方的利益。因此需要对实现核心功能的核心SO文件进行保护,但是目前还没有一种有效保护核心SO文件的方案。技术实现要素:有鉴于此,本发明实施例的目的在于提供一种隐藏SO文件的方法及装置,将待隐藏SO文件写入宿主SO文件中,实现对待隐藏SO文件的隐藏,能够有效保护作为商业秘密的SO文件。第一方面,本发明实施例提供了一种隐藏SO文件的方法,所述方法包括:获取应用程序对应的宿主SO文件和待隐藏SO文件;在所述宿主SO文件中创建一个新的节;将所述待隐藏SO文件写入所述新的节中;将写入操作后的所述宿主SO文件打包至所述应用程序的安装包中。结合第一方面,本发明实施例提供了上述第一方面的第一种可能的实现方式,其中,所述在所述宿主SO文件中创建一个新的节,包括:获取所述宿主SO文件包括的节表;在所述节表中增加一个节头信息;根据所述节头信息,在所述宿主SO文件中创建一个新的节。结合第一方面的第一种可能的实现方式,本发明实施例提供了上述第一方面的第二种可能的实现方式,其中,所述在所述节表中增加一个节头信息,包括:根据所述待隐藏SO文件,确定节大小属性;根据预设增加位置和所述节表包括的每个节头信息,确定节偏移属性;将所述节大小属性和所述节偏移属性作为节头信息添加在所述节表中。结合第一方面的第二种可能的实现方式,本发明实施例提供了上述第一方面的第三种可能的实现方式,其中,所述根据所述节头信息,在所述宿主SO文件中创建一个新的节,包括:在所述宿主SO文件中定位出所述节偏移属性所指示的字节偏移位置;在所述字节偏移位置处创建大小为所述节大小属性的文件空间,得到一个新的节。结合第一方面,本发明实施例提供了上述第一方面的第四种可能的实现方式,其中,所述方法还包括:在根据所述安装包运行所述应用程序时,从所述安装包中读取所述宿主SO文件;获取所述宿主SO文件的节表;根据所述节表包括的节头信息,从所述宿主SO文件中读取出所述待隐藏SO文件,将所述待隐藏SO文件恢复写入内存中。结合第一方面,本发明实施例提供了上述第一方面的第五种可能的实现方式,其中,所述获取应用程序对应的宿主SO文件和待隐藏SO文件,包括:接收用户提交的应用程序对应的宿主SO文件和待隐藏SO文件;或者,获取应用程序包括的每个SO文件,根据所述每个SO文件包括的重要性标识,从所述每个SO文件中确定出宿主SO文件和待隐藏SO文件。第二方面,本发明实施例提供了一种隐藏SO文件的装置,所述装置包括:获取模块,用于获取应用程序对应的宿主SO文件和待隐藏SO文件;创建模块,用于在所述宿主SO文件中创建一个新的节;写入模块,用于将所述待隐藏SO文件写入所述新的节中;打包模块,用于将写入操作后的所述宿主SO文件打包至所述应用程序的安装包中。结合第二方面,本发明实施例提供了上述第二方面的第一种可能的实现方式,其中,所述创建模块包括:获取单元,用于获取所述宿主SO文件包括的节表;增加单元,用于在所述节表中增加一个节头信息;创建单元,用于根据所述节头信息,在所述宿主SO文件中创建一个新的节。结合第二方面的第一种可能的实现方式,本发明实施例提供了上述第二方面的第二种可能的实现方式,其中,所述增加单元包括确定子单元和添加子单元;所述创建单元包括定位子单元和创建子单元;所述确定子单元,用于根据所述待隐藏SO文件,确定节大小属性;根据预设增加位置和所述节表包括的每个节头信息,确定节偏移属性;所述添加子单元,用于将所述节大小属性和所述节偏移属性作为节头信息添加在所述节表中;所述定位子单元,用于在所述宿主SO文件中定位出所述节偏移属性所指示的字节偏移位置;所述创建子单元,用于在所述字节偏移位置处创建大小为所述节大小属性的文件空间,得到一个新的节。结合第二方面,本发明实施例提供了上述第二方面的第三种可能的实现方式,其中,所述装置还包括:恢复写入模块,用于在根据所述安装包运行所述应用程序时,从所述安装包中读取所述宿主SO文件;获取所述宿主SO文件的节表;根据所述节表包括的节头信息,从所述宿主SO文件中读取出所述待隐藏SO文件,将所述待隐藏SO文件恢复写入内存中;所述获取模块,用于接收用户提交的应用程序对应的宿主SO文件和待隐藏SO文件;或者,用于获取应用程序包括的每个SO文件,根据所述每个SO文件包括的重要性标识,从所述每个SO文件中确定出宿主SO文件和待隐藏SO文件。在本发明实施例提供的方法及装置中,获取应用程序对应的宿主SO文件和待隐藏SO文件;在宿主SO文件中创建一个新的节;将待隐藏SO文件写入新的节中;将写入操作后的宿主SO文件打包至应用程序的安装包中。本发明将待隐藏SO文件写入宿主SO文件中,实现对待隐藏SO文件的隐藏,如此从应用程序的安装包中无法直接得到待隐藏SO文件,提高了待隐藏SO文件的安全性,能够有效保护作为商业秘密的SO文件。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1示出了本发明实施例1所提供的一种隐藏SO文件的方法流程图;图2示出了本发明实施例1所提供的一种宿主SO文件的结构示意图;图3示出了本发明实施例2所提供的一种隐藏SO文件的结构示意图;图4示出了本发明实施例2所提供的另一种隐藏SO文件的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。考虑到相关技术中直接将实现应用程序核心功能的SO文件打包在应用程序的安装包中,使得黑客或竞争对手能够很容易得到实现核心功能的SO文件。基于此,本发明实施例提供了一种隐藏SO文件的方法及装置,下面通过实施例进行描述。实施例1本发明实施例提供了一种隐藏SO文件的方法,本发明实施例的执行主体为终端,在发布应用程序之前,通过本发明实施例提供的方法对实现核心功能的SO文件进行隐藏,以提高实现核心功能的SO文件的安全性。参见图1,该方法具体包括:步骤101:获取应用程序对应的宿主SO文件和待隐藏SO文件。SO文件又称ELF(ExecutableandLinkableFormat,可执行与可链接格式)文件,可执行与可链接格式是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储的标准文件格式。应用程序中包括多个可执行与可链接格式的SO文件,每个SO文件的重要程度不同,有的SO文件为大部分应用程序中都包含的通用的SO文件,这些通用的SO文件的重要性很低。而有些SO文件是与应用程序的核心功能相关的,是应用程序区别于其他应用程序的关键所在,这些SO文件的重要性很高,通常被视为商业秘密。上述宿主SO文件通常为应用程序中重要性很低的通用SO文件,待隐藏SO文件为应用程序中重要性很高的SO文件,待隐藏SO文件可以为涉及商业秘密的SO文件。SO文件的重要性可以由开发应用程序的用户自行决定,用户从应用程序包括的所有SO文件中挑选出重要性最差的SO文件作为宿主SO文件,以及挑选出重要性最高的SO文件作为待隐藏SO文件。用户将挑选出的宿主SO文件和待隐藏SO文件上传给终端。终端接收用户提交的应用程序对应的宿主SO文件和待隐藏SO文件。在本发明实施例中,用户在开发应用程序时,也可以在应用程序包括的每个SO文件中写入重要性标识,可以通过数值或字母来表示SO文件的重要性标识。例如,通过数值序列1、2、……、n来依次表示应用程序包括的每个SO文件的重要性标识,重要性标识的数值越大,则SO文件的重要性越高。也可以通过字母序列A、B、……、Z来依次表示应用程序包括的每个SO文件的重要性标识,重要性标识的字母在字母表中的位置越靠后,则SO文件的重要性越高。用户将应用程序包括的所有SO文件上传给终端。终端获取应用程序包括的每个SO文件,根据每个SO文件包括的重要性标识,从每个SO文件中确定出宿主SO文件和待隐藏SO文件。本发明实施例中,终端获取应用程序包括的每个SO文件的重要性标识,将重要性标识所表示的重要性最差的SO文件确定为宿主SO文件,将重要性标识所表示的重要性最高的SO文件确定为待隐藏SO文件。终端获取到宿主SO文件和待隐藏SO文件后,通过如下步骤102-104的操作将待隐藏SO文件隐藏在宿主SO文件中。步骤102:在宿主SO文件中创建一个新的节。SO文件是由文件头信息、程序头表(ProgramHeaderTable)、节表和多个节组成。SO文件包括的节为一段文件空间,每个节都是一个独立的数据空间,用于存放文件数据。SO文件包括的节有多种类型,如代码节、数据节及符号节等。上述节表中包括多个节头信息,节头信息与SO文件包括的节一一对应,节头信息中存储其对应的节的属性信息。属性信息包括节的名称、节大小属性、节的数据属性及节偏移属性等。节大小属性表示节的空间大小。节的数据属性表示节中存储的数据的读取属性,即存储的数据为只读数据还是可编辑数据。节偏移属性表示节在SO文件中的字节偏移位置,根据节偏移属性可以在SO文件中定位出节的开始位置。本发明实施例中,获取到宿主SO文件后,获取宿主SO文件包括的节表;在节表中增加一个节头信息;根据该节头信息,在宿主SO文件中创建一个新的节。在本发明实施例中,通过如下操作在节表中增加节头信息,包括:根据待隐藏SO文件,确定节大小属性;根据预设增加位置和节表包括的每个节头信息,确定节偏移属性;将该节大小属性和节偏移属性作为节头信息添加在节表中。由于在宿主SO文件中新增加的节用于盛放待隐藏SO文件,所以本发明实施例中,获取待隐藏SO文件的数据大小,将待隐藏SO文件的数据大小确定为新增加的节的节大小属性。上述预设增加位置为预先设置的新增加的节在宿主SO文件中的位置,如可以预先设置新增加的节在宿主SO文件中第一个节之前,或者预先设置新增加的节在宿主SO文件中最后一个节之后,或者预先设置新增加的节在宿主SO文件中哪两个节之间。在本发明实施例中,节头信息中存有节偏移属性和节大小属性。根据节偏移属性可以得知节在SO文件中的开始位置,根据该开始位置和节大小属性,可以获得节在SO文件中的结束位置。根据每个节头信息中的节偏移属性和节大小属性,可以得知SO文件中每个节的开始位置及结束位置。获得SO文件中每个节的开始位置及结束位置后,再根据预设增加位置即可确定出新增加的节在SO文件中的字节偏移位置,即确定出了新增加的节的节偏移属性。本发明实施例中,通过上述方式将确定出的节大小属性和节偏移属性作为新的节头信息添加到节表中后,还在该新的节头信息中增加节的名称及数据属性等属性信息。节的名称可以为待隐藏SO文件的名称,也可以为终端随机生成的用于唯一标识待隐藏SO文件的字符序列等。由于新增加的节是用来盛放待隐藏SO文件的,所以只允许从新增加的节中读取数据,不允许修改新增加的节中的数据,因此本发明实施例中设置新增加的节的数据属性为只读数据属性。通过上述方式在宿主SO文件的节表中增加一个新的节头信息之后,在该新增加的节头信息中的节偏移属性所指示的字节偏移位置处,创建一个文件空间,该文件空间的大小为该新增加的节头信息中的节大小属性所指示的大小,该文件空间即为在宿主SO文件中创建的新的节。步骤103:将待隐藏SO文件写入新的节中。通过读取文件的形式读取整个待隐藏SO文件,并将整个待隐藏SO文件的内容写入到宿主SO文件新增加的节中。将待隐藏SO文件写入新增加的节后,即实现了将待隐藏SO文件隐藏在宿主SO文件中,相当于在宿主SO文件中捆绑了待隐藏SO文件。然后将写入待隐藏SO文件的宿主SO文件保存到磁盘中。如图2所示的宿主SO文件的结构示意图,在写入待隐藏SO文件后,宿主SO文件中包括文件头信息、节表、节1、节2和节3。其中,节3为新增加的节,节3中写入了待隐藏SO文件。步骤104:将写入操作后的宿主SO文件打包至应用程序的安装包中。从磁盘中获取写入待隐藏SO文件的宿主SO文件,将该宿主SO文件与应用程序包括的其他SO文件一起打包在应用程序的安装包中。在应用程序发布后,用户的终端获得该应用程序的安装包,在根据安装包运行应用程序时,从安装包中读取宿主SO文件;获取宿主SO文件的节表;根据节表包括的节头信息,从宿主SO文件中读取出待隐藏SO文件,将待隐藏SO文件写入内存中。终端从节表包括的每个节头信息中的名称属性,确定出待隐藏SO文件所在的节对应的节头信息,根据确定出的节头信息括的节偏移属性,从宿主SO文件中定位出待隐藏SO文件所在的节,将定位出的节的数据部分全部读取出来并写入内存中,如此即恢复出了待隐藏SO文件。本发明实施例是以一个宿主SO文件和一个待隐藏SO文件为例进行说明的。本发明实施例还可以将多个待隐藏SO文件隐藏在一个宿主SO文件中,此时需在宿主SO文件中创建多个新的节,创建的节的数目与待隐藏SO文件的数目相同,按照本发明实施例提供的方法在创建的每个新的节中保存一个待隐藏SO文件。本发明实施例还可以将多个待隐藏SO文件隐藏在多个宿主SO文件中,每个宿主SO文件中隐藏一个或多个待隐藏SO文件。本发明实施例,在普通的SO文件中增加一个节,然后将需要隐藏的SO文件写入到普通的SO文件新增加的节中。然后在应用程序发布后,读取普通SO文件中新增加的节的数据,将读取的数据写入到终端中,并保存成一个新的SO文件,应用程序使用时可以去加载这个新的SO文件。这样在发布应用程序的安装包时,从安装包中打包的SO文件无法直接看到待隐藏SO文件,只有应用程序运行时,才会重新生成一个新的待隐藏SO文件来使用。如此提高了待隐藏SO文件的安全性,能够有效保护作为商业秘密的SO文件。在本发明实施例中,获取应用程序对应的宿主SO文件和待隐藏SO文件;在宿主SO文件中创建一个新的节;将待隐藏SO文件写入新的节中;将写入操作后的宿主SO文件打包至应用程序的安装包中。本发明将待隐藏SO文件写入宿主SO文件中,实现对待隐藏SO文件的隐藏,如此从应用程序的安装包中无法直接得到待隐藏SO文件,提高了待隐藏SO文件的安全性,能够有效保护作为商业秘密的SO文件。实施例2参见图3,本发明实施例提供了一种隐藏SO文件的装置,该装置用于执行上述实施例1提供的隐藏SO文件的方法,该装置具体包括:获取模块201,用于获取应用程序对应的宿主SO文件和待隐藏SO文件;创建模块202,用于在宿主SO文件中创建一个新的节;写入模块203,用于将待隐藏SO文件写入新的节中;打包模块204,用于将写入操作后的宿主SO文件打包至应用程序的安装包中。如图4所示,上述创建模块202通过如下获取单元2021、增加单元2022和创建单元2023在宿主SO文件中创建一个新的节。获取单元2021,用于获取宿主SO文件包括的节表;增加单元2022,用于在节表中增加一个节头信息;创建单元2023,用于根据节头信息,在宿主SO文件中创建一个新的节。其中,增加单元2022通过确定子单元和添加子单元在节表中增加一个节头信息。确定子单元,用于根据待隐藏SO文件,确定节大小属性;根据预设增加位置和节表包括的每个节头信息,确定节偏移属性;添加子单元,用于将节大小属性和节偏移属性作为节头信息添加在节表中。创建单元2023通过定位子单元和创建子单元在宿主SO文件中创建一个新的节。定位子单元,用于在宿主SO文件中定位出节偏移属性所指示的字节偏移位置;创建子单元,用于在字节偏移位置处创建大小为节大小属性的文件空间,得到一个新的节。如图4所示,该装置还包括:恢复写入模块205,用于在根据安装包运行应用程序时,从安装包中读取宿主SO文件;获取宿主SO文件的节表;根据节表包括的节头信息,从宿主SO文件中读取出待隐藏SO文件,将待隐藏SO文件恢复写入内存中。在本发明实施例中,获取模块201,用于接收用户提交的应用程序对应的宿主SO文件和待隐藏SO文件;或者,用于获取应用程序包括的每个SO文件,根据每个SO文件包括的重要性标识,从每个SO文件中确定出宿主SO文件和待隐藏SO文件。在本发明实施例中,获取应用程序对应的宿主SO文件和待隐藏SO文件;在宿主SO文件中创建一个新的节;将待隐藏SO文件写入新的节中;将写入操作后的宿主SO文件打包至应用程序的安装包中。本发明将待隐藏SO文件写入宿主SO文件中,实现对待隐藏SO文件的隐藏,如此从应用程序的安装包中无法直接得到待隐藏SO文件,提高了待隐藏SO文件的安全性,能够有效保护作为商业秘密的SO文件。本发明实施例所提供的隐藏SO文件的装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页1 2 3 当前第1页1 2 3 
再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1