CN107196907B - 一种安卓so文件的保护方法及装置 - Google Patents

一种安卓so文件的保护方法及装置 Download PDF

Info

Publication number
CN107196907B
CN107196907B CN201710211363.3A CN201710211363A CN107196907B CN 107196907 B CN107196907 B CN 107196907B CN 201710211363 A CN201710211363 A CN 201710211363A CN 107196907 B CN107196907 B CN 107196907B
Authority
CN
China
Prior art keywords
files
environmental information
encrypted
key
server
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
Application number
CN201710211363.3A
Other languages
English (en)
Other versions
CN107196907A (zh
Inventor
周志刚
张文明
陈少杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710211363.3A priority Critical patent/CN107196907B/zh
Publication of CN107196907A publication Critical patent/CN107196907A/zh
Priority to PCT/CN2018/081256 priority patent/WO2018177394A1/zh
Application granted granted Critical
Publication of CN107196907B publication Critical patent/CN107196907B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3249Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Power Engineering (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Telephone Function (AREA)
  • Telephonic Communication Services (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开一种安卓SO文件的保护方法及装置,该方法包括:当应用程序加载SO文件时,获取所述SO文件运行的环境信息,其中,所述SO文件为加密文件;对所述环境信息进行加密;发送加密后的所述环境信息至服务器;当接收到所述服务器基于加密后的所述环境信息返回的密钥时,基于所述密钥,解密并调用所述SO文件。本申请提供的方法和装置可以解决现有技术中SO文件容易被轻易获取和盗用,存在的安全性低的技术问题。实现了提高SO文件的安全性的技术效果。

Description

一种安卓SO文件的保护方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种安卓(Andriod)SO文件的保护方法及装置。
背景技术
随着移动设备的日益普及,移动应用产业尤其是Andriod应用得到飞速的发展,相应的,其开发模式和代码框架也都发生了巨大的变化。由于程序的功能日益丰富,为了节约开发时间,模块化开发已经成为一种开发趋势,且Android系统也提供独立模块的文件以及独立模块的加载和使用方式。
独立的模块文件称为SO文件,该文件可以使用C或者C++语言开发。模块开发者为了保障程序的可用性和易用性,往往会将SO文件的接口设计的更为简洁和好用。在Android程序发布时,独立的SO文件会随之一同发布到用户的终端中,任何人就可以轻易的获取到所有的SO文件,并且通过分析轻易的获取SO文件的所有接口,从而可以将该SO文件使用到自己的Android程序中,以盗取该SO文件程序开发厂商的研发成果。目前,急需一种SO文件的保护方法,来防止其他人员直接盗用厂商辛苦开发出的SO文件。
可见,现有技术中SO文件容易被轻易获取和盗用,存在安全性低的技术问题。
发明内容
本发明提供一种安卓SO文件的保护方法及装置,用以解决现有技术中SO文件容易被轻易获取和盗用,存在的安全性低的技术问题。
一方面,本发明提供了一种安卓SO文件的保护方法,包括:
当应用程序加载SO文件时,获取所述SO文件运行的环境信息,其中,所述SO文件为加密文件;
对所述环境信息进行加密;
发送加密后的所述环境信息至服务器;
当接收到所述服务器基于加密后的所述环境信息返回的密钥时,基于所述密钥,解密并调用所述SO文件。
可选的,所述SO文件中加密的数据包括:常量数据和/或表格数据。
可选的,所述获取所述应用程序中SO文件运行的环境信息,包括:调用SO文件的初始化函数;基于所述初始化函数,获取所述SO文件的运行的环境信息,所述环境信息包括以下任意一种或多种的组合:所述SO文件的加载内存地址范围、当前内存段的权限或所述SO文件的路径名称。
可选的,所述对所述环境信息进行加密,包括:获取所述应用程序的程序包名称;基于所述程序包名称,对所述环境信息进行加密。
可选的,所述基于所述程序包名称,对所述环境信息进行加密,包括:计算所述程序包名称的MD5值;基于所述MD5值,对所述环境信息进行加密。
可选的,在所述发送加密后的所述环境信息至服务器后,还包括:当没有接收到所述服务器基于加密后的所述环境信息返回的密钥时,退出对所述SO文件的调用。
另一方面,提供一种安卓SO文件的保护方法,包括:
接收客户端发送的加密后的环境信息,其中,所述环境信息用于表征应用程序加载的SO文件的运行环境;
判断所述加密后的环境信息是否符合预设要求;
当所述加密后的环境信息符合预设要求时,发送密钥至所述客户端,以使所述客户端能基于所述密钥,解密并调用所述SO文件。
可选的,所述判断所述加密后的环境信息是否符合预设要求,包括以下任意一种或多种的组合:判断是否能通过预设应用程序的程序包名称,对所述加密后的环境信息进行解密;或者判断所述环境信息中表征的SO文件的类型是否满足预设类型要求;或者判断所述环境信息中表征的SO文件的参数是否满足预设参数要求。
再一方面,提供一种安卓SO文件的保护装置,所述装置为客户端,包括:
获取模块,用于当应用程序加载SO文件时,获取所述SO文件运行的环境信息,其中,所述SO文件为加密文件;
加密模块,用于对所述环境信息进行加密;
第一发送模块,用于发送加密后的所述环境信息至服务器;
解密模块,用于当接收到所述服务器基于加密后的所述环境信息返回的密钥时,基于所述密钥,解密并调用所述SO文件。
再一方面,提供一种安卓SO文件的保护装置,所述装置为服务器,包括:
接收模块,用于接收客户端发送的加密后的环境信息,其中,所述环境信息用于表征应用程序加载的SO文件的运行环境;
判断模块,用于判断所述加密后的环境信息是否符合预设要求;
第二发送模块,用于当所述加密后的环境信息符合预设要求时,发送密钥至所述客户端,以使所述客户端能基于所述密钥,解密并调用所述SO文件。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例提供的方法及装置,预先对SO文件进行加密,并设置在客户端的应用程序加载SO文件时,需要先获取所述SO文件运行的环境信息,并将加密后的所述环境信息发送至服务器,以供服务器根据所述环境信息来判断是否允许所述应用程序调用该SO文件,只有收到服务器返回的密钥后,客户端才能根据密钥解密并调用所述SO文件,以避免了不符合要求的应用程序对SO文件的盗用,有效提高了SO文件的安全性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中安卓SO文件的保护方法的流程图一;
图2为本发明实施例中安卓SO文件的保护方法的流程图二;
图3为本发明实施例中安卓SO文件的保护装置的结构示意图一;
图4为本发明实施例中安卓SO文件的保护装置的结构示意图二。
具体实施方式
本申请实施例通过提供一种安卓SO文件的保护方法及装置,用以解决现有技术中SO文件容易被轻易获取和盗用,存在的安全性低的技术问题。实现了提高SO文件的安全性的技术效果。
本申请实施例中的技术方案,总体思路如下:
当应用程序加载SO文件时,获取所述SO文件运行的环境信息,其中,所述SO文件为加密文件;对所述环境信息进行加密;发送加密后的所述环境信息至服务器;当接收到所述服务器基于加密后的所述环境信息返回的密钥时,基于所述密钥,解密并调用所述SO文件。
上述方法通过预先对SO文件进行加密,并设置在客户端的应用程序加载SO文件时,需要先获取所述SO文件运行的环境信息,并将加密后的所述环境信息发送至服务器,以供服务器根据所述环境信息来判断是否允许所述应用程序调用该SO文件,只有收到服务器返回的密钥后,客户端才能根据密钥解密并调用所述SO文件,以避免了不符合要求的应用程序对SO文件的盗用,有效提高了SO文件的安全性。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供一种安卓SO文件的保护方法,如图1所示,该方法包括:
步骤S101,当应用程序加载SO文件时,获取所述SO文件运行的环境信息,其中,所述SO文件为加密文件;
步骤S102,对所述环境信息进行加密;
步骤S103,发送加密后的所述环境信息至服务器;
步骤S104,当接收到所述服务器基于加密后的所述环境信息返回的密钥时,基于所述密钥,解密并调用所述SO文件。
需要说明的是,本实施例提供的方法应用于客户端,所述客户端与所述服务器通过无线或有限网络进行连接,以实现通信。
在具体实施过程中,所述客户端可以为智能手机,平板电脑或台式机,在此也不作限制。所述服务器可以是一台独立的服务器,也可以是多台服务器组成的服务器群,在此也不作限制。
下面,结合图1详细介绍本实施例提供的安卓SO文件的保护方法的具体实施步骤:
首先,执行步骤S101,当应用程序加载SO文件时,获取所述SO文件运行的环境信息,其中,所述SO文件为加密文件。
具体来讲,需要预先对SO文件进行加密,具体可以是在编写SO文件时对其进行加密。
进一步,考虑到在编写核心SO文件的模块代码时,其中会使用到一些常量的表格,或者是函数使用的参数等,故可以设置主要对SO文件中使用的常量数据或者表格数据进行加密,以保护最核心的内容。
在具体实施过程中,对所述SO文件的加密可以使用非对称加密,也可以使用对称加密算法,在此不作限制。
举例来说,可以预先使用非对称加密算法来对SO文件中表格数据进行加密后存储,调用SO文件时则需要从服务器获取到正确的密钥,即KEY值,才能解密出这些表格数据,从而才能使用SO文件的模块功能,如果获取不到正确的KEY值,则无法使用SO文件的功能。对SO文件的具体加密过程可以如下:
首先,服务器使用RSA算法来生成一对公钥PublicKey和私钥SecretKey。即通过RSA.CreatePairKey(SecretKey,PublicKey)命令,使用RSA算法来生成一对私钥PublicKey和私钥SecretKey。然后,服务器存储这对密钥,以供后续客户端请求下发私钥。
然后,使用RSA算法来对SO文件中使用的常量数据和表格数据进行加密。即调用RSA算法的加密接口来对常量表格进行加密。例如,Char g_gloabledata[size]为SO文件中使用的表格数据,RSA.encrypt则是RSA加密算法的接口,通过下述命令使用公钥PublicKey来对全局的表格数据进行加密:
Char g_gloabledata[size]={.....};
RSA.encrypt(g_gloabledata,size,PublicKey);
其中,Char g_gloabledata[size]={.....}表征需要加密的表格数据,用加密后的数据替换SO文件中表格数据的内容,从而保证SO文件中存储的表格是已加密状态。
当对所述SO文件加密后,可以将加密后的SO文件随着Android的应用程序(APP)发布到客户端,当有应用程序要加载SO文件时,必须先获取所述SO文件运行的环境信息。
在本申请实施例中,所述获取所述SO文件运行的环境信息,包括:
调用SO文件的初始化函数;
基于所述初始化函数,获取所述SO文件的运行的环境信息,所述环境信息包括以下任意一种或多种的组合:所述SO文件的加载内存地址范围、当前内存段的权限或所述SO文件的路径名称。
具体来讲,可以预先在SO文件的初始化函数JNI_OnLoad中加入获取所述SO文件运行的环境信息,并对所述环境信息加密后再发送至服务器的指令,当应用程序加载SO文件是,必须调用SO文件的初始化函数JNI_OnLoad,则会触发获取所述SO文件运行的环境信息。
举例来讲,加入初始化函数中的获取所述环境信息的指令可以是:先定义ProcessBuilder processBuilder=new ProcessBuilder(“cat/proc/PID/maps”),以用来创建一个新的进程,其中PID是当前应用程序的ID,其中“/proc/PID/maps”则标示获取当前程序的内存映射信息,包含SO的加载信息;再执行process=processBuilder.start(),以执行创建的进程;再执行is=process.getInputStream(),以获取进程的输出信息;然后,执行ByteArrayOutputStream info=new ByteArrayOutputStream(),来定义一个输出流;再下来,执行while(is.read()!=-1){info.write(read);},以通过编写一个While循环来将进程的输出信息写入到所述输出流中;然后,执行byte[]data=info.toByteArray(),将输出流的信息转换到byte数组中;再执行String result=new String(data),将byte数组的信息转换成一个字符串信息。例如,采用上述步骤获取的信息类似于如下一条SO文件的环境信息:
“4d575000-4d58a000r-xp 00000000 03:06 736549/lib/ld.so”
其中,4d575000-4d58a000标示SO文件的加载内存地址范围;r-xp则标示当前内存段的权限;/lib/ld.so则表示加载的SO文件的路径名称。
因此,根据所述环境信息能较好的判断出SO文件的加载范围和SO文件的路径名称。
在获取了所述环境信息后,执行步骤S102,对所述环境信息进行加密。
在具体实施过程中,对所述环境信息进行加密后再传送一方面是对所述环境信息的保护,另一方面能通过预先沟通好加密方式来帮助服务器判断所述应用程序是否允许调用所述SO文件。
在具体实施过程中,可以直接根据应用程序的程序包名称来对所述环境信息进行加密,即先获取所述应用程序的程序包名称,再基于所述程序包名称,对所述环境信息进行加密。
进一步,可以根据应用程序的程序包名称的MD5值来对所述环境信息进行加密,即先计算所述程序包名称的MD5值,再基于所述MD5值,对所述环境信息进行加密。
具体来讲,由于每个应用程序的程序包名称都是不同的,所以获取应用程序的程序包名称,然后对程序包名称计算其MD5值来做为获取到的客户端的环境信息加密使用的KEY值。而服务器存储有允许调用所述SO文件的应用程序的程序包名称,所以服务器会直接使用其认可的程序包名称来解密所述环境信息。而如果客户端是调用SO文件的应用程序不是服务器允许的应用程序,那么获取到的程序包名称则会不一样,从而服务器无法解密出正确的环境信息,从而可以拒绝给客户端发送解密的密钥。只有当服务器对所述环境信息解密成功后,才能继续根据所述环境信息的本文内容来判断是否允许调用SO文件。
在具体实施过程中,应用程序的程序包名称可以采取下述方法获取:
首先,通过在SO文件中使用JNI层的接口来获取程序包名称的方法ID,具体实现代码可以为:
jmethodID methodID_pack=(*env)->GetMethodID(env,context_clazz,"getPackageName","()Ljava/lang/String;");
然后,通过程序包名称的方法ID来获取当前应用程序的程序包名称,具体实现代码可以为:
jstring application_package=(*env)->CallObjectMethod(env,context,methodID_pack);
其中,application_package则是应用程序的程序包名称。
当然,应用程序的程序包名还可以通过像应用程序主程序发送请求,或查询应用程序程序包地址的方式获取,在此不作限制。
在具体实施过程中,获取了应用程序的程序包名称后,可以对所述程序包名称使用MD5算法来计算其MD5值,以作为后续加密使用的KEY值。即设置KEY=MD5.create(application_package)。
当然,在具体实施过程中,所述KEY值除了可以设置为所述程序包名称和其MD5值外,还可以为程序的类型标识,程序名称的首字母或简称等,在此不作限制。
在具体实施过程中,确定KEY值后,对所述环境信息的加密可以采取下述方法实现:
使用加密算法,采用前述步骤确定的KEY值来对获取到的所述环境信息进行加密。例如,可以采取加密算法AES,使用AES.encrypt(KEY,result)命令来进行加密,其中,KEY为之前计算得出的程序包名称或程序包名称的MD5值,result为之前获取的内存映射信息,即所述环境信息。
当然,在具体实施过程中,也可以采用RSA加密算法和DES加密算法来对所述环境信息进行加密,在此不作限制。
通过上述步骤就实现了在SO文件的初始化中获取环境信息并加密。
接下来,执行步骤S103,发送加密后的所述环境信息至服务器。
在本申请实施例中,所述服务器与所述客户端实现网络连接,所述SO文件中存储有服务器的地址,并设置有与服务器通信的功能,所述服务器接收到所述环境信息后,可以通过以下至少一种方式判断是否返回密钥至所述客户端:
第一种,判断是否能按预设密码解密。
具体来讲,设置客户端以应用程序的信息作为KEY值来对所述环境信息进行加密。而服务器存储有允许调用所述SO文件的应用程序的信息,所以服务器可以直接使用其认可的应用程序的信息作为KEY值来解密所述环境信息,例如,客户端用调用SO文件的当前应用程序的程序包名称的MD5值来加密,对应的服务器用允许调用SO文件的应用程序的程序包名称的MD5值来解密。如果客户端调用SO文件的当前应用程序不是服务器允许的应用程序,那么客户端用于加密的程序信息与客户端解密的程序信息则会不一样,从而服务器无法解密出正确的环境信息,从而拒绝给客户端发送解密的密钥。只有当服务器对所述环境信息解密成功后,才能继续根据所述环境信息的本文内容来判断是否允许调用SO文件。
需要说明的是,服务器端使用的解密算法需要与客户端使用的加密算法预先对应设置。
举例来说,客户端采用AES算法,以当前应用程序的程序包名称的MD5值作为KEY值,来对获得的所述环境信息进行加密,服务器收到客户端上报的加密后环境信息后,使用同样的AES算法并且使用允许调用SO文件的程序包名称的MD5做为KEY值来对所述环境信息进行解密。如果解密失败,拒绝给客户端发送解密的密钥,如果解密成功,再基于所述环境信息的具体内容进行进一步判断或直接发送密钥。
服务器端使用MD5做为KEY值来对所述环境信息进行解密的方法为:
首先,使用允许调用SO文件的应用程序的程序包名称计算MD5值。具体命令为:KEY=MD5.create(application_package);
然后,使用AES算法来对上报的数据进行解密。具体命令为:AES.decrypt(KEY,result)。
第二种,或者判断所述环境信息中表征的SO文件的类型或参数是否满足预设要求。
具体来讲,获取的当前环境信息本文是获取当前应用程序所加载的SO文件的环境信息,因为不同的应用程序所需要加载的SO文件是不一样的,所以根据获取加载的SO文件的环境信息可以很好的区分应用程序。
即在解密后,对所述环境信息中加载的SO文件的类型和参数进行判断,由于服务器中预先存储有加载的SO文件的信息,例如,存储有正常的程序会加载哪些必要的SO文件,不会加载哪些SO文件的信息;或者,正常的程序加载的每个SO文件的加载内存区间,故服务器根据预存的加载的SO文件的信息,可以很容易的判断出客户端上报的所述环境信息是否是正确的应用程序加载SO文件时的信息。如果服务器判断出客户端上报的所述环境信息符合正确的应用程序的加载信息,则向客户端下发解密使用的密钥(SecretKey),否则向客户端下发拒绝信息。
当然,在具体实施过程中,结合上述第一种和第二种方法来一同判断是否返回密钥,能够增加判断的准确性。即先采取第一种方法判断能否对所述环境信息进行解密,如果解密失败则拒绝返回密钥,如果解密成功再采取第二种方法进一步判断所述环境信息的具体内容是否符合要求,符合则返回密钥,不符合则拒绝返回密钥。
再下来,执行步骤S104,当接收到所述服务器基于加密后的所述环境信息返回的密钥时,基于所述密钥,解密并调用所述SO文件。
具体来讲,如果客户端接收到所述服务器下发的密钥信息,则对SO文件进行解密,具体可以是对SO文件中的常量数据或表格数据进行解密,从而SO文件才能正确的使用。具体的解密指令可以为:RSA.decrypt(g_gloabledata,size,SecretKey);
进一步,如果客户端没有接收到所述服务器基于加密后的所述环境信息返回的密钥时,退出对所述SO文件的调用。
进一步,退出对所述SO文件的调用后,可以在所述客户端上输出初始化失败信息以提醒用户。
本实施例提供的方法,对SO文件中所使用到的关键性的一些常量数据或者表格数据使用加密算法来进行加密,在应用程序调用SO文件时,会对SO文件的使用方程序进行验证,如果验证不成功则无法使用SO文件的所有功能,从而可以对SO文件进行保护。具体来讲,在客户端登陆启动应用程序后,应用程序加载SO文件,而在SO文件进行初始化的同时,会获取当前SO文件所处的环境信息,获取到环境信息后会通过SO文件中编写的与服务器的网络连接功能来进行发送,而服务器则会根据上报的所述环境信息判断当前使用方程序是否是正确的应用程序。只有当服务器校验通过时,才会将解密密钥下发至客户端,才能够正确的解密出需要使用的常量数据或者表格数据,否则无法获取到解密密钥,从而无法使用SO文件中的功能。
基于同一发明构思,本申请还提供了与实施例一中安卓SO文件的保护方法对应的应用于服务器端的安卓SO文件的保护方法,详见实施例二。
实施例二
本实施例提供了一种安卓SO文件的保护方法,如图2所示,该方法包括:
步骤S201,接收客户端发送的加密后的环境信息,其中,所述环境信息用于表征应用程序加载的SO文件的运行环境;
步骤S202,判断所述加密后的环境信息是否符合预设要求;
步骤S203,当所述加密后的环境信息符合预设要求时,发送密钥至所述客户端,以使所述客户端能基于所述密钥,解密并调用所述SO文件。
需要说明的是,本实施例提供的方法应用于服务器端,所述服务器端与实施例一中的客户端通过无线或有限网络进行连接,以实现通信。
在具体实施过程中,所述客户端可以为智能手机,平板电脑或台式机,在此也不作限制。所述服务器可以是一台独立的服务器,也可以是多台服务器组成的服务器群,在此也不作限制。
在本申请实施例中,所述判断所述加密后的环境信息是否符合预设要求,包括以下任意一种或多种的组合:
判断是否能通过预设应用程序的程序包名称,对所述加密后的环境信息进行解密;或者
判断所述环境信息中表征的SO文件的类型是否满足预设类型要求;或者
判断所述环境信息中表征的SO文件的参数是否满足预设参数要求。
由于本发明实施例二所介绍的方法与实施例一中所介绍的方法属于同一发明构思,而实施例二中判断所述加密后的环境信息是否符合预设要求的具体实施步骤及原理也在实施例一中做了详细描述,基于实施例一本领域技术人员应该了解实施例二提供方法的实施步骤及原理,故而在此不再赘述。
基于同一发明构思,本申请还提供了与实施例一中安卓SO文件的保护方法对应的装置,详见实施例三。
实施例三
本实施例提供一种安卓SO文件的保护装置,所述装置为客户端,如图3所示,包括:
获取模块301,用于当应用程序加载SO文件时,获取所述SO文件运行的环境信息,其中,所述SO文件为加密文件;
加密模块302,用于对所述环境信息进行加密;
第一发送模块303,用于发送加密后的所述环境信息至服务器;
解密模块304,用于当接收到所述服务器基于加密后的所述环境信息返回的密钥时,基于所述密钥,解密并调用所述SO文件。
在具体实施过程中,所述客户端可以为智能手机,平板电脑或台式机,在此不作限制。
由于本发明实施例三所介绍的装置,为实施本发明实施例一的安卓SO文件的保护方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。
基于同一发明构思,本申请还提供了与实施例二中安卓SO文件的保护方法对应的装置,详见实施例四。
实施例四
本实施例提供一种安卓SO文件的保护装置,所述装置为服务器,如图4所示,包括:
接收模块401,用于接收客户端发送的加密后的环境信息,其中,所述环境信息用于表征应用程序加载的SO文件的运行环境;
判断模块402,用于判断所述加密后的环境信息是否符合预设要求;
第二发送模块403,用于当所述加密后的环境信息符合预设要求时,发送密钥至所述客户端,以使所述客户端能基于所述密钥,解密并调用所述SO文件。
在本申请实施例中,所述服务器可以是一台独立的服务器,也可以是多台服务器组成的服务器群,在此不作限制。
由于本发明实施例四所介绍的装置,为实施本发明实施例二的安卓SO文件的保护方法所采用的装置,故而基于本发明实施例二所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例二的方法所采用的装置都属于本发明所欲保护的范围。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
本申请实施例提供的方法及装置,预先对SO文件进行加密,并设置在客户端的应用程序加载SO文件时,需要先获取所述SO文件运行的环境信息,并将加密后的所述环境信息发送至服务器,以供服务器根据所述环境信息来判断是否允许所述应用程序调用该SO文件,只有收到服务器返回的密钥后,客户端才能根据密钥解密并调用所述SO文件,以避免了不符合要求的应用程序对SO文件的盗用,有效提高了SO文件的安全性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种安卓SO文件的保护方法,其特征在于,包括:
当应用程序加载SO文件时,获取所述SO文件运行的环境信息,其中,所述SO文件为加密文件;
对所述环境信息进行加密;
发送加密后的所述环境信息至服务器;
当接收到所述服务器在确定所述加密后的环境信息符合预设要求后返回的密钥时,基于所述密钥,解密并调用所述SO文件。
2.如权利要求1所述的方法,其特征在于,所述SO文件中加密的数据包括:
常量数据和/或表格数据。
3.如权利要求1所述的方法,其特征在于,所述获取所述SO文件运行的环境信息,包括:
调用SO文件的初始化函数;
基于所述初始化函数,获取所述SO文件的运行的环境信息,所述环境信息包括以下任意一种或多种的组合:所述SO文件的加载内存地址范围、当前内存段的权限或所述SO文件的路径名称。
4.如权利要求1所述的方法,其特征在于,所述对所述环境信息进行加密,包括:
获取所述应用程序的程序包名称;
基于所述程序包名称,对所述环境信息进行加密。
5.如权利要求4所述的方法,其特征在于,所述基于所述程序包名称,对所述环境信息进行加密,包括:
计算所述程序包名称的MD5值;
基于所述MD5值,对所述环境信息进行加密。
6.如权利要求1-5任一所述的方法,其特征在于,在所述发送加密后的所述环境信息至服务器后,还包括:
当没有接收到所述服务器基于加密后的所述环境信息返回的密钥时,退出对所述SO文件的调用。
7.一种安卓SO文件的保护方法,其特征在于,包括:
接收客户端发送的加密后的环境信息,其中,所述环境信息用于表征应用程序加载的SO文件的运行环境;
判断所述加密后的环境信息是否符合预设要求;
当所述加密后的环境信息符合预设要求时,发送密钥至所述客户端,以使所述客户端能基于所述密钥,解密并调用所述SO文件。
8.如权利要求7所述的方法,其特征在于,所述判断所述加密后的环境信息是否符合预设要求,包括以下任意一种或多种的组合:
判断是否能通过预设应用程序的程序包名称,对所述加密后的环境信息进行解密;或者
判断所述环境信息中表征的SO文件的类型是否满足预设类型要求;或者判断所述环境信息中表征的SO文件的参数是否满足预设参数要求。
9.一种安卓SO文件的保护装置,其特征在于,所述装置为客户端,包括:
获取模块,用于当应用程序加载SO文件时,获取所述SO文件运行的环境信息,其中,所述SO文件为加密文件;
加密模块,用于对所述环境信息进行加密;
第一发送模块,用于发送加密后的所述环境信息至服务器;
解密模块,用于当接收到所述服务器在确定所述加密后的环境信息符合预设要求后返回的密钥时,基于所述密钥,解密并调用所述SO文件。
10.一种安卓SO文件的保护装置,其特征在于,所述装置为服务器,包括:
接收模块,用于接收客户端发送的加密后的环境信息,其中,所述环境信息用于表征应用程序加载的SO文件的运行环境;
判断模块,用于判断所述加密后的环境信息是否符合预设要求;
第二发送模块,用于当所述加密后的环境信息符合预设要求时,发送密钥至所述客户端,以使所述客户端能基于所述密钥,解密并调用所述SO文件。
CN201710211363.3A 2017-03-31 2017-03-31 一种安卓so文件的保护方法及装置 Active CN107196907B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201710211363.3A CN107196907B (zh) 2017-03-31 2017-03-31 一种安卓so文件的保护方法及装置
PCT/CN2018/081256 WO2018177394A1 (zh) 2017-03-31 2018-03-30 一种安卓so文件的保护方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710211363.3A CN107196907B (zh) 2017-03-31 2017-03-31 一种安卓so文件的保护方法及装置

Publications (2)

Publication Number Publication Date
CN107196907A CN107196907A (zh) 2017-09-22
CN107196907B true CN107196907B (zh) 2018-08-03

Family

ID=59871390

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710211363.3A Active CN107196907B (zh) 2017-03-31 2017-03-31 一种安卓so文件的保护方法及装置

Country Status (2)

Country Link
CN (1) CN107196907B (zh)
WO (1) WO2018177394A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107196907B (zh) * 2017-03-31 2018-08-03 武汉斗鱼网络科技有限公司 一种安卓so文件的保护方法及装置
CN109657480A (zh) * 2017-10-11 2019-04-19 中国移动通信有限公司研究院 一种文件处理方法、设备及计算机可读存储介质
CN109194625B (zh) * 2018-08-10 2021-06-11 厦门市美亚柏科信息股份有限公司 一种基于云端服务器的客户端应用保护方法、装置及存储介质
CN109255245A (zh) * 2018-08-13 2019-01-22 海南新软软件有限公司 一种本地密钥保护方法、装置及系统
CN109271758B (zh) * 2018-08-24 2021-04-20 阿里巴巴(中国)有限公司 防止So文件被盗用的方法、设备、装置及服务器
CN111310131B (zh) * 2020-01-19 2022-11-04 Oppo广东移动通信有限公司 so库调用处理方法、装置、电子装置及存储介质
CN111639311A (zh) * 2020-05-29 2020-09-08 杭州安恒信息技术股份有限公司 防止反编译可执行文件的方法、装置、计算机设备和介质
CN111666580B (zh) * 2020-06-24 2022-11-04 北京航天数据股份有限公司 文件的加密方法、解密方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104408371A (zh) * 2014-10-14 2015-03-11 中国科学院信息工程研究所 一种基于可信执行环境高安全应用系统的实现方法
CN104504311A (zh) * 2015-01-19 2015-04-08 炫彩互动网络科技有限公司 一种安全的sdk制作和运行方法
CN106203006A (zh) * 2016-08-31 2016-12-07 北京鼎源科技有限公司 基于dex与so文件动态执行的Android应用加固方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101503785B1 (ko) * 2013-10-10 2015-03-18 (주)잉카엔트웍스 동적 라이브러리를 보호하는 방법 및 장치
CN104932902B (zh) * 2015-07-09 2019-07-12 魅族科技(中国)有限公司 一种生成apk文件的方法及终端
CN105205398B (zh) * 2015-11-04 2018-03-09 北京鼎源科技有限公司 一种基于apk加壳软件动态行为的查壳方法
CN106203009A (zh) * 2016-06-30 2016-12-07 珠海市魅族科技有限公司 一种终端设备处理方法及装置
CN106899463A (zh) * 2017-02-27 2017-06-27 宁夏凯速德科技有限公司 智能家居中环境信息与设备交互方法及系统
CN107196907B (zh) * 2017-03-31 2018-08-03 武汉斗鱼网络科技有限公司 一种安卓so文件的保护方法及装置
CN107135408B (zh) * 2017-03-31 2020-06-12 武汉斗鱼网络科技有限公司 一种视频流地址的鉴权方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104408371A (zh) * 2014-10-14 2015-03-11 中国科学院信息工程研究所 一种基于可信执行环境高安全应用系统的实现方法
CN104504311A (zh) * 2015-01-19 2015-04-08 炫彩互动网络科技有限公司 一种安全的sdk制作和运行方法
CN106203006A (zh) * 2016-08-31 2016-12-07 北京鼎源科技有限公司 基于dex与so文件动态执行的Android应用加固方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《基于安卓系统JNI机制的SO库加固方案设计》;张译恬;《电信技术》;20141030;全文 *

Also Published As

Publication number Publication date
CN107196907A (zh) 2017-09-22
WO2018177394A1 (zh) 2018-10-04

Similar Documents

Publication Publication Date Title
CN107196907B (zh) 一种安卓so文件的保护方法及装置
CN105812332A (zh) 数据保护方法
US20170295013A1 (en) Method for fulfilling a cryptographic request requiring a value of a private key
US9054865B2 (en) Cryptographic system and methodology for securing software cryptography
CN106055936B (zh) 可执行程序数据包加密/解密方法及装置
CN109840436A (zh) 数据处理方法、可信用户界面资源数据的应用方法及装置
CN112287372B (zh) 用于保护剪贴板隐私的方法和装置
CN204360381U (zh) 移动设备
CN108880806A (zh) 加密、解密方法、芯片及可读存储介质
CN109450620B (zh) 一种移动终端中共享安全应用的方法及移动终端
CN111274611A (zh) 数据脱敏方法、装置及计算机可读存储介质
CN109347625A (zh) 密码运算、创建工作密钥的方法、密码服务平台及设备
CN111178884A (zh) 信息处理方法、装置、设备及可读存储介质
CN110366183A (zh) 短信安全防护方法及装置
CN110032874A (zh) 一种数据存储方法、装置及设备
CN108768963A (zh) 可信应用与安全元件的通信方法和系统
CN110401538A (zh) 数据加密方法、系统以及终端
CN112291268B (zh) 信息的传输方法、装置、设备以及存储介质
US20140059341A1 (en) Creating and accessing encrypted web based content in hybrid applications
CN109510702B (zh) 一种基于计算机特征码的密钥存储及使用的方法
CN108416224B (zh) 一种数据加解密方法及装置
CN109257176A (zh) 基于sm2算法的解密密钥分割及解密方法、装置和介质
Cooijmans et al. Secure key storage and secure computation in Android
CN109711178A (zh) 一种键值对的存储方法、装置、设备及存储介质
CN105574720A (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