CN109558732A - 一种防止应用程序文件被篡改的方法及服务器 - Google Patents
一种防止应用程序文件被篡改的方法及服务器 Download PDFInfo
- Publication number
- CN109558732A CN109558732A CN201710891809.1A CN201710891809A CN109558732A CN 109558732 A CN109558732 A CN 109558732A CN 201710891809 A CN201710891809 A CN 201710891809A CN 109558732 A CN109558732 A CN 109558732A
- Authority
- CN
- China
- Prior art keywords
- file
- subfile
- identification
- tampered
- env
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000009434 installation Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 244000144985 peep Species 0.000 description 1
- 238000009517 secondary packaging Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/565—Static detection by checking file integrity
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例提供了一种防止应用程序文件被篡改的方法及服务器,应用于服务器,所述方法包括:接收终端发送的所述应用程序文件中各子文件的文件标识;根据当前子文件的文件类型提取相应的文件标识;判断所述文件标识是否与预设的文件标识一致;若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改,向终端发送提示信息;如此,当应用程序文件被篡改时,服务器可以及时向用户发送提示信息,避免用户的隐私及利益遭到破坏,还避免了用户受到广告信息的干扰等,确保用户的利益、隐私信息及使用效果。
Description
技术领域
本发明属于信息处理技术领域,尤其涉及一种防止应用程序文件被篡改的方法及服务器。
背景技术
目前,随着移动终端的日益普及,安装在移动终端的应用程序(APP,Application)越来越多。
但是一些非正常用户,会将现有的APP进行二次打包,从而被植入恶意代码或者其他第三方程序,将最终被二次打包的APP通过其他渠道进行下载,最终被安装到用户的移动终端上,而被植入的恶意程序可以实现恶意扣费、弹广告信息、偷偷下载其他APP程序安装到用户终端上,以偷窥及收集用户隐私信息等等。
发明内容
针对现有技术存在的问题,本发明实施例提供了一种防止应用程序文件被篡改的方法及服务器,用于解决现有技术中APP容易被非正常用户篡改,植入一些恶意程序,导致用户的隐私、利益得不到保障的技术问题。
本发明实施例提供一种防止应用程序文件被篡改的方法,应用于服务器,所述方法包括:
接收终端发送的所述应用程序文件中各子文件的文件标识;
根据当前子文件的文件类型提取相应的文件标识;
判断所述文件标识是否与预设的文件标识一致;
若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改,向终端发送提示信息。
上述方案中,所述接收所述应用程序文件中各子文件的文件标识后,还包括:
基于预设的解密规则对各子文件的文件标识进行解密。
上述方案中,所述若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改后,还包括:断开用户登陆的信号链路。
上述方案中,所述文件标识包括:文件名称或哈希hash校验值。
上述方案中,所述子文件包括:安装包APK文件、可扩展标记性语言XML文件及可执行DEX文件。
本发明实施例还提供一种服务器,所述服务器包括:
接收单元,用于接收所述应用程序文件中各子文件的文件标识;
提取单元,用于根据当前子文件的文件类型提取相应的文件标识;
判断单元,用于判断所述文件标识是否与预设的文件标识一致;
确定单元,用于在所述文件标识与所述预设的文件标识不一致的情况下,则确定所述应用程序文件被篡改;
发送单元,用于向终端发送提示信息。
上述方案中,所述接收单元还用于:
收所述应用程序文件中各子文件的文件标识后,基于预设的解密规则对各子文件的文件标识进行解密。
上述方案中,所述文件标识包括:文件名称或哈希hash校验值;
所述子文件包括:安装包APK文件、可扩展标记性语言XML文件及可执行DEX文件。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
接收终端发送的所述应用程序文件中各子文件的文件标识;
根据当前子文件的文件类型提取相应的文件标识;
判断所述文件标识是否与预设的文件标识一致;
若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改,向终端发送提示信息。
本发明实施例还提供一种防止应用程序文件被篡改的计算机设备,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中,
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如上述任一所述的方法。
本发明实施例提供了一种防止应用程序文件被篡改的方法及服务器,应用于SO层,所述方法包括:接收终端发送的所述应用程序文件中各子文件的文件标识;根据当前子文件的文件类型提取相应的文件标识;判断所述文件标识是否与预设的文件标识一致;若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改,向终端发送提示信息;如此,当应用程序文件被篡改时,服务器可以及时向用户发送提示信息,避免用户的隐私及利益遭到破坏,还避免了用户受到广告信息的干扰等,确保用户的利益、隐私信息及使用效果。
附图说明
图1为本发明实施例一提供的防止应用程序文件被篡改的方法流程示意图;
图2为本发明实施例一提供的防止应用程序文件被篡改的服务器结构示意图;
图3为本发明实施例一提供的防止应用程序文件被篡改的计算机设备结构示意图。
具体实施方式
为了解决现有技术中APP容易被非正常用户篡改,植入一些恶意程序,导致用户的隐私、利益得不到保障的技术问题,本发明提供了一种防止应用程序文件被篡改的方法及服务器,应用于服务器,所述方法包括:接收终端发送的所述应用程序文件中各子文件的文件标识;根据当前子文件的文件类型提取相应的文件标识;判断所述文件标识是否与预设的文件标识一致;若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改,向终端发送提示信息;
下面通过附图及具体实施例对本发明的技术方案做进一步的详细说明。
实施例一
本实施例提供一种防止应用程序文件被篡改的方法,该方法可以在SO层来实现,也可以在Java层来实现,为了提高应该方法的复杂度及逆向分析度,本实施例中的方法应用于SO层,如图1所示,所述方法包括:
S101,接收终端发送的所述应用程序文件中各子文件的文件标识;
S102,根据当前子文件的文件类型提取相应的文件标识;
S103,判断所述文件标识是否与预设的文件标识一致;若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改;
S104,向终端发送提示信息。
需要说明的是,在SO层编写的文件为SO文件,一般情况下,android系统中用到的SO文件是一个c++的函数库,在android的本地接口(JNI,Java Native Interface)中,是先将相应的C语言或者C++语言打包成SO文件库,再导入到lib文件夹中调用的。而SO层与java层的通信也是通过JNI来实现的。
具体地,在步骤S101中,服务器在接收终端发送的所述应用程序文件中各子文件的文件标识之前,终端需要先获取到各子文件的文件标识。
这里,当应用程序文件安装到终端后,其安装的路径下存放着所有子文件,因此所述终端就可以根据安装路径来获取各子文件。
具体地,首先获取context对象,所述context对象为一个调用接口,所述获取context对象实现程序如下:
jcl_context=(*env)->FindClass(env,"android/content/Context");
然后基于所述context对象确定获取应用程序文件安装目录的方法getPackageCodePath,获取getPackageCodePath的实现程序如下:
jmethodID fn_path=(*env)->GetMethodID(env,jcl_context,"getPackageCodePath","()Ljava/lang/String;");
最后调用getPackageCodePath方法就可得到所述应用程序文件的安装路径jpath;实现程序如下:
jstring jpath=(*env)->CallObjectMethod(env,context,fn_path);
由于应用程序文件是一个压缩文件,那么获取到应用程序文件的安装路径后,为了读取压缩文件ZipFile,需要获取压缩组件的ZIP对象,来读取压缩文件的内容。
首先获取件ZipFile类名称,实现程序如下:
jcl_zip=(*env)->FindClass(env,"java/util/zip/ZipFile");
然后获取ZipFile类的接口,以能通过该接口获取ZipFile类,实现程序如下:
jmethodID fn_construct=(*env)->GetMethodID(env,jcl_zip,"<init>","(Ljava/lang/String;)V");
然后获取所述ZipFile类具体内容的接口,以能通过该接口获取ZipFile类中的具体内容,程序实现如下:
jmethodID fn_getentry=(*env)->GetMethodID(env,jcl_zip,"getEntry","(Ljava/lang/String;)Ljava/util/zip/ZipEntry;");
再获取ZipEntry的类方法,所述ZipEntry为进入所述ZipFile类具体内容的入口,程序实现如下:
jcl_zipentry=(*env)->FindClass(env,"java/util/zip/ZipEntry");
最后基于所述ZipEntry获取ZipFile类的具体内容,并基于ZipFile类的具体内容创建所述ZipFile的实例对象objZipFile,程序实现如下:
objZipFile=(*env)->NewObject(env,jcl_zip,fn_construct,jpath);
其中,所述实例对象objZipFile中包含多个ZipFile子文件,当ZipFile的实例对象objZipFile建立好之后,需要获取各ZipFile子文件的文件标识。
本实施例中,所述ZipFile子文件包括:安装包APK文件、可扩展标记性语言XML文件及可执行DEX文件。所述ZipFile子文件简称为子文件。
对于所述APK文件来说,文件标识可以为文件名称;而对于所述XML文件及DEX文件来说,所述文件标识为hash校验值。
先以APK文件为例,首先需要获取枚举类名称Enumeration,程序实现如下:
jcl_enum=(*env)->FindClass(env,"java/util/Enumeration");
然后获取Enumeration类的接口entries,实现程序如下:
jmethodID fn_getentrys=(*env)->GetMethodID(env,jcl_zip,"entries","()Ljava/util/Enumeration;");
再通过该接口调用实例对象objZipFile的内容,获取当前子文件的文件名称,程序实现如下:
jmethodID fn_getname=(*env)->GetMethodID(env,jcl_zipentry,"getName","()Ljava/lang/String;");
如果想获取下一个子文件的名称,需要获取hasMoreElements接口,程序实现如下:
jmethodID fn_hasMoreElements=(*env)->GetMethodID(env,jcl_enum,"hasMoreElements","()Z");
然后基于所述hasMoreElements接口调用实例对象objZipFile的内容,获取下一个子文件的文件名称,程序实现如下:
jmethodID fn_nextElement=(*env)->GetMethodID(env,jcl_enum,"nextElement","()Ljava/lang/Object;");
所述nextElement即为下一个子文件。
当获取到各个子文件的文件名称后,遍历整个压缩包,查找APK文件。
具体地,首先获取ZipFile的入口函数对象,程序实现如下:
objEntrys=(*env)->CallObjectMethod(env,objZipFile,fn_getentrys);
然后基于所述ZipFile的入口函数对象,进入所述实例对象objZipFile中,循环遍历各个子文件,程序实现如下:
while((*env)->CallBooleanMethod(env,objEntrys,fn_hasMoreElements))
遍历之后,得到各个子文件,实现如下:
jobject dexentry=(*env)->CallObjectMethod(env,objEntrys,fn_nextElement);
然后获取各个子文件的文件名称,实现如下:
jstring filename=(jstring)(*env)->CallObjectMethod(env,dexentry,fn_getname);
将各个文件名称转换为char的类型,实现如下:
const char*msg_str=(*env)->GetStringUTFChars(env,filename,0);
其中,所述msg_str即为对应的文件名称。
再判断所述文件名称是否为APK文件名称,如果是APK文件名称,将该子文件及文件名称记录保存,如果不是,则丢弃。判断实现如下;
const char*ptrApk=strstr(msg_str,".apk");
具体是若ptrApk为空,则确定不是一个APK文件名称,若ptrApk不为空,则确定是一个APK文件名称。
遍历完之后,则可以获得所有的APK文件名称。
为了提高该方法的复杂度,将所述APK文件名称进行打包并加密发送至服务器。
同样地,对于所述XML文件及DEX文件来说,也是需要建立ZipFile的实例对象objZipFile,其建立过程与上文完全相同,故而不再赘述。
与APK文件不同的是,APK文件的文件标识是文件名称,而XML文件及DEX文件的文件标识是hash校验值。
对XML文件进行hash校验获取hash校验值时,以AndroidManifest.xml文件为例,具体如下:
首先创建一个字符串,所述字符串的文件名称是AndroidManifest.xml,程序实现如下:
strXML=(*env)->NewStringUTF(env,"AndroidManifest.xml");
获取AndroidManifest.xml字符串文件对应的压缩文件对象objZipEntry,具体实现如下:
objZipEntry=(*env)->CallObjectMethod(env,objZipFile,fn_getentry,strXML);
最后基于压缩文件对象objZipEntry,利用CRC算法计算所述AndroidManifest.xml字符串文件的hash值,程序实现如下:
jlong ret1=(*env)->CallLongMethod(env,objZipEntry,fn_getcrc);
其中,所述ret1即是AndroidManifest.xml字符串文件的hash值。
进一步地,对DEX文件进行hash校验获取hash校验值时,具体实现如下:
同样地,创建一个DEX字符串,所述字符串的文件名称是classes.dex,程序实现如下:
strDex=(*env)->NewStringUTF(env,"classes.dex");
获取classes.dex字符串文件对应的压缩文件对象objZipEntry,具体实现如下:
jlong ret=(*env)->CallLongMethod(env,objZipEntry,fn_getcrc);
最后基于压缩文件对象objZipEntry,利用CRC算法计算所述classes.dex字符串文件的hash值,程序实现如下:
jlong ret 2=(*env)->CallLongMethod(env,objZipEntry,fn_getcrc);
其中,所述ret2即是classes.dex字符串文件的hash值。
当终端获取到DEX文件的hash值及XML文件的hash值后,需要将DEX文件的hash值及XML文件的hash值发送至服务器。
服务器即接收所述应用程序文件中各子文件的文件标识。
那么步骤S102中,服务器接收到所述应用程序文件中各子文件的文件标识后,获取当前子文件的文件类型,再根据当前子文件的文件类型提取相应的文件标识。
然后步骤S103中,服务器判断所述文件标识是否与预设的文件标识一致;若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改。
具体地,当服务器接收到APK文件名称后,需要对其进行解压缩、并利用预设的解密规则进行解密,解密之后,遍历各APK文件名称,若所述APK文件名称与预设的APK文件名称不同,则确定所述应用程序文件中存在第三方APK文件,即所述应用程序文件被篡改。
同样地,当服务器接收到DEX文件的hash值后,判断所述DEX文件的hash值是否与预设的hash值一致,若不一致,则确定所述应用程序文件被篡改,存在恶意广告信息。
当当服务器接收到XML文件的hash值后,判断所述到XML文件的hash值是否与预设的hash值一致,若不一致,则确定所述应用程序文件被篡改,存在恶意广告信息。
当服务器确定所述应用程序文件被篡改时,则进行步骤S104,向终端发送提示信息,提示当前应用程序文件存在不安全。当然,服务器还可以直接断开用户登录的信号链路,阻止用户登录当前的APP。这样就可以确保用户的利益及隐私信息。
实施例二
相应于实施例一,本实施例还提供一种服务器,如图2所示,所述服务器包括:接收单元21、提取单元22、判断单元23、确定单元24及发送单元25;其中,
接收单元21用于接收终端发送的所述应用程序文件中各子文件的文件标识。而接收单元21在接收终端发送的所述应用程序文件中各子文件的文件标识之前,终端需要先获取到各子文件的文件标识。
这里,当应用程序文件安装到终端后,其安装的路径下存放着所有子文件,因此所述终端就可以根据安装路径来获取各子文件。
具体地,首先获取context对象,所述context对象为一个调用接口,所述获取context对象实现程序如下:
jcl_context=(*env)->FindClass(env,"android/content/Context");
然后基于所述context对象确定获取应用程序文件安装目录的方法getPackageCodePath,获取getPackageCodePath的实现程序如下:
jmethodID fn_path=(*env)->GetMethodID(env,jcl_context,"getPackageCodePath","()Ljava/lang/String;");
最后调用getPackageCodePath方法就可得到所述应用程序文件的安装路径jpath;实现程序如下:
jstring jpath=(*env)->CallObjectMethod(env,context,fn_path);
由于应用程序文件是一个压缩文件,那么获取到应用程序文件的安装路径后,为了读取压缩文件ZipFile,需要获取压缩组件的ZIP对象,来读取压缩文件的内容。
首先获取件ZipFile类名称,实现程序如下:
jcl_zip=(*env)->FindClass(env,"java/util/zip/ZipFile");
然后获取ZipFile类的接口,以能通过该接口获取ZipFile类,实现程序如下:
jmethodID fn_construct=(*env)->GetMethodID(env,jcl_zip,"<init>","(Ljava/lang/String;)V");
然后获取所述ZipFile类具体内容的接口,以能通过该接口获取ZipFile类中的具体内容,程序实现如下:
jmethodID fn_getentry=(*env)->GetMethodID(env,jcl_zip,"getEntry","(Ljava/lang/String;)Ljava/util/zip/ZipEntry;");
再获取ZipEntry的类方法,所述ZipEntry为进入所述ZipFile类具体内容的入口,程序实现如下:
jcl_zipentry=(*env)->FindClass(env,"java/util/zip/ZipEntry");
最后基于所述ZipEntry获取ZipFile类的具体内容,并基于ZipFile类的具体内容创建所述ZipFile的实例对象objZipFile,程序实现如下:
objZipFile=(*env)->NewObject(env,jcl_zip,fn_construct,jpath);
其中,所述实例对象objZipFile中包含多个ZipFile子文件,当ZipFile的实例对象objZipFile建立好之后,需要获取各ZipFile子文件的文件标识。
本实施例中,所述ZipFile子文件包括:安装包APK文件、可扩展标记性语言XML文件及可执行DEX文件。所述ZipFile子文件简称为子文件。
对于所述APK文件来说,文件标识可以为文件名称;而对于所述XML文件及DEX文件来说,所述文件标识为hash校验值。
先以APK文件为例,首先需要获取枚举类名称Enumeration,程序实现如下:
jcl_enum=(*env)->FindClass(env,"java/util/Enumeration");
然后获取Enumeration类的接口entries,实现程序如下:
jmethodID fn_getentrys=(*env)->GetMethodID(env,jcl_zip,"entries","()Ljava/util/Enumeration;");
再通过该接口调用实例对象objZipFile的内容,获取当前子文件的文件名称,程序实现如下:
jmethodID fn_getname=(*env)->GetMethodID(env,jcl_zipentry,"getName","()Ljava/lang/String;");
如果想获取下一个子文件的名称,需要获取hasMoreElements接口,程序实现如下:
jmethodID fn_hasMoreElements=(*env)->GetMethodID(env,jcl_enum,"hasMoreElements","()Z");
然后基于所述hasMoreElements接口调用实例对象objZipFile的内容,获取下一个子文件的文件名称,程序实现如下:
jmethodID fn_nextElement=(*env)->GetMethodID(env,jcl_enum,"nextElement","()Ljava/lang/Object;");
所述nextElement即为下一个子文件。
当获取到各个子文件的文件名称后,遍历整个压缩包,查找APK文件。
具体地,首先获取ZipFile的入口函数对象,程序实现如下:
objEntrys=(*env)->CallObjectMethod(env,objZipFile,fn_getentrys);
然后基于所述ZipFile的入口函数对象,进入所述实例对象objZipFile中,循环遍历各个子文件,程序实现如下:
while((*env)->CallBooleanMethod(env,objEntrys,fn_hasMoreElements))
遍历之后,得到各个子文件,实现如下:
jobject dexentry=(*env)->CallObjectMethod(env,objEntrys,fn_nextElement);
然后获取各个子文件的文件名称,实现如下:
jstring filename=(jstring)(*env)->CallObjectMethod(env,dexentry,fn_getname);
将各个文件名称转换为char的类型,实现如下:
const char*msg_str=(*env)->GetStringUTFChars(env,filename,0);
其中,所述msg_str即为对应的文件名称。
再判断所述文件名称是否为APK文件名称,如果是APK文件名称,将该子文件及文件名称记录保存,如果不是,则丢弃。判断实现如下;
const char*ptrApk=strstr(msg_str,".apk");
具体是若ptrApk为空,则确定不是一个APK文件名称,若ptrApk不为空,则确定是一个APK文件名称。
遍历完之后,则可以获得所有的APK文件名称。
为了提高该方法的复杂度,将所述APK文件名称进行打包并加密发送至服务器。
同样地,对于所述XML文件及DEX文件来说,也是需要建立ZipFile的实例对象objZipFile,其建立过程与上文完全相同,故而不再赘述。
与APK文件不同的是,APK文件的文件标识是文件名称,而XML文件及DEX文件的文件标识是hash校验值。
对XML文件进行hash校验获取hash校验值时,以AndroidManifest.xml文件为例,具体如下:
首先创建一个字符串,所述字符串的文件名称是AndroidManifest.xml,程序实现如下:
strXML=(*env)->NewStringUTF(env,"AndroidManifest.xml");
获取AndroidManifest.xml字符串文件对应的压缩文件对象objZipEntry,具体实现如下:
objZipEntry=(*env)->CallObjectMethod(env,objZipFile,fn_getentry,strXML);
最后基于压缩文件对象objZipEntry,利用CRC算法计算所述AndroidManifest.xml字符串文件的hash值,程序实现如下:
jlong ret1=(*env)->CallLongMethod(env,objZipEntry,fn_getcrc);
其中,所述ret1即是AndroidManifest.xml字符串文件的hash值。
进一步地,对DEX文件进行hash校验获取hash校验值时,具体实现如下:
同样地,创建一个DEX字符串,所述字符串的文件名称是classes.dex,程序实现如下:
strDex=(*env)->NewStringUTF(env,"classes.dex");
获取classes.dex字符串文件对应的压缩文件对象objZipEntry,具体实现如下:
jlong ret=(*env)->CallLongMethod(env,objZipEntry,fn_getcrc);
最后基于压缩文件对象objZipEntry,利用CRC算法计算所述classes.dex字符串文件的hash值,程序实现如下:
jlong ret 2=(*env)->CallLongMethod(env,objZipEntry,fn_getcrc);
其中,所述ret2即是classes.dex字符串文件的hash值。
当终端获取到DEX文件的hash值及XML文件的hash值后,需要将DEX文件的hash值及XML文件的hash值发送至服务器。
接收单元21接收到所述应用程序文件中各子文件的文件标识,需要对其进行解压缩、并利用预设的解密规则进行解密,解密之后,获取当前子文件的文件类型,所述提取单元22再根据当前子文件的文件类型提取相应的文件标识。
那么判断单元23判断所述文件标识是否与预设的文件标识一致;若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改。
具体地,所述判断单元23遍历各APK文件名称,若所述APK文件名称与预设的APK文件名称不同,所述确定单元24则确定所述应用程序文件中存在第三方APK文件,即所述应用程序文件被篡改。
同样地,当接收单元21接收到DEX文件的hash值后,所述判断单元23判断所述DEX文件的hash值是否与预设的hash值一致,若不一致,所述确定单元24则确定所述应用程序文件被篡改,存在恶意广告信息。
当接收单元21接收到XML文件的hash值后,所述判断单元23判断所述到XML文件的hash值是否与预设的hash值一致,若不一致,所述确定单元24则确定所述应用程序文件被篡改,存在恶意广告信息。
当确定所述应用程序文件被篡改时,所述发送单元25用于向终端发送提示信息,提示当前应用程序文件存在不安全。当然,所述发送单元25还可以直接断开用户登录的信号链路,阻止用户登录当前的APP。这样就可以确保用户的利益及隐私信息。
实施例三
本实施例还提供一种防止应用程序文件被篡改的计算机设备,如图3所示,所述计算机设备包括:射频(Radio Frequency,RF)电路310、存储器320、输入单元330、显示单元340、音频电路350、WiFi模块360、处理器370、以及电源380等部件。本领域技术人员可以理解,图3中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图3对计算机设备的各个构成部件进行具体的介绍:
RF电路310可用于信号的接收和发送,特别地,将基站的下行信息接收后,给处理器370处理。通常,RF电路310包括但不限于至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。
存储器320可用于存储软件程序以及模块,处理器370通过运行存储在存储器320的软件程序以及模块,从而执行计算机设备的各种功能应用以及数据处理。存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元330可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。具体地,输入单元330可包括键盘331以及其他输入设备332。键盘331,可收集用户在其上的输入操作,并根据预先设定的程式驱动相应的连接装置。键盘331采集到输出信息后再送给处理器370。除了键盘331,输入单元330还可以包括其他输入设备332。具体地,其他输入设备332可以包括但不限于触控面板、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元340可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元340可包括显示面板341,可选的,可以采用液晶显示器(LiquidCrystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板341。进一步的,键盘331可覆盖显示面板341,当键盘331检测到在其上或附近的触摸操作后,传送给处理器370以确定触摸事件的类型,随后处理器370根据输入事件的类型在显示面板341上提供相应的视觉输出。虽然在图3中键盘331与显示面板341是作为两个独立的部件来实现计算机设备的输入和输入功能,但是在某些实施例中,可以将键盘331与显示面板341集成而实现计算机设备的输入和输出功能。
音频电路350、扬声器351,传声器352可提供用户与计算机设备之间的音频接口。音频电路350可将接收到的音频数据转换后的电信号,传输到扬声器351,由扬声器351转换为声音信号输出;
WiFi属于短距离无线传输技术,计算机设备通过WiFi模块360可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图3示出了WiFi模块360,但是可以理解的是,其并不属于计算机设备的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器370是计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器320内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器370可包括一个或多个处理单元;优选的,处理器370可集成应用处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等。
计算机设备还包括给各个部件供电的电源380(比如电源适配器),优选的,电源可以通过电源管理系统与处理器370逻辑相连。
本发明实施例提供的防止应用程序文件被篡改的方法及服务器能带来的有益效果至少是:
本发明实施例提供了一种防止应用程序文件被篡改的方法及服务器,应用于服务器,所述方法包括:接收所述应用程序文件中各子文件的文件标识;根据当前子文件的文件类型提取相应的文件标识;判断所述文件标识是否与预设的文件标识一致;若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改,向终端发送提示信息;如此,当应用程序文件被篡改时,服务器可以及时向用户发送提示信息,避免用户的隐私及利益遭到破坏,还避免了用户受到广告信息的干扰等,确保用户的利益及使用效果。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP,Digital Signal Processing)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读存储介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供;该程序被处理器执行时实现以下步骤:接收所述应用程序文件中各子文件的文件标识;根据当前子文件的文件类型提取相应的文件标识;判断所述文件标识是否与预设的文件标识一致;若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改,向终端发送提示信息。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种防止应用程序文件被篡改的方法,其特征在于,应用于服务器,所述方法包括:
接收终端发送的所述应用程序文件中各子文件的文件标识;
根据当前子文件的文件类型提取相应的文件标识;
判断所述文件标识是否与预设的文件标识一致;
若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改,向终端发送提示信息。
2.如权利要求1所述的方法,其特征在于,所述接收所述应用程序文件中各子文件的文件标识后,还包括:
基于预设的解密规则对各子文件的文件标识进行解密。
3.如权利要求1所述的方法,其特征在于,所述若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改后,还包括:断开用户登陆的信号链路。
4.如权利要求1所述的方法,其特征在于,所述文件标识包括:文件名称或哈希hash校验值。
5.如权利要求1所述的方法,其特征在于,所述子文件包括:安装包APK文件、可扩展标记性语言XML文件及可执行DEX文件。
6.一种服务器,其特征在于,所述服务器包括:
接收单元,用于接收所述应用程序文件中各子文件的文件标识;
提取单元,用于根据当前子文件的文件类型提取相应的文件标识;
判断单元,用于判断所述文件标识是否与预设的文件标识一致;
确定单元,用于在所述文件标识与所述预设的文件标识不一致的情况下,则确定所述应用程序文件被篡改;
发送单元,用于向终端发送提示信息。
7.如权利要求6所述的服务器,其特征在于,所述接收单元还用于:
收所述应用程序文件中各子文件的文件标识后,基于预设的解密规则对各子文件的文件标识进行解密。
8.如权利要求5所述的服务器,其特征在于,所述文件标识包括:文件名称或哈希hash校验值;
所述子文件包括:安装包APK文件、可扩展标记性语言XML文件及可执行DEX文件。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现以下步骤:
接收终端发送的所述应用程序文件中各子文件的文件标识;
根据当前子文件的文件类型提取相应的文件标识;
判断所述文件标识是否与预设的文件标识一致;
若所述文件标识与所述预设的文件标识不一致,则确定所述应用程序文件被篡改,向终端发送提示信息。
10.一种防止应用程序文件被篡改的计算机设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中,
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710891809.1A CN109558732A (zh) | 2017-09-27 | 2017-09-27 | 一种防止应用程序文件被篡改的方法及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710891809.1A CN109558732A (zh) | 2017-09-27 | 2017-09-27 | 一种防止应用程序文件被篡改的方法及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109558732A true CN109558732A (zh) | 2019-04-02 |
Family
ID=65864167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710891809.1A Pending CN109558732A (zh) | 2017-09-27 | 2017-09-27 | 一种防止应用程序文件被篡改的方法及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558732A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111062030A (zh) * | 2019-12-16 | 2020-04-24 | 北京爱奇艺科技有限公司 | 一种应用程序被篡改的识别方法及装置 |
CN113031957A (zh) * | 2020-12-16 | 2021-06-25 | 深圳市欢太科技有限公司 | 应用程序的安装方法、客户端、终端、服务器及存储介质 |
CN113434865A (zh) * | 2021-06-29 | 2021-09-24 | 平安普惠企业管理有限公司 | 一种用于移动端的安全检测方法、装置、设备及存储介质 |
CN114084168A (zh) * | 2021-10-27 | 2022-02-25 | 北京百度网讯科技有限公司 | 自动驾驶系统控制方法、装置、电子设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783100A (zh) * | 2001-11-26 | 2006-06-07 | 松下电器产业株式会社 | 应用程序认证系统 |
CN103312887A (zh) * | 2012-12-28 | 2013-09-18 | 武汉安天信息技术有限责任公司 | 一种手机应用篡改识别系统、方法及装置 |
CN104123491A (zh) * | 2014-07-18 | 2014-10-29 | 广州金山网络科技有限公司 | 一种检测应用程序安装包是否被篡改的方法及装置 |
US20150229673A1 (en) * | 2012-09-03 | 2015-08-13 | Ahnlab, Inc. | Apparatus and method for diagnosing malicious applications |
CN106055341A (zh) * | 2016-06-14 | 2016-10-26 | 北京奇虎科技有限公司 | 应用程序安装包的校验方法及装置 |
-
2017
- 2017-09-27 CN CN201710891809.1A patent/CN109558732A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783100A (zh) * | 2001-11-26 | 2006-06-07 | 松下电器产业株式会社 | 应用程序认证系统 |
US20150229673A1 (en) * | 2012-09-03 | 2015-08-13 | Ahnlab, Inc. | Apparatus and method for diagnosing malicious applications |
CN103312887A (zh) * | 2012-12-28 | 2013-09-18 | 武汉安天信息技术有限责任公司 | 一种手机应用篡改识别系统、方法及装置 |
CN104123491A (zh) * | 2014-07-18 | 2014-10-29 | 广州金山网络科技有限公司 | 一种检测应用程序安装包是否被篡改的方法及装置 |
CN106055341A (zh) * | 2016-06-14 | 2016-10-26 | 北京奇虎科技有限公司 | 应用程序安装包的校验方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111062030A (zh) * | 2019-12-16 | 2020-04-24 | 北京爱奇艺科技有限公司 | 一种应用程序被篡改的识别方法及装置 |
CN113031957A (zh) * | 2020-12-16 | 2021-06-25 | 深圳市欢太科技有限公司 | 应用程序的安装方法、客户端、终端、服务器及存储介质 |
CN113434865A (zh) * | 2021-06-29 | 2021-09-24 | 平安普惠企业管理有限公司 | 一种用于移动端的安全检测方法、装置、设备及存储介质 |
CN114084168A (zh) * | 2021-10-27 | 2022-02-25 | 北京百度网讯科技有限公司 | 自动驾驶系统控制方法、装置、电子设备及可读存储介质 |
CN114084168B (zh) * | 2021-10-27 | 2024-06-25 | 北京百度网讯科技有限公司 | 自动驾驶系统控制方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110869907B (zh) | 一种浏览应用页面的方法及终端 | |
CN107786504B (zh) | Elf文件发布方法、elf文件校验方法、服务器及终端 | |
CN103400076B (zh) | 一种移动终端上的恶意软件检测方法、装置和系统 | |
EP3200487B1 (en) | Message processing method and apparatus | |
CN110417543B (zh) | 一种数据加密方法、装置和存储介质 | |
CN106598584B (zh) | 一种处理资源文件的方法、装置和系统 | |
CN107040609B (zh) | 一种网络请求处理方法和装置 | |
CN105302587B (zh) | 数据更新方法及装置 | |
CN107451852A (zh) | 一种直播平台中第三方直播应用app的推广方法及服务器 | |
US20110191764A1 (en) | Systems, methods, and apparatuses for facilitating distribution of firmware updates | |
CN109558732A (zh) | 一种防止应用程序文件被篡改的方法及服务器 | |
US9747449B2 (en) | Method and device for preventing application in an operating system from being uninstalled | |
CN108241500A (zh) | 一种硬件组件的修复方法、装置、系统和存储介质 | |
KR20160058673A (ko) | 웹 기반 운영 체제에서의 주입형 공격을 방지하는 방법 및 장치 | |
WO2015078274A1 (en) | Devices and methods for password storage | |
CN104598263A (zh) | 应用程序运行方法、配置文件生成方法和装置 | |
CN109088844B (zh) | 信息拦截方法、终端、服务器及系统 | |
CN106709282B (zh) | 资源文件解密方法及装置 | |
CN104965722A (zh) | 一种显示信息的方法及装置 | |
CN106953898B (zh) | 一种获取软件包的方法和装置 | |
CN104580177A (zh) | 资源提供方法、装置和系统 | |
CN109873794A (zh) | 一种拒绝服务攻击的防护方法及服务器 | |
CN103546887A (zh) | 一种应用软件传输方法、装置、终端及服务器 | |
CN103607431B (zh) | 移动终端资源处理方法、装置和设备 | |
CN103533545B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190402 |
|
RJ01 | Rejection of invention patent application after publication |