CN105760196A - 插件化外挂程序的检测方法及系统 - Google Patents
插件化外挂程序的检测方法及系统 Download PDFInfo
- Publication number
- CN105760196A CN105760196A CN201610090757.3A CN201610090757A CN105760196A CN 105760196 A CN105760196 A CN 105760196A CN 201610090757 A CN201610090757 A CN 201610090757A CN 105760196 A CN105760196 A CN 105760196A
- Authority
- CN
- China
- Prior art keywords
- storehouse
- plug
- function
- jar bag
- jar
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种插件化外挂程序的检测方法及系统,包括:从服务器上获取配置文件、jar包和/或so库,并存储在客户端上;解析所述配置文件,获取对应于jar包及so库的自定义接口函数;根据所述自定义接口函数,动态加载并运行jar包和/或so库,以检测外挂程序。通过上述方式,本发明可以实现实时更新,且更新的文件较小,减少用户的流量,提高用户体验度。
Description
技术领域
本发明涉及Android技术领域,尤其是涉及一种插件化外挂程序的检测方法及系统。
背景技术
目前的外挂检测方法都是通过提供so库或者jar包让游戏调用,这种形式的话,更新比较麻烦,如果有新的外挂出现,而原来的外挂检测方法,检测不到,则需要更新整个游戏的程序,游戏程序都是100M以上,比较大。
现有专利(申请号:201310317921.6)公开了基于Android的应用插件化实现方案,主要应用于开发插件化形式的Android应用程序,Android应用插件化,将非核心功能与主程序分离,减小主程序的体积和资源消耗;可动态配置Android应用程序的插件,包括配置插件和插件版本;插件用于扩展Android应用的功能,通过服务器提供的插件列表,动态更新插件;插件版本,用于对比插件的当前版本和最新版本,当发现插件的当前版本旧于最新版本时,Android应用可选择更新插件。该专利主要实现插件化形式的Android应用程序的开发,可根据插件列表,动态地更新插件;却无法实现外挂检测插件so库或jar包的更新。
发明内容
本发明所要解决的技术问题是:提供基于插件化的外挂检测方案,只需更需外挂检测的so库及jar包文件,即可实现,可大大提高用户体验。
为了解决上述技术问题,本发明采用的技术方案为:提供一种插件化外挂程序的检测方法,包括:
从服务器上获取配置文件、jar包和/或so库,并存储在客户端上;
解析所述配置文件,获取对应于jar包及so库的自定义接口函数;
根据所述自定义接口函数,动态加载并运行jar包和/或so库,以检测外挂程序。
为了解决上述技术问题,本发明采用的技术方案为:提供一种插件化外挂程序的检测系统,包括:
获取存储模块,用于从服务器上获取配置文件、jar包和/或so库,并存储在客户端上;
解析结果模块,用于解析所述配置文件,获取对应于jar包及so库的自定义接口函数;
加载运行模块,用于根据所述接口函数,动态加载并运行jar包和/或so库,以检测外挂程序。
本发明的有益效果在于:区别于现有技术,本发明的客户端从服务器上获取配置文件、jar包和/或so库;解析所述配置文件,获取对应于jar包及so库的自定义接口函数;根据所述接口函数,动态加载并运行jar包和/或so库,以检测外挂程序。通过上述方式,本发明可以实现实时更新,且更新的文件较小,减少用户的流量,提高用户体验度。
附图说明
图1为本发明方法实施例一的流程示意图;
图2为本发明方法实施例一的简易流程示意图;
图3为本发明方法具体实施例的流程示意图;
图4为本发明系统实施例二的结构示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:获取并解析配置文件,从而获取so库及jar包文件的入口参数,并对应加载运行so库及jar包,实现外挂程序的检测。
请参照图1及图2所示,本发明实施例一提供一种插件化外挂程序的检测方法,包括:
S1:从服务器上获取配置文件、jar包和/或so库,并存储在客户端上;
S2:解析所述配置文件,获取对应于jar包及so库的自定义接口函数;
S3:根据所述自定义接口函数,动态加载并运行jar包和/或so库,以检测外挂程序。
如图3所示,具体地,客户端需要从服务器上更新或新增最新的jar包和so库,而在具体实施例中,客户端检测是否需要更新下载jar包或so库文件,若有必要更新,再进行下载,可减少不必要的下载时间,并可节省流量。
客户端可在下载最新的jar包和so库的同时或之前,下载配置文件,配置文件通常为json格式,其包含的内容包括但不限于:是否有so库;类名、函数名、返回值、函数的参数等。
由于so库及jar包都是特定一类程序的集合库,供其他程序调用,因此解析该配置文件,可获取对应于jar包及so库的自定义接口函数,其中interface数组定义jar包和/或so库的相应接口说明,所述接口说明包括类名、函数名及函数参数;根据interface数组顺序调用jar包和/或so库的自定义接口函数。So库、jar包和配置文件是相适配的,如果配置文件里描述的类名、方法名在so库或者jar包里不存在的话,则程序会报错。
具体地,在一个具体实施例中,isSOToJAR这个参数用于判断是否需要主程序直接加载so库,
(1)如果需要主程序直接加载so库,则interface数组定义了so库对应的相关接口说明(如返回值、参数、函数名等),数组的顺序就是相应接口调用的顺序,通过interface的说明顺序加载so中的函数。
(2)如果不需要主程序加载so库,则主程序通过DexClassLoader加载jar包,则interface数组对应的则是jar包调用的入口(如包名、类名、函数名、回调函数等),并通过interface说明调用外挂检测方法。
此外,soPath这个参数用来指定so库的存储位置及路径。
主程序加载外挂检测插件,通过解析配置文件后,确定入口函数,即确定主程序到底是加载jar包还是so库,而事实上,还可以同时加载jar包及so库。
当单独加载jar包时,包括以下步骤:
主程序模块在客户端加载jar包,并对jar包的合法性进行校验;主程序模块创建运行环境,并在运行环境中启动jar包解析器,为jar包的运行提供单独的运行环境;主程序通过控制jar包解析器。同上,interface参数通过反射获取对应的类名、函数名、返回值、函数的参数;jar包解析器通过反射调用jar包中的程序及其函数,启动jar包。
当单独加载so库时,包括以下步骤:
主程序模块创建so库运行环境,通过System.load函数将so库加载进程序,通过获得的interface参数获得启动so库对应的方法名,返回值,方法的参数;最后直接调用so库,并启动。
当同时加载so库及jar包时,包括以下步骤;
主程序创建jar包及so库的运行环境,并在运行环境中启动jar包解析器,以及通过System.load函数将so库加载进主程序;通过interface数组,主程序获取so库对应的函数名、返回值及函数参数,以及控制jar包解析器反射获取jar包对应的类名、函数名、返回值及函数参数;jar包解析器调用jar包中的程序及其对应的函数,运行jar包,以及主程序调用so库对应的函数,运行so库。
应当理解的是,jar包解析器是通过DexClassLoader加载jar包,获取jar包中的类和对应的入口函数,并使这些函数和类运行起来。
在实际中,动态加载并运行jar包和/或so库,即可以检测外挂程序。比如要修改app的运行数据时,就需要启动外挂程序,随后外挂程序启动对应的进程。本领域技术人员遍历进程,比对进程名称,检测是否有对应的外挂程序;若存在外挂程序,则进行相应处理。
对应地,如图4所示,本发明实施例二提供一种插件化外挂程序的检测系统100,包括:
获取存储模块110,用于从服务器上获取配置文件、jar包和/或so库,并存储在客户端上;
解析结果模块120,用于解析所述配置文件,获取对应于jar包及so库的自定义接口函数;
加载运行模块130,用于根据所述接口函数,动态加载并运行jar包和/或so库,以检测外挂程序。
其中,还包括检测更新模块140,用于检测是否需要更新下载jar包或so库文件。
具体地,所述解析结果模块120包括:
接口单元,用于interface数组定义jar包和/或so库的相应接口说明;
调用单元,用于根据interface数组顺序调用jar包和/或so库的自定义接口函数。
所述加载运行模块130包括:
环境单元,用于主程序创建jar包和/或so库的运行环境;
加载单元,用于动态加载jar包和/或so库;
函数单元,用于获取jar包和/或so库的对应函数名、返回值及函数参数;
运行单元,用于主程序调用jar包和/或so库对应的函数,运行jar包和/或so库。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种插件化外挂程序的检测方法,其特征在于,包括:
从服务器上获取配置文件、jar包和/或so库,并存储在客户端上;
解析所述配置文件,获取对应于jar包及so库的自定义接口函数;
根据所述自定义接口函数,动态加载并运行jar包和/或so库,以检测外挂程序。
2.根据权利要求1所述插件化外挂程序的检测方法,其特征在于,还包括:
检测是否需要更新下载jar包或so库文件。
3.根据权利要求1所述插件化外挂程序的检测方法,其特征在于,所述获取对应于jar包及so库的自定义接口函数的步骤具体为:
interface数组定义jar包和/或so库的相应接口说明,所述接口说明包括类名、函数名及函数参数;
根据interface数组顺序调用jar包和/或so库的自定义接口函数。
4.根据权利要求3所述插件化外挂程序的检测方法,其特征在于,根据所述自定义接口函数,动态加载并运行jar包和/或so库的步骤具体为:
主程序创建so库的运行环境;
通过System.load函数将so库加载进主程序;
通过interface数组获取so库对应的函数名、返回值及函数参数;
主程序调用so库对应的函数,运行so库。
5.根据权利要求3所述插件化外挂程序的检测方法,其特征在于,根据所述自定义接口函数,动态加载并运行jar包和/或so库的步骤具体为:
在客户端上加载jar包,并校验jar包的合法性;
主程序创建jar包的运行环境,并在运行环境中启动jar包解析器;
通过interface数组,主程序控制jar包解析器反射获取jar包对应的类名、函数名、返回值及函数参数;
jar包解析器调用jar包中的程序及其对应的函数,运行jar包。
6.根据权利要求3所述插件化外挂程序的检测方法,其特征在于,根据所述自定义接口函数,主程序加载并运行jar包和/或so库的步骤具体为:
在客户端上加载jar包及so库;
主程序创建jar包及so库的运行环境,并在运行环境中启动jar包解析器,以及通过System.load函数将so库加载进主程序;
通过interface数组,主程序获取so库对应的函数名、返回值及函数参数,以及控制jar包解析器反射获取jar包对应的类名、函数名、返回值及函数参数;
jar包解析器调用jar包中的程序及其对应的函数,运行jar包,以及主程序调用so库对应的函数,运行so库。
7.一种插件化外挂程序的检测系统,其特征在于,包括:
获取存储模块,用于从服务器上获取配置文件、jar包和/或so库,并存储在客户端上;
解析结果模块,用于解析所述配置文件,获取对应于jar包及so库的自定义接口函数;
加载运行模块,用于根据所述接口函数,动态加载并运行jar包和/或so库,以检测外挂程序。
8.根据权利要求7所述插件化外挂程序的检测系统,其特征在于,还包括:
检测更新模块,用于检测是否需要更新下载jar包或so库文件。
9.根据权利要求7所述插件化外挂程序的检测系统,其特征在于,所述解析结果模块包括:
接口单元,用于interface数组定义jar包和/或so库的相应接口说明;
调用单元,用于根据interface数组顺序调用jar包和/或so库的自定义接口函数。
10.根据权利要求7所述插件化外挂程序的检测系统,其特征在于,所述加载运行模块包括:
环境单元,用于主程序创建jar包和/或so库的运行环境;
加载单元,用于动态加载jar包和/或so库;
函数单元,用于获取jar包和/或so库的对应函数名、返回值及函数参数;
运行单元,用于主程序调用jar包和/或so库对应的函数,运行jar包和/或so库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610090757.3A CN105760196B (zh) | 2016-02-18 | 2016-02-18 | 插件化外挂程序的检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610090757.3A CN105760196B (zh) | 2016-02-18 | 2016-02-18 | 插件化外挂程序的检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105760196A true CN105760196A (zh) | 2016-07-13 |
CN105760196B CN105760196B (zh) | 2019-04-30 |
Family
ID=56330897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610090757.3A Active CN105760196B (zh) | 2016-02-18 | 2016-02-18 | 插件化外挂程序的检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105760196B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106362401A (zh) * | 2016-09-19 | 2017-02-01 | 武汉斗鱼网络科技有限公司 | 一种提高游戏程序运行安全的方法及系统 |
CN106484467A (zh) * | 2016-09-22 | 2017-03-08 | 浪潮软件集团有限公司 | 一种java加载jar包里面动态库的方法 |
CN108037928A (zh) * | 2017-12-13 | 2018-05-15 | 北京小米移动软件有限公司 | 软件开发包工具sdk检测方法及装置 |
CN108595337A (zh) * | 2018-05-07 | 2018-09-28 | 杭州有赞科技有限公司 | 一种Jar包的运行方法及系统 |
CN109542494A (zh) * | 2018-10-19 | 2019-03-29 | 福建天泉教育科技有限公司 | 一种vr软件外设的扩展控制方法及终端 |
CN111475193A (zh) * | 2020-06-04 | 2020-07-31 | 成都安易迅科技有限公司 | 一种插件的动态更新方法、装置,电子设备及存储介质 |
CN112328222A (zh) * | 2020-11-26 | 2021-02-05 | 天津市鑫联兴科技有限公司 | 一种动态流程服务接口方法及动态流程服务接口引擎 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101188520A (zh) * | 2007-11-06 | 2008-05-28 | 北京航空航天大学 | 基于配置策略的电信领域遗留系统集成工具 |
CN103166806A (zh) * | 2011-12-14 | 2013-06-19 | 腾讯科技(深圳)有限公司 | 第三方应用的外挂程序检测方法和系统 |
CN104424002A (zh) * | 2013-09-10 | 2015-03-18 | 中国科学院声学研究所 | 一种基于插件机制的动态加载组件方法和系统 |
CN105183445A (zh) * | 2015-07-10 | 2015-12-23 | 珠海金山网络游戏科技有限公司 | 一种基于xml的游戏人工智能的可视化设计系统 |
CN105204871A (zh) * | 2015-10-30 | 2015-12-30 | 亚信科技(南京)有限公司 | 一种插件式开发方法和装置 |
-
2016
- 2016-02-18 CN CN201610090757.3A patent/CN105760196B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101188520A (zh) * | 2007-11-06 | 2008-05-28 | 北京航空航天大学 | 基于配置策略的电信领域遗留系统集成工具 |
CN103166806A (zh) * | 2011-12-14 | 2013-06-19 | 腾讯科技(深圳)有限公司 | 第三方应用的外挂程序检测方法和系统 |
CN104424002A (zh) * | 2013-09-10 | 2015-03-18 | 中国科学院声学研究所 | 一种基于插件机制的动态加载组件方法和系统 |
CN105183445A (zh) * | 2015-07-10 | 2015-12-23 | 珠海金山网络游戏科技有限公司 | 一种基于xml的游戏人工智能的可视化设计系统 |
CN105204871A (zh) * | 2015-10-30 | 2015-12-30 | 亚信科技(南京)有限公司 | 一种插件式开发方法和装置 |
Non-Patent Citations (2)
Title |
---|
DENNYLAI: "插件式反外挂的设计", 《GAD.QQ.COM/ARTICLE/DETAIL/15015》 * |
悦峰: "System.load和System.loadLibrary详解", 《HTTPS://BLOG.CSDN.NET/RING0HX/ARTICLE/DETAILS/3242245》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106362401A (zh) * | 2016-09-19 | 2017-02-01 | 武汉斗鱼网络科技有限公司 | 一种提高游戏程序运行安全的方法及系统 |
CN106484467A (zh) * | 2016-09-22 | 2017-03-08 | 浪潮软件集团有限公司 | 一种java加载jar包里面动态库的方法 |
CN108037928A (zh) * | 2017-12-13 | 2018-05-15 | 北京小米移动软件有限公司 | 软件开发包工具sdk检测方法及装置 |
CN108595337A (zh) * | 2018-05-07 | 2018-09-28 | 杭州有赞科技有限公司 | 一种Jar包的运行方法及系统 |
CN109542494A (zh) * | 2018-10-19 | 2019-03-29 | 福建天泉教育科技有限公司 | 一种vr软件外设的扩展控制方法及终端 |
CN109542494B (zh) * | 2018-10-19 | 2021-11-05 | 福建天泉教育科技有限公司 | 一种vr软件外设的扩展控制方法及终端 |
CN111475193A (zh) * | 2020-06-04 | 2020-07-31 | 成都安易迅科技有限公司 | 一种插件的动态更新方法、装置,电子设备及存储介质 |
CN112328222A (zh) * | 2020-11-26 | 2021-02-05 | 天津市鑫联兴科技有限公司 | 一种动态流程服务接口方法及动态流程服务接口引擎 |
Also Published As
Publication number | Publication date |
---|---|
CN105760196B (zh) | 2019-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105760196A (zh) | 插件化外挂程序的检测方法及系统 | |
CN105389222B (zh) | 一种动态调用原生接口的方法、装置和系统 | |
CN103491111B (zh) | 无线应用发布、实现方法与装置 | |
CN103259936B (zh) | 移动终端操作系统升级方法及其装置 | |
CN108228810B (zh) | 表单联动配置方法和系统以及表单更新方法和系统 | |
CN104699511B (zh) | 插件升级方法及装置 | |
CN106293696B (zh) | 显示应用程序下载安装状态的方法及其对应装置 | |
EP2864872B1 (en) | Automatic provisioning of a software platform to a device ecosystem | |
CN106325847B (zh) | 基于iOS平台获取应用程序功能的方法和装置 | |
CN106331135B (zh) | 一种部分界面更新方法、系统、客户端和服务端 | |
CN105487905A (zh) | 一种混合应用的更新方法和装置 | |
US10057645B2 (en) | Set top box upgrade method and apparatus | |
CN108874437B (zh) | 一种android应用程序的在线云更新方法 | |
CN103646081B (zh) | 一种在网页中进行登录的方法和装置 | |
CN110390043A (zh) | 网页邮箱数据的爬取方法、装置、终端和存储介质 | |
CN108089873A (zh) | 一种应用组件即时更新的方法及终端 | |
US20240146650A1 (en) | Creating endpoints | |
CN110765394A (zh) | so文件加载方法、装置、存储介质及终端设备 | |
CN104765624A (zh) | 虚拟机应用程序的更新处理方法和装置 | |
CN108107792B (zh) | Lua脚本的加载方法、终端及计算机可读存储介质 | |
CN111597783B (zh) | 一种电子表单中数据元联动配置方法、配置系统、更新系统和更新方法 | |
CN105959280B (zh) | 恶意网址的拦截方法及装置 | |
CN103902312B (zh) | 一种应用程序的发送方法及装置 | |
CN109144692A (zh) | 一种用于分配进程的方法、装置及终端 | |
CN106708737B (zh) | 一种测试方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |