CN107292132B - 用于安卓***的共享对象文件的加载方法与装置 - Google Patents
用于安卓***的共享对象文件的加载方法与装置 Download PDFInfo
- Publication number
- CN107292132B CN107292132B CN201610192553.0A CN201610192553A CN107292132B CN 107292132 B CN107292132 B CN 107292132B CN 201610192553 A CN201610192553 A CN 201610192553A CN 107292132 B CN107292132 B CN 107292132B
- Authority
- CN
- China
- Prior art keywords
- file
- shared object
- parameter
- object file
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000011068 loading method Methods 0.000 title claims abstract description 123
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000002955 isolation Methods 0.000 claims abstract description 86
- 238000007781 pre-processing Methods 0.000 claims abstract description 40
- 238000004458 analytical method Methods 0.000 claims abstract description 16
- 238000004806 packaging method and process Methods 0.000 claims abstract description 11
- 230000006870 function Effects 0.000 claims description 137
- 230000015654 memory Effects 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 16
- 230000004048 modification Effects 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 5
- 238000009434 installation Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000005336 cracking Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000002787 reinforcement Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000009517 secondary packaging Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种用于安卓***的共享对象文件的加载方法与装置。所述方法的一具体实施方式包括:响应于接收到终端发送的预处理请求,获取共享对象文件的第一预定位置的第一原始参数以及第二预定位置的第二原始参数;修改共享对象文件的第一原始参数与第二原始参数为自定义参数;生成用于隔离共享对象文件的隔离文件,隔离文件包括加载函数,加载函数包括用于解析自定义参数的解析函数;将隔离文件的预定位置的参数设置为第一原始参数;将包含第一原始参数的隔离文件及包含自定义参数的共享对象文件打包发送给终端,以使终端基于隔离文件及自定义参数对共享对象文件进行加载。该实施方式可以提高共享对象文件的安全等级。
Description
技术领域
本申请涉及计算机技术领域,具体涉及数据安全技术领域,尤其涉及用于安卓***的共享对象文件的加载方法与装置。
背景技术
随着互联网技术和终端设备的发展,安卓***由于其功能接口的开放性也得到了迅猛的发展,已经逐步成为移动终端最流行的操作***。但同时,开放的功能接口也为恶意软件提供了便利,针对安卓***的应用的反编译、逆向分析、二次打包等恶意行为也日益猖獗,给应用程序的开发者和使用者带来了非常严重的安全威胁。
为了应对恶意软件,大多数安卓应用会将其核心代码封装在共享对象(SharedObject,SO)文件中。但SO文件本身是标准的可执行链接格式(Executable and LinkableFormat,ELF)文件,可以被静态反编译软件等工具进行逆向分析。被逆向分析后的SO文件可以被二次打包,也就是说,应用程序仍然得不到保护。
发明内容
本申请的目的在于提出一种改进的用于安卓***的共享对象文件的加载方法与装置,来解决以上背景技术部分提到的技术问题。
一方面,本申请提供了一种用于安卓***的共享对象文件的加载方法,所述方法包括:响应于接收到终端发送的预处理请求,获取所述共享对象文件的第一预定位置的第一原始参数以及第二预定位置的第二原始参数;修改所述共享对象文件的所述第一原始参数与所述第二原始参数为自定义参数;生成用于隔离所述共享对象文件的隔离文件,所述隔离文件包括用于加载包含所述自定义参数的共享对象文件的加载函数,所述加载函数包括用于解析所述自定义参数的解析函数;将所述隔离文件的预定位置的参数设置为所述第一原始参数;将包含所述第一原始参数的隔离文件及包含所述自定义参数的共享对象文件打包发送给终端,以使所述终端基于所述隔离文件及所述自定义参数对所述共享对象文件进行加载。
第二方面,一种用于安卓***的共享对象文件的加载方法,所述方法包括向服务器发送预处理请求,以及接收服务器基于所述预处理请求返回的包括包含第一原始参数的隔离文件及包含自定义参数的共享对象文件的打包文件;加载所述隔离文件至内存,所述隔离文件包括用于加载包含自定义参数的共享对象文件的加载函数,所述加载函数包括用于解析所述包含自定义参数的共享对象文件的自定义参数为所述共享对象文件的原始参数的解析函数,其中,所述自定义参数是对所述原始参数经预定处理后生成的;运行所述加载函数,所述加载函数首先根据所述解析函数将所述自定义参数解析为所述原始参数;其次,所述加载函数根据所述原始参数加载所述共享对象文件至内存。
第三方面,本申请提供了一种用于安卓***的共享对象文件的加载装置,所述装置包括:获取模块,配置用于响应于接收到终端发送的预处理请求,获取所述共享对象文件的第一预定位置的第一原始参数以及第二预定位置的第二原始参数;配置用于修改所述共享对象文件的所述第一原始参数与所述第二原始参数为自定义参数;生成模块,配置用于生成用于隔离所述共享对象文件的隔离文件,所述隔离文件包括用于加载包含所述自定义参数的共享对象文件的加载函数,所述加载函数包括用于解析所述自定义参数的解析函数;设置模块,配置用于将所述隔离文件的预定位置的参数设置为所述第一原始参数。
第四方面,本申请提供了一种用于安卓***的共享对象文件的加载装置预处理请求模块,配置用于向服务器发送预处理请求,以及接收服务器基于所述预处理请求返回的包括包含第一原始参数的隔离文件及包含自定义参数的共享对象文件的打包文件;加载模块,配置用于加载所述包含第一原始参数的隔离文件至内存,所述隔离文件包括用于加载所述包含自定义参数的共享对象文件的加载函数,所述加载函数包括用于解析所述自定义参数为所述共享对象文件的原始参数的解析函数,其中,所述自定义参数是对所述原始参数预定处理后生成的;运行模块,配置用于运行所述加载函数,所述加载函数首先根据所述解析函数将所述自定义参数解析为所述原始参数;其次,所述加载函数根据所述原始参数加载所述共享对象文件至内存。
本申请提供的共享对象文件加载方法与装置,通过响应于接收到终端发送的预处理请求,获取所述共享对象文件的第一预定位置的第一原始参数以及第二预定位置的第二原始参数,接着修改所述共享对象文件的所述第一原始参数与所述第二原始参数为自定义参数,然后生成用于隔离所述共享对象文件的隔离文件,所述隔离文件包括用于加载包含所述自定义参数的共享对象文件的加载函数,所述加载函数包括用于解析所述自定义参数的解析函数,接着将所述隔离文件的预定位置的参数设置为所述第一原始参数,最后将包含所述第一原始参数的隔离文件及包含所述自定义参数的共享对象文件打包发送给终端,以使所述终端基于所述隔离文件及所述自定义参数对所述共享对象文件进行加载。可以将共享库文件由标准的可执行链接格式设置成非标准的可执行链接格式,使得静态反编译软件无法对共享库文件进行反编译及分析;同时使用隔离文件将该非标准的可执行链接格式的共享库文件进行隔离,进一步提高了共享文件的安全等级,实现了对基于安卓***的应用的加固保护。
附图说明
通过阅读参照以下附图所作的对非限制性实施例的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出了可以应用本申请实施例的示例性***架构;
图2是根据本申请的用于安卓***的共享对象文件的加载方法的一个实施例的示例性流程图;
图3是根据本申请的用于安卓***的共享对象文件的加载方法另一个实施例的示例性流程图;
图4是根据本申请的用于安卓***的共享对象文件的加载装置的一个实施例的示例性结构图;
图5根据本申请的用于安卓***的共享对象文件的加载装置的另一个实施例的示例性结构图;
图6示出了适于用来实现本申请实施例的各装置的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请实施例的示例性***架构100。
如图1所示,***架构100可以包括终端设备101、102、103、网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以方便终端设备101、102、103向服务器105上传对应用的预处理请求,终端设备101、102、103下载经服务器105预处理后的打包文件等。用户可以是应用的开发者,也可是应用的使用者。
终端设备101、102、103可以是具有数据处理功能的电子设备。终端设备101、102、103上可以安装有安卓操作***,以及基于安卓操作***开发的各种客户端应用,例如网页浏览器、邮箱客户端等以便将未预处理的共享对象文件上传至服务器105进行预处理。
终端设备101、102、103可以是支持网页浏览器以及各种应用安装于其上的各种电子设备,包括但不限于智能手机、智能手表、平板电脑、个人数字助理、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器。服务器105可以通过网络104连通其他服务器对接收到的共享对象文件进行预处理,并向终端设备101、102、103提供上传共享对象文件、下载共享对象文件等服务。
需要说明的是,本申请实施例所提供的用于安卓***的共享对象文件的加载方法可以由终端设备101、102、103执行,用于安卓***的共享对象文件的加载装置也通常设置于终端设备101、102、103中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
请参考图2,其示出了根据本申请的用于安卓***的共享对象文件的加载方法的一个实施例的示例性流程200。于安卓***的共享对象文件的加载方法,包括以下步骤:
步骤201,响应于接收到终端发送的预处理请求,获取共享对象文件的第一预定位置的第一原始参数以及第二预定位置的第二原始参数。
在本实施例中,用于安卓***的共享对象文件的加载方法运行于其上的电子设备(例如图1所示的服务器105)可以通过有线连接方式或者无线连接方式从用户终端(例如图1所示的终端设备101、102、103)接收预处理请求。在接收到的预处理请求中,包括应用的共享对象文件。具体而言,电子设备可以接收来自用户终端的一个应用安装包文件,该安装包文件中可以包含资源文件和共享对象文件。共享对象文件可以为可执行链接格式的文件,其扩展名为“.so”。在本实施例中,共享对象文件的格式包括文件头,程序头、区段头以及各区段。其中,文件头位于共享对象文件的最前面,包括文件类型、文件支持的处理器型号以及程序头和区段头开始的地址,即程序代码及区段内容的入口地址。程序头、区段头包括定位程序代码及各区段内容的偏移量。各区段分别存储类型相同的内容,例如存储代码的区段、存储被初始化数据的区段及存储未被初始化数据的区段等。
上述无线连接方式包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
在接收到用户终端的预处理请求之后,电子设备从安装包文件中找到共享对象文件。然后对共享对象文件利用各种处理方法进行处理。具体而言,电子设备首先获取上述共享对象文件的第一预定位置的第一原始参数以及第二预定位置的第二原始参数。
在本实施例中,第一预定位置可以为共享对象文件中任意指定的位置,例如第一预定位置可以为共享对象文件的扩展名。第一原始参数例如可以为共享对象文件的原始扩展名。
在本实施例中,第二预定位置可以为共享对象文件中任意指定的位置,例如,第二预定位置可以为共享对象文件中的存放代码的区段。第二原始参数可以为区段中的代码。
在本实施例的一些可选实现方式中,获取共享对象文件的第一预定位置的第一原始参数包括获取共享对象文件的文件头的原始参数以及共享对象文件的扩展名。也就是说,第一原始参数可以为共享对象文件的文件头的原始参数。
在本实施例的一些可选实现方式中,获取共享对象文件的第二预定位置的第二原始参数包括获取共享对象文件的区段头表与程序头表的原始参数。也就是说,第二原始参数可以为共享对象文件的区段头表与程序头表中的原始参数。
在本实施例的一些可选实现方式中,在获取共享对象文件的文件头的原始参数以及程序头表、区段头表的原始参数之前,对共享对象文件进行加壳。例如,可以利用常用的加壳工具对原始的共享对象文件进行加壳。使得恶意软件需要对可进行破解后才能分析共享对象文件的明文代码,增加了共享对象文件的安全等级。
步骤202,修改共享对象文件的第一原始参数与第二原始参数为自定义参数。
电子设备可以对在步骤201中得到的第一原始参数与第二原始参数利用各种加固方法进行处理。具体的,在本实施例中,可以将共享对象文件的第一原始参数与第二原始参数进行修改,得到自定义参数。
在本实施例的一些可选实现方式中,首先去掉共享对象文件的文件头的原始参数,然后对区段头表与程序头表的原始参数进行预定处理生成自定义参数。这里的预定处理例如可以为对区段头表与程序头表的原始参数使用各种加密算法进行加密。加密算法可以包括但不限于:高级加密标准(Advanced Encryption Standard,AES)算法、RSA加密算法、椭圆曲线密码编码(Elliptic Curves Cryptography,ECC)算法、迪菲-赫尔曼(Diffie-Hellman,DH)算法、安全散列算法(Secure Hash Algorithm,SHA)等。
将上述对区段头表与程序头表的原始参数进行预定处理得到的自定义参数作为上述去掉第一原始参数后的共享对象文件的文件头的参数。共享对象文件的文件头已经变成了自定义文件头,标准的安卓***的链接器无法加载包含自定义文件头的共享对象文件。
另外,在本实施例中,还可以对程序头表以及区段头表中的参数进行加密,使得恶意软件不能直接读取上述程序头表及区段头表中的内容,进一步起到了对共享对象文件的保护作用。
另外,可以将包含自定义参数的共享对象文件的扩展名修改后放入该应用安装包中的资源文件夹中,该资源文件夹例如可以为安装包中的“assets”文件夹。放入资源文件夹“assets”中的包含自定义文件头的共享对象文件的修改后的扩展名例如可以为“.txt”。
步骤203,生成用于隔离共享对象文件的隔离文件。
在本实施例中,为了进一步保护共享对象文件,在共享对象文件原来所处的位置处生成用于隔离共享对象文件的隔离文件。由于存放于assets资源文件中的文件不会被编译器编译到,可以在上述隔离文件中设置加载函数,在加载函数中指定路径对包含自定义参数的共享对象文件进行访问。
另外,加载函数包括用于解析自定义参数的解析函数。具体的,可以在对区段头表与程序头表的原始参数进行预定处理的过程中根据预定处理的各个步骤生成解析函数。解析函数为上述预定处理的反过程,可以将上述自定义参数解析为共享对象文件的程序头表及区段头表的原始参数。
加载函数可以根据由解析函数得到的共享对象文件的程序头表及区段头表的原始参数,得到程序代码段及数据段等的偏移量。并根据偏移量将程序代码及数据等读取到内存或缓存中。
步骤204,将隔离文件的预定位置的参数设置为第一原始参数。
为了使***加载器在加载共享对象文件时首先加载隔离文件,可以将未经预定处理的共享对象文件的文件头设置在隔离文件的最前面作为隔离文件的文件头。同时将隔离文件的扩展名修改为共享对象文件的原始扩展名(.so)。
在本实施例的一些可选实现方式中,在将未经预定处理的共享对象文件的文件头设置在隔离文件的最前面作为隔离文件的文件头之后,对隔离文件使用常用的加壳工具对其进行加壳。使得恶意软件在破解隔离文件时,首先需要对隔离文件加的壳进行破解,增加了破解隔离文件的难度。
步骤205,将包含第一原始参数的隔离文件及包含自定义参数的共享对象文件打包发送给终端,以使终端基于隔离文件及自定义参数对共享对象文件进行加载。
终端设备在加载应用安装包中的共享对象文件即共享库文件时,实际加载的是伪装成共享对象文件的隔离文件。再将隔离文件加载到内存后,隔离文件中的加载函数运行,加载函数将包含自定义参数的伪装成资源文件的共享对象文件读取到内存。
根据本申请上述实施例提供的方法,由于将共享对象文件的格式由标准的可执行链接格式设置成了自定义格式,使得静态反编译软件无法对共享对象文件进行编译分析。同时该方法还设置了用于隔离共享对象文件的隔离文件,进一步增加了共享对象文件的逆向破解难度。可以对基于安卓***的应用进行有效保护。
接下来请参考图3,其示出了根据本申请的用于安卓***的共享对象文件的加载方法另一个实施例的示例性流程300。该流程300包括以下步骤:
步骤301,向服务器发送预处理请求,以及接收服务器基于预处理请求返回的包括包含第一原始参数的隔离文件及包含自定义参数的共享对象文件的打包文件。
在本实施例中,用于安卓***的共享对象文件的加载方法运行于其上的电子设备(如图1所示的终端设备101、102、103)首先可以通过有线连接方式或者无线连接方式向服务器(如图1所示的服务器105)发送预处理请求。在发送的预处理请求中包括一个应用的共享对象文件。具体而言,电子设备可以向服务器发送一个应用安装包文件,该安装包文件中可以包含资源文件和共享对象文件。
服务器对共享对象文件进行预定处理,生成伪装成资源文件的共享对象文件以及伪装成共享对象文件的用于隔离伪装成资源文件的共享对象文件的隔离文件。其中,伪装成资源文件(例如“assets”文件夹中的文件)的共享对象文件包含自定义参数的文件头。隔离文件的文件头包含共享对象文件的原始文件头的所有参数。电子设备通过有线连接方式或者无线连接方式从服务器接收对共享对象文件进行预定处理后的应用安装包文件,其中经过预定处理后的应用安装包文件包括打包在一起的包含共享对象文件的原始文件头的隔离文件及包含自定义文件头的共享对象文件。
步骤302,加载隔离文件至内存。
在本实施例中,电子设备在步骤301中从服务器得到的隔离文件的格式为标准的共享对象文件的格式。
由于被保护的共享对象文件被伪装成资源文件存放于资源文件夹中,例如资源文件夹“assets”中。由于资源文件夹“assets”中的文件不会被编译器编译,所以隔离文件包括用于加载包含自定义参数的共享对象文件的加载函数。在该加载函数中可以指定路径对包含自定义参数的共享对象文件进行访问。
另外,加载函数包括将自定义参数解析成共享对象文件的原始区段头表参数及程序头表参数的解析函数,以获取共享对象文件中的代码段、数据及参数的区段的偏移量。并根据偏移量将共享对象文件的程序代码及数据等读取到内存或缓存中。
在本实施例中,由于隔离文件具有标准的共享对象文件的格式,所以终端设备加载器在加载共享对象文件至内存时,首先把隔离文件加载至内存或缓存中。
在本实施例的一些可选实现方式中,隔离文件为服务器使用加壳工具对其进行加壳后的隔离文件。另外,在加壳后的隔离文件中预先设置了脱壳函数,使得在加载加壳后的隔离文件至内存的过程中,脱壳函数自动运行并对加壳后的隔离文件进行脱壳。
步骤303,运行加载函数,加载函数首先根据解析函数将自定义参数解析为原始参数;其次,加载函数根据原始参数加载共享对象文件至内存。
在本实施例中,加载隔离文件至内存或缓存之后,运行隔离文件中的加载函数。也即由加载函数中的指定路径访问被伪装成资源文件的具有自定义参数的共享对象文件。
在本实施例中,在访问到具有自定义参数的共享对象文件之后,加载函数中的解析函数首先对自定义参数进行解析,将自定义参数解析为共享对象文件的程序头表及区段头表的原始的各项参数。然后,加载函数根据程序头表及各区段头表的原始的各项参数指定的偏移量对共享对象文件中的代码段、已初始化的数据及未初始化的数据等的存放位置进行定位,并将原共享对象文件中的代码、已初始化数据及未初始化数据等读取到内存或缓存中。
在本实施例的一些可选实现方式中,包含自定义参数的共享对象文件为经过加壳函数加壳后的共享对象文件。加壳后的共享对象文件还包括预先存储在其中的脱壳函数,以使得加载函数加载包含自定义参数的共享对象文件至内存的过程中,脱壳函数自动运行并对加壳后的共享对象文件进行脱壳。
在本实施例的一些可选实现方式中,隔离文件还包括与加载函数预先绑定的反调试函数,使得在运行加载函数之前先运行反调试函数。
在本实施例的一些可选实现方式中,隔离文件还包括与加载函数预先绑定的反二次打包函数,使得在运行加载函数之前先运行反二次打包函数。
根据本申请上述实施例提供的方法,由于在终端加载共享对象文件时首先加载隔离文件,再由隔离文件加载被伪装成资源文件的共享对象文件使得静态反编译软件无法对共享对象文件进行编译分析。另外,由于隔离文件预先绑定了反调试函数及反二次打包函数,使得恶意软件及恶意人员无法对共享对象文件进行动态反编译。使得应用得到了有效保护。
请参考图4,作为对上述图2所示方法的实现,本申请提供了一种用于安卓***的共享对象文件的加载装置的一个实施例,该装置具体可以应用于各种电子设备中。
进一步参考图4,作为对上述图2所示方法的实现,本申请提供了一种用于安卓***的共享对象文件的加载装置的一个实施例,具体可以应用于各种电子设备中。
如图4所示,用于安卓***的共享对象文件的加载装置400可以包括但不限于:获取模块401,修改模块402,生成模块403,设置模块404以及发送模块405。其中,获取模块401,配置用于响应于接收到终端发送的预处理请求,获取共享对象文件的第一预定位置的第一原始参数以及第二预定位置的第二原始参数。修改模块402,配置用于修改共享对象文件的第一原始参数与第二原始参数为自定义参数。生成模块403,配置用于生成用于隔离共享对象文件的隔离文件,隔离文件包括用于加载包含自定义参数的共享对象文件的加载函数,加载函数包括用于解析自定义参数的解析函数。设置模块404,配置用于将隔离文件的预定位置的参数设置为第一原始参数。发送模块405,配置用于将包含第一原始参数的隔离文件及包含自定义参数的共享对象文件打包发送给终端,以使终端基于隔离文件及自定义参数对共享对象文件进行加载。
在本实施例中,用于安卓***的共享对象文件的加载装置400的获取模块401可以通过有线连接方式或者无线连接方式从用户终端(例如图1所示的终端设备101、102、103)接收预处理请求。在接收到的预处理请求中,包括一个应用的共享对象文件。具体而言,获取模块401可以从用户终端接收来自用户终端的一个应用安装包文件,该安装包文件中可以包含资源文件和共享对象文件。
在本实施例中,发送模块405可以通过有线连接方式或者无线连接方式向用户终端(例如图1所示的终端设备101、102、103)发送对共享对象文件经过预定处理后的应用安装包文件。
在本实施例的一些可选实现方式中,获取模块401进一步配置用于获取共享对象文件的文件头的原始参数以及共享对象文件的区段头表与程序头表的原始参数。修改模块402进一步配置用于去掉共享对象文件的文件头的原始参数,以及将区段头表与程序头表的的原始参数进行预定处理生成自定义参数。
在本实施例的一些可选实现方式中,用于安卓***的共享对象文件的加载装置400还包括加壳模块(图中未画出)。加壳模块配置用于在获取模块401获取共享对象文件的原始文件头参数及原始程序头表及区段头表的参数之前,对共享对象文件进行加壳。
在本实施例的一些可选实现方式中,加壳模块进一步配置用于在设置模块将隔离文件的预定位置的参数设置为共享对象文件的原始文件头之后,对隔离文件进行加壳。
本领域技术人员可以理解,上述用于安卓***的共享对象文件的加载装置400还包括一些其他公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图4中未示出。
请进一步参考图5,作为对上述图3所示方法的实现,本申请提供了一种用于安卓***的共享对象文件的加载装置的另一个实施例,该装置具体可以应用于各种电子设备中。
如图5所示,用于安卓***的共享对象文件的加载装置500可以包括但不限于:预处理请求及接收模块501,加载模块502,运行模块503。其中,预处理请求及接收模块501,配置用于向服务器发送预处理请求,以及接收服务器基于预处理请求返回的包括包含原始参数的隔离文件及包含自定义参数的共享对象文件的打包文件。加载模块502,配置用于加载包含原始参数的隔离文件至内存,隔离文件包括用于加载包含自定义参数的共享对象文件的加载函数,加载函数包括用于解析自定义参数为共享对象文件的原始参数的解析函数,其中,自定义参数是对原始参数预定处理后生成的。运行模块503,配置用于运行加载函数,加载函数首先根据解析函数将自定义参数解析为原始参数;其次,加载函数根据原始参数加载共享对象文件至内存。
在本实施例中,用于安卓***的共享对象文件的加载装置500的预处理请求及接收模块501可以通过有线连接方式或者无线连接方式向服务器发送预处理请求。在发送的预处理请求中,包括一个应用的共享对象文件。具体而言,预处理请求及接收模块501可以向服务器发送一个应用安装包文件以及对该应用安装包文件进行预定处理的请求。在该应用安装包文件中可以包含资源文件和共享对象文件。并且,预处理请求及接收模块501可以通过有线连接方式或者无线连接方式从服务器接收经过对共享对象文件进行预定处理后的应用安装包文件。经过预定处理后的应用安装包文件包括包含共享对象文件的原始文件头的隔离文件及包含自定义文件头的共享对象文件的打包文件,其中,自定义文件头包括自定义参数。
在本实施例的一些可选实现方式中,隔离文件为经过加壳函数加壳后的隔离文件,加壳后的隔离文件还包括预先存储在其中的脱壳函数;加载模块502加载隔离文件至内存的过程中,脱壳函数自动运行并对加壳后的隔离文件进行脱壳;加载模块502将经过脱壳的隔离文件加载到内存。
在本实施例的一些可选实现方式中,包含自定义参数的共享对象文件为经过加壳函数加壳后的共享对象文件,加壳后的共享对象文件还包括预先存储在其中的脱壳函数;在运行模块503运行时,由加载函数加载加壳后的共享对象文件至内存的过程中,脱壳函数自动运行并对加壳后的共享对象文件进行脱壳;加载函数加载脱壳后的共享对象文件至内存。
在本实施例的一些可选实现方式中,隔离文件还包括与加载函数预先绑定的反调试函数,使得在运行模块503运行加载函数之前运行反调试函数。
在本实施例的一些可选实现方式中,隔离文件还包括与加载函数预先绑定的反二次打包函数,使得在运行模块503运行加载函数之前运行反二次打包函数。
下面参考图6,其示出了适于用来实现本申请实施例的各装置的计算机***600的结构示意图。
如图6所示,计算机***600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有***600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取模块,修改模块,生成模块和设置模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,获取模块还可以被描述为“配置用于获取所述共享对象文件的第一预定位置的第一原始参数以及第二预定位置的第二原始参数的模块”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端或服务器中的非易失性计算机存储介质。
上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:。
或者,上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (18)
1.一种用于安卓***的共享对象文件的加载方法,其特征在于,所述方法包括:
响应于接收到终端发送的预处理请求,获取所述共享对象文件的第一预定位置的第一原始参数以及第二预定位置的第二原始参数;
修改所述共享对象文件的所述第一原始参数与所述第二原始参数为自定义参数;
生成用于隔离所述共享对象文件的隔离文件,所述隔离文件包括用于加载包含所述自定义参数的共享对象文件的加载函数,所述加载函数包括用于解析所述自定义参数的解析函数;
将所述隔离文件的预定位置的参数设置为所述第一原始参数;
将包含所述第一原始参数的隔离文件及包含所述自定义参数的共享对象文件打包发送给终端,以使所述终端基于所述隔离文件及所述自定义参数对所述共享对象文件进行加载。
2.根据权利要求1所述的方法,其特征在于,
所述获取所述共享对象文件的第一预定位置的第一原始参数包括获取所述共享对象文件的文件头的原始参数;
所述获取所述共享对象文件的第二预定位置的第二原始参数包括获取所述共享对象文件的区段头表与程序头表的原始参数;
所述修改所述共享对象文件的所述第一原始参数与所述第二原始参数为自定义参数包括去掉所述共享对象文件的文件头的原始参数,以及将所述区段头表与程序头表的原始参数进行预定处理后生成自定义参数。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括在所述获取所述共享对象文件的第一预定位置的第一原始参数以及第二预定位置的第二原始参数之前,对所述共享对象文件进行加壳。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括在所述将所述隔离文件的预定位置的参数设置为所述第一原始参数之后,对所述隔离文件进行加壳。
5.一种用于安卓***的共享对象文件的加载方法,其特征在于,所述方法包括:
向服务器发送预处理请求,以及接收服务器基于所述预处理请求返回的包括包含原始参数的隔离文件及包含自定义参数的共享对象文件的打包文件;
加载所述隔离文件至内存,所述隔离文件包括用于加载包含自定义参数的共享对象文件的加载函数,所述加载函数包括用于解析所述包含自定义参数的共享对象文件的自定义参数为所述共享对象文件的原始参数的解析函数,其中,所述自定义参数是对所述原始参数经预定处理后生成的;
运行所述加载函数,所述加载函数首先根据所述解析函数将所述自定义参数解析为所述原始参数;其次,所述加载函数根据所述原始参数加载所述共享对象文件至内存。
6.根据权利要求5所述的方法,其特征在于,所述隔离文件还包括与所述加载函数预先绑定的反调试函数,使得在运行所述加载函数之前先运行所述反调试函数。
7.根据权利要求5所述的方法,其特征在于,所述隔离文件还包括与所述加载函数预先绑定的反二次打包函数,使得在运行所述加载函数至之前先运行所述反二次打包函数。
8.根据权利要求5所述的方法,其特征在于,所述隔离文件为加壳后的隔离文件,所述加壳后的隔离文件还包括预先存储在其中的脱壳函数;
在加载所述加壳后的隔离文件至内存的过程中,所述脱壳函数自动运行并对所述加壳后的隔离文件进行脱壳。
9.根据权利要求5所述的方法,其特征在于,所述包含自定义参数的共享对象文件为加壳后的共享对象文件,所述加壳后的共享对象文件还包括预先存储在其中的脱壳函数;
所述加载函数加载所述包含自定义参数的共享对象文件至内存的过程中,所述脱壳函数自动运行并对所述加壳后的共享对象文件进行脱壳。
10.一种用于安卓***的共享对象文件的加载装置,其特征在于,所述装置包括:
获取模块,配置用于响应于接收到终端发送的预处理请求,获取所述共享对象文件的第一预定位置的第一原始参数以及第二预定位置的第二原始参数;
修改模块,配置用于修改所述共享对象文件的所述第一原始参数与所述第二原始参数为自定义参数;
生成模块,配置用于生成用于隔离所述共享对象文件的隔离文件,所述隔离文件包括用于加载包含所述自定义参数的共享对象文件的加载函数,所述加载函数包括用于解析所述自定义参数的解析函数;
设置模块,配置用于将所述隔离文件的预定位置的参数设置为所述第一原始参数;
发送模块,配置用于将包含所述第一原始参数的隔离文件及包含所述自定义参数的共享对象文件打包发送给终端,以使所述终端基于所述隔离文件及所述自定义参数对所述共享对象文件进行加载。
11.根据权利要求10所述的装置,其特征在于,
所述获取模块进一步配置用于获取所述共享对象文件的文件头的原始参数以及所述共享对象文件的区段头表与程序头表的原始参数;
所述修改模块进一步配置用于去掉所述共享对象文件的文件头的原始参数,以及将所述区段头表与程序头表的原始参数进行预定处理生成自定义参数。
12.根据权利要求10所述的装置,其特征在于,所述装置还包括加壳模块,配置用于在所述获取模块获取所述共享对象文件的第一预定位置的第一原始参数以及第二预定位置的第二原始参数之前,对所述共享对象文件进行加壳。
13.根据权利要求12所述的装置,其特征在于,所述加壳模块进一步配置用于在所述设置模块将所述隔离文件的预定位置的参数设置为所述第一原始参数之后,对所述隔离文件进行加壳。
14.一种用于安卓***的共享对象文件的加载装置,其特征在于,所述装置包括:
预处理请求及接收模块,配置用于向服务器发送预处理请求,以及接收服务器基于所述预处理请求返回的包括包含原始参数的隔离文件及包含自定义参数的共享对象文件的打包文件;
加载模块,配置用于加载所述包含原始参数的隔离文件至内存,所述隔离文件包括用于加载所述包含自定义参数的共享对象文件的加载函数,所述加载函数包括用于解析所述自定义参数为所述共享对象文件的原始参数的解析函数,其中,所述自定义参数是对所述原始参数预定处理后生成的;
运行模块,配置用于运行所述加载函数,所述加载函数首先根据所述解析函数将所述自定义参数解析为所述原始参数;其次,所述加载函数根据所述原始参数加载所述共享对象文件至内存。
15.根据权利要求14所述的装置,其特征在于,所述隔离文件还包括与所述加载函数预先绑定的反调试函数,使得在所述运行模块运行所述加载函数之前运行所述反调试函数。
16.根据权利要求14所述的装置,其特征在于,所述隔离文件还包括与所述加载函数预先绑定的反二次打包函数,使得在所述运行模块运行所述加载函数之前运行所述反二次打包函数。
17.根据权利要求14所述的装置,其特征在于,所述隔离文件为经过加壳后的隔离文件,所述加壳后的隔离文件还包括预先存储在其中的脱壳函数;
在所述加载模块加载所述隔离文件至内存的过程中,所述脱壳函数自动运行并对所述加壳后的隔离文件进行脱壳;
所述加载模块将经过脱壳的隔离文件加载到所述内存。
18.根据权利要求14所述的装置,其特征在于,所述包含自定义参数的共享对象文件为加壳后的共享对象文件,所述加壳后的共享对象文件还包括预先存储在其中的脱壳函数;
所述运行模块运行时,在由所述加载函数加载所述加壳后的共享对象文件至内存的过程中,所述脱壳函数自动运行并对所述加壳后的共享对象文件进行脱壳;
所述加载函数加载脱壳后的共享对象文件至所述内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610192553.0A CN107292132B (zh) | 2016-03-30 | 2016-03-30 | 用于安卓***的共享对象文件的加载方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610192553.0A CN107292132B (zh) | 2016-03-30 | 2016-03-30 | 用于安卓***的共享对象文件的加载方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107292132A CN107292132A (zh) | 2017-10-24 |
CN107292132B true CN107292132B (zh) | 2023-03-14 |
Family
ID=60087796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610192553.0A Active CN107292132B (zh) | 2016-03-30 | 2016-03-30 | 用于安卓***的共享对象文件的加载方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107292132B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108073814B (zh) * | 2017-12-29 | 2021-10-15 | 安天科技集团股份有限公司 | 基于静态结构化脱壳参数的脱壳方法、***及存储介质 |
CN108595226B (zh) * | 2018-05-09 | 2021-07-23 | 腾讯科技(深圳)有限公司 | 动态加载方法、装置及计算机可读存储介质 |
CN111399927B (zh) * | 2018-12-14 | 2024-06-18 | 北京奇虎科技有限公司 | 应用共享Class文件的方法及装置、计算设备 |
CN111831294B (zh) * | 2020-07-10 | 2024-03-22 | 广州市挖米科技有限责任公司 | 一种医疗***免安装方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101702130A (zh) * | 2009-11-12 | 2010-05-05 | 深圳市五巨科技有限公司 | 一种移动终端加载共享函数库的方法和装置 |
CN103092544A (zh) * | 2011-10-27 | 2013-05-08 | 汉王科技股份有限公司 | 电子设备之间共享电子文件的方法和*** |
CN104298932A (zh) * | 2014-10-27 | 2015-01-21 | 中国建设银行股份有限公司 | 一种so文件的调用方法及装置 |
CN104392181A (zh) * | 2014-11-18 | 2015-03-04 | 北京奇虎科技有限公司 | So文件的保护方法、装置及安卓安装包的加固方法和*** |
CN105095771A (zh) * | 2014-05-08 | 2015-11-25 | 北京娜迦信息科技发展有限公司 | 一种共享目标文件的保护方法及装置 |
CN105227565A (zh) * | 2015-10-13 | 2016-01-06 | 北京娜迦信息科技发展有限公司 | 用于安卓***的防逆向破解共享对象文件的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2820221B1 (fr) * | 2001-02-01 | 2004-08-20 | Cimai Technology | Procede et systeme pour gerer des executables a bibliotheques partagees |
-
2016
- 2016-03-30 CN CN201610192553.0A patent/CN107292132B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101702130A (zh) * | 2009-11-12 | 2010-05-05 | 深圳市五巨科技有限公司 | 一种移动终端加载共享函数库的方法和装置 |
CN103092544A (zh) * | 2011-10-27 | 2013-05-08 | 汉王科技股份有限公司 | 电子设备之间共享电子文件的方法和*** |
CN105095771A (zh) * | 2014-05-08 | 2015-11-25 | 北京娜迦信息科技发展有限公司 | 一种共享目标文件的保护方法及装置 |
CN104298932A (zh) * | 2014-10-27 | 2015-01-21 | 中国建设银行股份有限公司 | 一种so文件的调用方法及装置 |
CN104392181A (zh) * | 2014-11-18 | 2015-03-04 | 北京奇虎科技有限公司 | So文件的保护方法、装置及安卓安装包的加固方法和*** |
CN105227565A (zh) * | 2015-10-13 | 2016-01-06 | 北京娜迦信息科技发展有限公司 | 用于安卓***的防逆向破解共享对象文件的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107292132A (zh) | 2017-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101471589B1 (ko) | 공통중간언어 기반 프로그램을 위한 보안 제공 방법 | |
EP2897072B1 (en) | Device for obfuscating code and method for same | |
CN105068932B (zh) | 一种Android应用程序加壳的检测方法 | |
CN107292132B (zh) | 用于安卓***的共享对象文件的加载方法与装置 | |
CN111552931A (zh) | java代码的加壳方法与*** | |
JP5658283B2 (ja) | アプリケーションの稼働方法、装置及びシステム | |
US20190171817A1 (en) | Proactive browser content analysis | |
CN104680039B (zh) | 一种应用程序安装包的数据保护方法及装置 | |
CN111143869B (zh) | 应用程序包处理方法、装置、电子设备及存储介质 | |
WO2019072008A1 (zh) | 小程序的安全扫描方法、装置以及电子设备 | |
CN104392181A (zh) | So文件的保护方法、装置及安卓安装包的加固方法和*** | |
CN111163095B (zh) | 网络攻击分析方法、网络攻击分析装置、计算设备和介质 | |
WO2015192637A1 (zh) | 软件安装包的加固保护方法和装置 | |
CN111163094B (zh) | 网络攻击检测方法、网络攻击检测装置、电子设备和介质 | |
JP6392446B2 (ja) | クラウドベースのアプリケーションセキュリティサービスの提供方法及びシステム | |
CN107430650B (zh) | 保护计算机程序以抵御逆向工程 | |
US20130074160A1 (en) | Method of controlling information processing system, computer-readable recording medium storing program for controlling apparatus | |
US10867017B2 (en) | Apparatus and method of providing security and apparatus and method of executing security for common intermediate language | |
CN109614772B (zh) | 基于应用安装包文件的代码转换方法及装置 | |
CN113893550A (zh) | 脚本源码处理方法及相关设备 | |
CN107145342B (zh) | 应用的渠道信息的处理方法和装置 | |
KR101667774B1 (ko) | 스크립트 프로그램을 위한 보안 제공 장치 및 방법 | |
CN106648770B (zh) | 一种应用程序安装包的生成方法、加载方法及装置 | |
KR101863325B1 (ko) | 역공학 방지 방법 및 장치 | |
CN114329535A (zh) | 文件加密方法、装置、电子设备和计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |