CN106708555B - 一种加载插件的方法和装置 - Google Patents

一种加载插件的方法和装置 Download PDF

Info

Publication number
CN106708555B
CN106708555B CN201610493877.8A CN201610493877A CN106708555B CN 106708555 B CN106708555 B CN 106708555B CN 201610493877 A CN201610493877 A CN 201610493877A CN 106708555 B CN106708555 B CN 106708555B
Authority
CN
China
Prior art keywords
file
odex
characteristic value
odex file
data
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
CN201610493877.8A
Other languages
English (en)
Other versions
CN106708555A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610493877.8A priority Critical patent/CN106708555B/zh
Publication of CN106708555A publication Critical patent/CN106708555A/zh
Application granted granted Critical
Publication of CN106708555B publication Critical patent/CN106708555B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种加载插件的方法和装置,属于计算机技术领域。所述方法包括:在接收到对应目标插件的加载指令之后,获取所述目标插件的odex文件,在所述odex文件中,获取DexFile部分的文件数据;通过预先存储的文件特征值算法,确定所述DexFile部分的文件数据的特征值;如果确定出的特征值与预先存储的基准特征值相匹配,则加载所述odex文件,其中,所述基准特征值是在基于所述目标插件生成odex文件后,根据生成的odex文件中的DexFile部分的文件数据,以及所述文件特征值算法确定出的。采用本发明,可以节约终端的处理资源。

Description

一种加载插件的方法和装置
技术领域
本发明涉及计算机技术领域,特别涉及一种加载插件的方法和装置。
背景技术
随着终端技术的发展,终端的应用越来越广泛,功能也越来越强大。终端上可以安装多个客户端,客户端在启动时通常需要加载插件,终端在第一次加载某插件时,会对该插件的代码进行优化,生成该插件对应的odex文件,odex文件中包括该插件的代码,以及根据该插件的代码生成的索引数据,然后加载该odex文件,这样,终端可以根据索引数据快速的调用该插件的代码,从而提高处理效率。
在实际中,不法分子会对客户端的odex文件进行篡改,以谋取利益。例如,可以用伪造的odex文件替换客户端中的odex文件,伪造的odex文件运行后,会将用户在该客户端中输入的账号和密码发送给不法分子设置的服务器,这样,不法分子可以获取用户在该客户端中输入的账号和密码,进而窃取该账户中的资源(如资金或虚拟物品等)。
为了避免此类现象发生,在加载odex文件之前,终端通常会对odex文件进行安全性验证。终端可以在最初生成odex文件后,根据预设的文件特征值算法(如MD5算法),以及该odex文件的全部内容,计算该odex文件对应的特征值,并对该特征值进行存储。由于odex文件被篡改后,计算出的特征值会发生变化,因此,终端在每次加载odex文件之前,可以获取当前的odex文件,然后根据预设的文件特征值算法,重新计算该odex文件的特征值,进而可以判断计算出的特征值,与预先存储的特征值是否相同。如果相同,则说明odex文件没有被篡改,加载该odex文件,如果不相同,则判定该odex文件已经被篡改,删除该odex文件。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
在计算odex文件的特征值时,需要根据odex文件的全部内容,计算该odex文件的特征值,这样会占用终端大量的处理资源。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种加载插件的方法和装置。所述技术方案如下:
第一方面,提供了一种加载插件的方法,所述方法包括:
在接收到对应目标插件的加载指令之后,获取所述目标插件的odex文件,在所述odex文件中,获取DexFile部分的文件数据;
通过预先存储的文件特征值算法,确定所述DexFile部分的文件数据的特征值;
如果确定出的特征值与预先存储的基准特征值相匹配,则加载所述odex文件,其中,所述基准特征值是在基于所述目标插件生成odex文件后,根据生成的odex文件中的DexFile部分的文件数据,以及所述文件特征值算法确定出的。
可选的,所述方法还包括:
如果所述确定出的特征值与所述基准特征值不匹配,则删除所述odex文件,生成所述目标插件对应的odex文件,加载生成的odex文件。
可选的,所述基准特征值是在基于所述目标插件生成odex文件后,根据生成的odex文件中的DexOptHeader部分和DexFile部分的文件数据,以及所述文件特征值算法确定出的;
所述通过预先存储的文件特征值算法,确定所述DexFile部分的文件数据的特征值,包括:
在所述odex文件中,获取DexOptHeader部分的文件数据;
通过预先存储的文件特征值算法,确定所述DexOptHeader部分和DexFile部分的文件数据的特征值。
这样,可以根据DexOptHeader部分和DexFile部分的文件数据来计算特征值,然后再进行判断,可以提高判断的准确度。
可选的,所述如果确定出的特征值与预先存储的基准特征值相匹配,则加载所述odex文件,包括:
如果所述确定出的特征值与预先存储的基准特征值相匹配,则对所述目标插件的odex文件进行***校验,如果校验通过,则加载所述odex文件。
这样,可以通过***校验对odex文件进行进一步验证,可以提高验证的准确度。
可选的,所述方法还包括:
在加载所述odex文件的过程中,当检测到对应所述odex文件的读写指令时,获取读写后的odex文件中的DexFile部分的文件数据;
通过预先存储的文件特征值算法,确定所述读写后的odex文件中的DexFile部分的文件数据的特征值;
如果确定出的特征值与预先存储的基准特征值相匹配,则继续加载所述odex文件;如果确定出的特征值与预先存储的基准特征值不匹配,则停止加载所述odex文件,删除所述odex文件,生成所述目标插件对应的odex文件,加载生成的odex文件。
这样,可以实现在加载odex文件的过程中,实时监测odex文件是否被篡改,并在监测到odex文件发生篡改时,停止加载该odex文件。
第二方面,提供了一种加载插件的装置,所述装置包括:
第一获取模块,用于在接收到对应目标插件的加载指令之后,获取所述目标插件的odex文件,在所述odex文件中,获取DexFile部分的文件数据;
第一确定模块,用于通过预先存储的文件特征值算法,确定所述DexFile部分的文件数据的特征值;
第一加载模块,用于如果确定出的特征值与预先存储的基准特征值相匹配,则加载所述odex文件,其中,所述基准特征值是在基于所述目标插件生成odex文件后,根据生成的odex文件中的DexFile部分的文件数据,以及所述文件特征值算法确定出的。
可选的,所述装置还包括:
删除模块,用于如果所述确定出的特征值与所述基准特征值不匹配,则删除所述odex文件,生成所述目标插件对应的odex文件,加载生成的odex文件。
可选的,所述基准特征值是在基于所述目标插件生成odex文件后,根据生成的odex文件中的DexOptHeader部分和DexFile部分的文件数据,以及所述文件特征值算法确定出的;
所述第一确定模块,包括:
获取子模块,用于在所述odex文件中,获取DexOptHeader部分的文件数据;
确定子模块,用于通过预先存储的文件特征值算法,确定所述DexOptHeader部分和DexFile部分的文件数据的特征值。
可选的,所述第一加载模块,用于:
如果所述确定出的特征值与预先存储的基准特征值相匹配,则对所述目标插件的odex文件进行***校验,如果校验通过,则加载所述odex文件。
可选的,所述装置还包括:
第二获取模块,用于在加载所述odex文件的过程中,当检测到对应所述odex文件的读写指令时,获取读写后的odex文件中的DexFile部分的文件数据;
第二确定模块,用于通过预先存储的文件特征值算法,确定所述读写后的odex文件中的DexFile部分的文件数据的特征值;
第二加载模块,用于如果确定出的特征值与预先存储的基准特征值相匹配,则继续加载所述odex文件;如果确定出的特征值与预先存储的基准特征值不匹配,则停止加载所述odex文件,删除所述odex文件,生成所述目标插件对应的odex文件,加载生成的odex文件。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,在接收到对应目标插件的加载指令之后,获取目标插件的odex文件,在odex文件中,获取DexFile部分的文件数据,通过预先存储的文件特征值算法,确定DexFile部分的文件数据的特征值,如果确定出的特征值与预先存储的基准特征值相匹配,则加载odex文件,其中,基准特征值是在基于目标插件生成odex文件后,根据生成的odex文件中的DexFile部分的文件数据,以及文件特征值算法确定出的,基于上述处理,无需根据odex文件的全部内容计算特征值,从而可以节约终端的处理资源。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种加载插件的方法流程图;
图2是本发明实施例提供的一种加载插件的方法流程图;
图3是本发明实施例提供的一种odex文件的结构示意图;
图4是本发明实施例提供的一种加载插件的装置结构示意图;
图5是本发明实施例提供的一种加载插件的装置结构示意图;
图6是本发明实施例提供的一种加载插件的装置结构示意图;
图7是本发明实施例提供的一种加载插件的装置结构示意图;
图8是本发明实施例提供的一种终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种加载插件的方法,该方法的执行主体为终端。其中,终端可以是手机或平板电脑等移动终端,也可以是PC((personal computer,个人电脑)终端,该终端上可以安装一个或多个客户端。该终端可以包括处理器和存储器。其中,处理器可以用于计算odex文件对应的特征值,进而判断计算出的特征值与预先存储的基准特征值是否相匹配,如果匹配,则可以加载odex文件,否则,可以删除该odex文件,然后重新生成odex文件;存储器可以用于存储上述处理过程中产生或需要的数据。另外,终端还可以包括显示器、收发器和电源等部件。
如图1所示,该方法的处理流程可以包括如下的步骤:
步骤101,在接收到对应目标插件的加载指令之后,获取目标插件的odex文件,在odex文件中,获取DexFile部分的文件数据。
其中,odex文件是终端在第一次加载目标插件时,对目标插件的代码进行优化生成的文件,可称为目标插件的优化文件。
在实施中,用户可以在终端安装多个客户端(如手机管家等),客户端在启动时通常需要加载插件,终端在第一次加载某插件(即目标插件)时,终端会对目标插件的代码进行优化,生成目标插件对应的odex文件。例如,对于安卓***的手机,终端的***程序中设置有用于加载插件的***API(Application Programming Interface,应用程序编程接口),即DexClassLoader,DexClassLoader可以对目标插件的代码(即class.dex文件)进行优化,生成目标插件的odex文件。
odex文件中可以包括以下几个部分:DexOptHeader、DexFile、Dependencies(即依赖库列表)和OptData(即优化数据),如图2所示。其中,DexOptHeader是用于记录odex文件中各部分(如DexFile、Dependencies和OptData)的位置偏移和长度的文件,可称为头文件,一般情况下,DexOptHeader的长度为32个字节;DexFile是将目标插件中“class.dex”文件直接写入到odex文件中得到的,即DexFile是目标插件的完整的原始代码文件,可称为原始文件;Dependencies为依赖库列表,OptData为优化数据,均和本发明无直接关系,不做详细介绍。
终端生成odex文件后,可以对odex文件进行存储,以便用户再次开启该客户端时,该客户端可以加载对目标插件进行加载。当终端接收到对应目标插件的加载指令之后,终端可以获取目标插件的odex文件,进而可以在odex文件中,获取DexFile部分的文件数据。获取目标插件的odex文件,以及odex文件中的DexFile部分的文件数据的处理可以由客户端来实现。
可选的,终端可以先判断odex文件是否存在,相应的,步骤101的处理过程可以如下:接收到对应目标插件的加载指令之后,判断是否存在目标插件的odex文件,如果存在,则获取目标插件的odex文件,在odex文件中,获取DexFile部分的文件数据。
在实施中,终端接收到对应目标插件的加载指令之后,可以先判断是否存在目标插件的odex文件,如果存在,则可以获取目标插件的odex文件,在该odex文件中,获取DexFile部分的文件数据。如果不存在,则终端可以生成目标插件的odex文件,然后对生成的odex文件进行加载。判断是否存在目标插件的odex文件的处理可以由客户端来实现。
步骤102,通过预先存储的文件特征值算法,确定DexFile部分的文件数据的特征值。
在实施中,终端中可以预先存储文件特征值算法,该文件特征值算法可以采用现有技术中伪造难度较高的算法,如MD5(Message-Digest Algorithm 5,信息-摘要算法第五版)。终端获取到DexFile部分的文件数据后,可以通过预先存储的文件特征值算法,计算DexFile部分的文件数据的特征值(如MD5值)。终端可以计算DexFile部分的全部文件数据的特征值,也可以计算DexFile部分的部分文件数据的特征值。
可选的,可以根据odex文件中的DexOptHeader和DexFile,来计算特征值,相应的,步骤102的处理过程可以如下:在odex文件中,获取DexOptHeader部分的文件数据;通过预先存储的文件特征值算法,确定DexOptHeader部分和DexFile部分的文件数据的特征值。
在实施中,终端获取到DexFile部分的文件数据后,还可以在odex文件中,获取DexOptHeader部分的文件数据,进而通过预先存储的文件特征值算法,DexOptHeader部分和DexFile部分的文件数据的特征值。终端可以根据DexFile部分的全部文件数据,以及DexOptHeader部分的全部文件数据,来计算特征值,或者,终端可以根据从odex文件起始位置开始的预设字节数的文件数据,来计算特征值,例如,终端可以计算odex文件的前128字节的文件数据的特征值,在前128字节中,前32字节的文件数据为DexOptHeader部分的文件数据,后96字节的文件数据为DexFile部分的文件数据。在实际中,很难实现伪造后的odex文件中的DexOptHeader部分和DexFile部分,与原odex文件中DexOptHeader部分和DexFile部分相同,因此,通过计算DexOptHeader部分和DexFile部分的文件数据的特征值,可以准确的判断odex文件是否被篡改。另外,基于odex文件的文件格式,查找前128字节的文件数据,比只查找DexFile部分的文件数据的速度要快,因此,也可以提高终端的处理效率。步骤102的处理可以由客户端来实现。
步骤103,如果确定出的特征值与预先存储的基准特征值相匹配,则加载odex文件,其中,基准特征值是在基于目标插件生成odex文件后,根据生成的odex文件中的DexFile部分的文件数据,以及文件特征值算法确定出的。
在实施中,终端生成odex文件后,可以通过预先存储的文件特征值算法,计算生成的odex文件中DexFile部分的文件数据的特征值,将计算出的特征值作为基准特征值,并进行存储。计算特征值的处理也可以有客户端来实现,基准特征值可以存储在客户端中。
终端计算出特征值后,可以将计算出的特征值与基准特征值进行比较,如果计算出的特征值与基准特征值相同,则可以加载odex文件,如果计算出的特征值与基准特征值不相同,则可以删除odex文件,然后可以生成目标插件对应的odex文件,进而加载生成的odex文件。另外,终端还可以根据生成的odex文件后,可以根据生成的odex文件,重新计算基准特征值,然后将本地存储的基准特征值,更新为重新计算出的基准特征值。这样,根据最新生成的odex文件来计算基准特征值,可以在目标插件发生变化(如插件发生更新时),及时更新基准特征值。
另外,对于上述根据DexOptHeader部分和DexFile部分的文件数据,来计算特征值的验证策略,相应的,基准特征值可以是在基于目标插件生成odex文件后,根据生成的odex文件中的DexOptHeader部分和DexFile部分的文件数据,以及文件特征值算法确定出的,具体的计算过程与上述处理过程类似,不再赘述。步骤103的处理可以由客户端来实现。
可选的,终端还可以通过***校验来对odex文件进行验证,相应的处理过程可以如下:如果确定出的特征值与预先存储的基准特征值相匹配,则对目标插件的odex文件进行***校验,如果校验通过,则加载odex文件。
在实施中,如果终端确定出的特征值与预先存储的基准特征值相匹配,则可以目标插件的odex文件进行***校验,***校验可以采用现有技术中的校验方式,例如,可以通过crc(Cyclic Redundancy Check,循环冗余校验码)和modwhen(即odex文件的生成时间)对odex文件进行验证。如果校验通过,则可以加载odex文件,如果校验不通过,则可以删除odex文件,然后可以生成目标插件对应的odex文件,进而加载生成的odex文件。
可选的,可以在加载odex文件的过程中,实时监听odex文件是否被篡改,相应的处理过程可以如下:在加载odex文件的过程中,当检测到对应odex文件的读写指令时,获取读写后的odex文件中的DexFile部分的文件数据;通过预先存储的文件特征值算法,确定读写后的odex文件中的DexFile部分的文件数据的特征值;如果确定出的特征值与预先存储的基准特征值相匹配,则继续加载odex文件;如果确定出的特征值与预先存储的基准特征值不匹配,则停止加载odex文件,删除odex文件,生成目标插件对应的odex文件,加载生成的odex文件。
在实施中,终端在加载odex文件的过程中,可以实时检测是否接收到对应odex文件的读写指令,当终端检测到对应odex文件的读写指令时,终端可以按照上述特征值验证的方式,对odex文件进行重新验证,如果终端判定验证通过(即计算出的特征值与预先存储的基准特征值相匹配),则说明odex文件未被篡改,可以继续加载odex文件;如果终端判定验证不通过(即计算出的特征值与预先存储的基准特征值不匹配),则说明odex文件已经被篡改,可以停止加载odex文件,删除该odex文件,然后可以生成目标插件对应的odex文件,进而加载生成的odex文件。本处理可以由客户端来实现。
本实施例还提供了一种加载插件的方法,该方法的执行主体为终端,本实施例以该方法应用于终端中安装的某一客户端、文件特征值算法为MD5为例进行说明,如图3所示,该方法的处理流程可以包括如下的步骤:
步骤301,在接收到对应目标插件的加载指令之后,判断目标插件的odex文件是否存在。
当用户开启客户端时,或者用户在客户端的界面中,点击目标插件对应的功能选项时,客户端可以接收到对应目标插件的加载指令,然后可以判断目标插件的odex文件是否存在,如果存在,则执行步骤302,如果不存在,则执行步骤307。
步骤302,获取odex文件的前128字节的文件数据,计算该文件数据的MD5值。
客户端可以获取odex文件的前128字节的文件数据,在前128字节中,前32字节的文件数据为DexOptHeader部分的文件数据,后96字节的文件数据为DexFile部分的文件数据。客户端可以计算前128字节的MD5值(即特征值)。
步骤303,判断计算出的MD5值与预先存储的基准MD5值是否相同,如果相同,则执行步骤304~305,如果不同,则执行步骤306。
步骤304,对odex文件进行crc/modwhen校验。
客户端判断计算出的MD5值与基准MD5值相同,则可以调用终端的***程序的DexClassLoader接口,来加载目标插件的odex文件。客户端调用终端的***程序的DexClassLoader接口后,会触发***程序对odex文件进行***校验,***校验可以是crc/modwhen校验。
步骤305,如果校验通过,则加载目标插件的odex文件。
步骤306,删除获取到的odex文件,然后执行步骤306。
如果客户端判断计算出的MD5值与预先存储的基准MD5值不相同,则可以删除odex文件,然后可以调用***程序的DexClassLoader接口,重新生成目标插件对应的odex文件,加载生成的odex文件。需要说明的是,由于现有技术中***程序的处理机制,是***程序在检测到DexClassLoader接口被调用后,通常会进行crc/modwhen校验,因此,本步骤中,客户端调用***程序的DexClassLoader接口重新生成odex文件时,***程序会先执行crc/modwhen校验的步骤,即***程序先判断odex文件是否存在,***程序判定odex文件不存在后,再重新生成目标插件对应的odex文件,加载生成的odex文件。
步骤307,生成目标插件对应的odex文件,加载生成的odex文件。
如果客户端判断不存在odex文件,则可以调用终端的***程序的DexClassLoader接口,以使***程序生成目标插件的odex文件,并对该odex文件进行存储。另外,客户端还可以在生成的odex文件中,获取前128字节的文件数据,计算MD5值,将计算出的MD5值,作为odex文件对应的基准MD5值(即基准特征值)。
另外,在加载odex文件的过程中,客户端可以实时检测是否存在对应odex文件的读写指令,如果存在,则执行步骤302,如果不存在,则继续加载目标插件。
本发明实施例中,在接收到对应目标插件的加载指令之后,获取目标插件的odex文件,在odex文件中,获取DexFile部分的文件数据,通过预先存储的文件特征值算法,确定DexFile部分的文件数据的特征值,如果确定出的特征值与预先存储的基准特征值相匹配,则加载odex文件,其中,基准特征值是在基于目标插件生成odex文件后,根据生成的odex文件中的DexFile部分的文件数据,以及文件特征值算法确定出的,基于上述处理,无需根据odex文件的全部内容计算特征值,从而可以节约终端的处理资源。
基于相同的技术构思,本发明实施例还提供了一种加载插件的装置,如图4所示,该装置包括:
第一获取模块410,用于在接收到对应目标插件的加载指令之后,获取所述目标插件的odex文件,在所述odex文件中,获取DexFile部分的文件数据;
第一确定模块420,用于通过预先存储的文件特征值算法,确定所述DexFile部分的文件数据的特征值;
第一加载模块430,用于如果确定出的特征值与预先存储的基准特征值相匹配,则加载所述odex文件,其中,所述基准特征值是在基于所述目标插件生成odex文件后,根据生成的odex文件中的DexFile部分的文件数据,以及所述文件特征值算法确定出的。
可选的,如图5所示,所述装置还包括:
删除模块440,用于如果所述确定出的特征值与所述基准特征值不匹配,则删除所述odex文件,生成所述目标插件对应的odex文件,加载生成的odex文件。
可选的,所述基准特征值是在基于所述目标插件生成odex文件后,根据生成的odex文件中的DexOptHeader部分和DexFile部分的文件数据,以及所述文件特征值算法确定出的;
如图6所示,所述第一确定模块420,包括:
获取子模块421,用于在所述odex文件中,获取DexOptHeader部分的文件数据;
确定子模块422,用于通过预先存储的文件特征值算法,确定所述DexOptHeader部分和DexFile部分的文件数据的特征值。
可选的,所述第一获取模块410,用于:
接收到对应目标插件的加载指令之后,判断是否存在所述目标插件的odex文件,如果存在,则获取所述目标插件的odex文件,在所述odex文件中,获取DexFile部分的文件数据。
可选的,所述第一加载模块430,用于:
如果所述确定出的特征值与预先存储的基准特征值相匹配,则对所述目标插件的odex文件进行***校验,如果校验通过,则加载所述odex文件。
可选的,如图7所示,所述装置还包括:
第二获取模块450,用于在加载所述odex文件的过程中,当检测到对应所述odex文件的读写指令时,获取读写后的odex文件中的DexFile部分的文件数据;
第二确定模块460,用于通过预先存储的文件特征值算法,确定所述读写后的odex文件中的DexFile部分的文件数据的特征值;
第二加载模块470,用于如果确定出的特征值与预先存储的基准特征值相匹配,则继续加载所述odex文件。
本发明实施例中,在接收到对应目标插件的加载指令之后,获取目标插件的odex文件,在odex文件中,获取DexFile部分的文件数据,通过预先存储的文件特征值算法,确定DexFile部分的文件数据的特征值,如果确定出的特征值与预先存储的基准特征值相匹配,则加载odex文件,其中,基准特征值是在基于目标插件生成odex文件后,根据生成的odex文件中的DexFile部分的文件数据,以及文件特征值算法确定出的,基于上述处理,无需根据odex文件的全部内容计算特征值,从而可以节约终端的处理资源。
需要说明的是:上述实施例提供的加载插件的装置在加载插件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的加载插件的装置与加载插件的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图8,其示出了本发明实施例所涉及的终端的结构示意图,该终端可以用于实施上述实施例中提供的加载插件的方法。具体来讲:
终端900可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(wireless fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图8中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯***)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端900的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及终端900的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图8中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
终端900还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在终端900移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端900还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与终端900之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与终端900的通信。
WiFi属于短距离无线传输技术,终端900通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图8示出了WiFi模块170,但是可以理解的是,其并不属于终端900的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是终端900的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端900的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
终端900还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理***与处理器180逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端900还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端900的显示单元是触摸屏显示器,终端900还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行述一个或者一个以上程序包含用于进行以下操作的指令:
在接收到对应目标插件的加载指令之后,获取所述目标插件的odex文件,在所述odex文件中,获取DexFile部分的文件数据;
通过预先存储的文件特征值算法,确定所述DexFile部分的文件数据的特征值;
如果确定出的特征值与预先存储的基准特征值相匹配,则加载所述odex文件,其中,所述基准特征值是在基于所述目标插件生成odex文件后,根据生成的odex文件中的DexFile部分的文件数据,以及所述文件特征值算法确定出的。
可选的,所述方法还包括:
如果所述确定出的特征值与所述基准特征值不匹配,则删除所述odex文件,生成所述目标插件对应的odex文件,加载生成的odex文件。
可选的,所述基准特征值是在基于所述目标插件生成odex文件后,根据生成的odex文件中的DexOptHeader部分和DexFile部分的文件数据,以及所述文件特征值算法确定出的;
所述通过预先存储的文件特征值算法,确定所述DexFile部分的文件数据的特征值,包括:
在所述odex文件中,获取DexOptHeader部分的文件数据;
通过预先存储的文件特征值算法,确定所述DexOptHeader部分和DexFile部分的文件数据的特征值。
可选的,所述接收到对应目标插件的加载指令之后,获取所述目标插件的odex文件,在所述odex文件中,获取DexFile部分的文件数据,包括:
接收到对应目标插件的加载指令之后,判断是否存在所述目标插件的odex文件,如果存在,则获取所述目标插件的odex文件,在所述odex文件中,获取DexFile部分的文件数据。
可选的,所述如果确定出的特征值与预先存储的基准特征值相匹配,则加载所述odex文件,包括:
如果所述确定出的特征值与预先存储的基准特征值相匹配,则对所述目标插件的odex文件进行***校验,如果校验通过,则加载所述odex文件。
可选的,所述方法还包括:
在加载所述odex文件的过程中,当检测到对应所述odex文件的读写指令时,获取读写后的odex文件中的DexFile部分的文件数据;
通过预先存储的文件特征值算法,确定所述读写后的odex文件中的DexFile部分的文件数据的特征值;
如果确定出的特征值与预先存储的基准特征值相匹配,则继续加载所述odex文件。
本发明实施例中,在接收到对应目标插件的加载指令之后,获取目标插件的odex文件,在odex文件中,获取DexFile部分的文件数据,通过预先存储的文件特征值算法,确定DexFile部分的文件数据的特征值,如果确定出的特征值与预先存储的基准特征值相匹配,则加载odex文件,其中,基准特征值是在基于目标插件生成odex文件后,根据生成的odex文件中的DexFile部分的文件数据,以及文件特征值算法确定出的,基于上述处理,无需根据odex文件的全部内容计算特征值,从而可以节约终端的处理资源。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种加载插件的方法,其特征在于,所述方法包括:
在接收到对应目标插件的加载指令之后,获取所述目标插件的odex文件,在所述odex文件中,获取DexOptHeader部分的文件数据和DexFile部分的文件数据;
通过预先存储的文件特征值算法,确定从所述odex文件起始位置开始的预设字节数的文件数据的特征值,其中,所述预设字节数的文件数据包括所述DexOptHeader部分的文件数据和所述DexFile部分的部分文件数据;
如果确定出的特征值与预先存储的基准特征值相同,则加载所述odex文件,其中,所述基准特征值是在基于所述目标插件生成odex文件后,根据生成的odex文件中的DexOptHeader部分的文件数据和DexFile部分的文件数据,以及所述文件特征值算法确定出的;
在加载所述odex文件的过程中,当检测到对应所述odex文件的读写指令时,获取读写后的odex文件中的DexOptHeader部分的文件数据和DexFile部分的文件数据;
通过所述预先存储的文件特征值算法,确定从所述读写后的odex文件起始位置开始的预设字节数的文件数据的特征值;
如果确定出的特征值与预先存储的基准特征值相匹配,则继续加载所述odex文件;如果确定出的特征值与预先存储的基准特征值不匹配,则停止加载所述odex文件,删除所述odex文件,生成所述目标插件对应的odex文件,加载生成的odex文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述确定出的特征值与所述基准特征值不相同,则删除所述odex文件,生成所述目标插件对应的odex文件,加载生成的odex文件。
3.根据权利要求1所述的方法,其特征在于,所述如果确定出的特征值与预先存储的基准特征值相同,则加载所述odex文件,包括:
如果所述确定出的特征值与预先存储的基准特征值相同,则对所述目标插件的odex文件进行***校验,如果校验通过,则加载所述odex文件。
4.一种加载插件的装置,其特征在于,所述装置包括:
第一获取模块,用于在接收到对应目标插件的加载指令之后,获取所述目标插件的odex文件,在所述odex文件中,获取DexOptHeader部分的文件数据和DexFile部分的文件数据;
第一确定模块,用于通过预先存储的文件特征值算法,确定从所述odex文件起始位置开始的预设字节数的文件数据的特征值,其中,所述预设字节数的文件数据包括所述DexOptHeader部分的文件数据和所述DexFile部分的部分文件数据;
第一加载模块,用于如果确定出的特征值与预先存储的基准特征值相同,则加载所述odex文件,其中,所述基准特征值是在基于所述目标插件生成odex文件后,根据生成的odex文件中的DexOptHeader部分的文件数据和DexFile部分的文件数据,以及所述文件特征值算法确定出的;
第二获取模块,用于在加载所述odex文件的过程中,当检测到对应所述odex文件的读写指令时,获取读写后的odex文件中的DexOptHeader部分的文件数据和DexFile部分的文件数据;
第二确定模块,用于通过所述预先存储的文件特征值算法,确定从所述读写后的odex文件起始位置开始的预设字节数的文件数据的特征值;
第二加载模块,用于如果确定出的特征值与预先存储的基准特征值相匹配,则继续加载所述odex文件;如果确定出的特征值与预先存储的基准特征值不匹配,则停止加载所述odex文件,删除所述odex文件,生成所述目标插件对应的odex文件,加载生成的odex文件。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括:
删除模块,用于如果所述确定出的特征值与所述基准特征值不相同,则删除所述odex文件,生成所述目标插件对应的odex文件,加载生成的odex文件。
6.根据权利要求4所述的装置,其特征在于,所述第一加载模块,用于:
如果所述确定出的特征值与预先存储的基准特征值相同,则对所述目标插件的odex文件进行***校验,如果校验通过,则加载所述odex文件。
7.一种计算机可读存储介质,其上存储有程序,其特征在于,所述程序由处理器执行以实现如权利要求1-3任一项所述的加载插件的方法。
CN201610493877.8A 2016-06-29 2016-06-29 一种加载插件的方法和装置 Active CN106708555B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610493877.8A CN106708555B (zh) 2016-06-29 2016-06-29 一种加载插件的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610493877.8A CN106708555B (zh) 2016-06-29 2016-06-29 一种加载插件的方法和装置

Publications (2)

Publication Number Publication Date
CN106708555A CN106708555A (zh) 2017-05-24
CN106708555B true CN106708555B (zh) 2019-01-22

Family

ID=58940630

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610493877.8A Active CN106708555B (zh) 2016-06-29 2016-06-29 一种加载插件的方法和装置

Country Status (1)

Country Link
CN (1) CN106708555B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107426251A (zh) * 2017-09-12 2017-12-01 中国联合网络通信集团有限公司 终端安全性检测方法及装置
CN110308945B (zh) * 2019-05-22 2022-07-05 百度在线网络技术(北京)有限公司 插件的动态加载方法和装置
CN111273955B (zh) * 2020-01-16 2024-01-19 惠州Tcl移动通信有限公司 热修复插件优化方法、装置、存储介质及电子设备
CN112306570A (zh) * 2020-10-14 2021-02-02 华帝股份有限公司 一种Android APP快速启动的方法、Android终端及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5954835A (en) * 1992-06-23 1999-09-21 Cabletron Systems, Inc. Check sequence preservation
CN102509049A (zh) * 2011-11-14 2012-06-20 任子行网络技术股份有限公司 一种程序合法性验证方法和***
CN102571266A (zh) * 2011-01-04 2012-07-11 华为技术有限公司 一种传输块循环冗余校验的方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102917056B (zh) * 2012-10-19 2015-08-05 山东中磁视讯股份有限公司 一种移动学习***及使用方法
CN104239795B (zh) * 2014-09-16 2017-11-24 百度在线网络技术(北京)有限公司 文件的扫描方法及装置
CN105233499B (zh) * 2015-09-25 2019-02-22 广州华多网络科技有限公司 一种游戏代码校验的方法及游戏客户端、***

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5954835A (en) * 1992-06-23 1999-09-21 Cabletron Systems, Inc. Check sequence preservation
CN102571266A (zh) * 2011-01-04 2012-07-11 华为技术有限公司 一种传输块循环冗余校验的方法及装置
CN102509049A (zh) * 2011-11-14 2012-06-20 任子行网络技术股份有限公司 一种程序合法性验证方法和***

Also Published As

Publication number Publication date
CN106708555A (zh) 2017-05-24

Similar Documents

Publication Publication Date Title
CN105320598B (zh) 软件测试方法及装置
CN105490919B (zh) 消息撤回方法和装置
KR101665835B1 (ko) 전자장치, 배터리 보호방법, 장치, 프로그램 및 기록매체
CN105278937B (zh) 一种显示弹出框消息的方法及装置
EP3200487B1 (en) Message processing method and apparatus
CN104636047B (zh) 对列表中的对象进行操作的方法、装置及触屏终端
CN104978176B (zh) 应用程序接口调用方法、装置及计算机可读存储介质
US10944558B2 (en) Key storing method, key managing method and apparatus
CN104965722B (zh) 一种显示信息的方法及装置
CN103634294A (zh) 信息验证方法和装置
CN106502703B (zh) 一种函数调用方法和装置
CN106708734A (zh) 软件异常检测方法及装置
CN107622200A (zh) 应用程序的安全性检测方法及装置
CN106708555B (zh) 一种加载插件的方法和装置
CN104852885A (zh) 一种进行验证码验证的方法、装置和***
CN106534093B (zh) 一种终端数据的处理方法、装置及***
CN104104656B (zh) 找回帐号的方法及装置
CN108090345A (zh) linux***外部命令执行方法及装置
CN107219951A (zh) 触控屏控制方法、装置、存储介质及终端设备
CN104346276A (zh) 软件测试的方法及装置
CN108615158B (zh) 风险检测方法、装置、移动终端和存储介质
CN109413256B (zh) 联系人信息处理方法、装置、存储介质及电子设备
CN104978237B (zh) 修复动态链接库文件的方法和装置
CN104751333B (zh) 一种信息交互的方法、装置及***
CN105653394B (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