采集Android外挂程序方法及系统的制作方法

文档序号:9397109阅读:2777来源:国知局
采集Android外挂程序方法及系统的制作方法
【技术领域】
[0001]本发明涉及Android技术领域,尤其是涉及一种采集Android外挂程序的方法及系统。
【背景技术】
[0002]当前Android手机游戏非常流行,于是衍生出一批以修改Android游戏的行为或数据为主要功能的应用,这些应用破坏了游戏的公平性、安全性和侵害了厂家的利益。对于已知的恶意应用可以通过恶意特征库的方式进行检测,对于未知的恶意应用可以通过判断应用行为的方式来检测,恶意应用通过不断更新避免被发现的行为特征来进行反检测,检测和反检测形成对抗,通过不断更新更多的检测方式来加强检测恶意应用。
[0003]现有专利(申请号:201410067209.X)公开了一种外挂程序的鉴定方法、服务器和系统,该专利通过操作环境信息获取程序样本行为序列,以此判断外挂的方法,同时也没有公开提取外挂样本的方法。此外,从模块耦合角度来看,该专利的外挂检测模块易被黑客分析并攻击,安全性低。

【发明内容】

[0004]本发明所要解决的技术问题是:通过在Android系统中,比较动态库信息的变化,并将动态库信息的差发送到服务端做进一步判断,以确认采集外挂程序,保护游戏厂商的利益,促进公平。
[0005]为了解决上述技术问题,本发明采用的技术方案为:提供一种采集Android外挂程序的方法,包括如下步骤:
[0006]S1:启动程序,获取当前进程的动态库信息,记录在预设的记录文件中,并生成第一歹瞭;
[0007]S2:再次启动程序,获取当前进程的动态库信息,生成第二列表,并存储在所述记录文件中;
[0008]S3:比较所述第一列表及第二列表中的动态库信息,生成第三列表;
[0009]S4:上传所述第三列表到服务端;
[0010]S5:服务端在确认所述第三列表中的可疑动态库信息为外挂程序后,加入外挂程序黑名单中。
[0011]为解决上述问题,本发明提供一种采集Android外挂程序的系统,包括:
[0012]第一列表模块,用于启动程序,获取当前进程的动态库信息,记录在预设的记录文件中,并生成第一列表;
[0013]第二列表模块,用于再次启动程序,获取当前进程的动态库信息,生成第二列表,并存储在所述记录文件中;
[0014]第三列表模块,用于比较所述第一列表及第二列表中的动态库信息,生成第三列表;
[0015]上传模块,用于上传所述第三列表到服务端;
[0016]结果模块,用于服务端在确认所述第三列表中的可疑动态库信息为外挂程序后,加入外挂程序黑名单中。
[0017]本发明的有益效果在于:区别于现有技术,本发明通过前后两次获取动态库信息列表,并经过差运算,将获得的第三列表发送到服务端做进一步的判断,以采集外挂程序。通过上述方式,本发明可以检测到外挂程序,并上报。起到采集外挂程序,丰富外挂特征库的功能。
【附图说明】
[0018]图1为本发明方法实施例一的流程示意图;
[0019]图2为本发明方法实施例二的流程示意图;
[0020]图3为本发明系统实施例三的结构框图;
[0021]图4为本发明系统实施例四的结构框图。
【具体实施方式】
[0022]为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
[0023]本发明最关键的构思在于:前后两次获取动态库信息,并比较,将可疑动态库信息发送到服务端进行判断,以实现采集功能。
[0024]请参照图1,本发明实施例一提供一种采集Android外挂程序的方法,包括如下步骤:
[0025]S1:启动程序,获取当前进程的动态库信息,记录在预设的记录文件中,并生成第一歹瞭;
[0026]S2:再次启动程序,获取当前进程的动态库信息,生成第二列表,并存储在所述记录文件中;
[0027]S3:比较所述第一列表及第二列表中的动态库信息,生成第三列表;
[0028]S4:上传所述第三列表到服务端;
[0029]S5:服务端在确认所述第三列表中的可疑动态库信息为外挂程序后,加入外挂程序黑名单中。
[0030]应当理解的是,Linux内核提供一种机制,可以用来检测当前进程加载的动态库,当外挂程序hook (劫持函数调用)目标进程的函数时,需要注入动态库到目标进程,所以可以通过判断当前进程加载的动态库是否发生变化来判断是否被注入了,Android系统是基于Linux内核的。
[0031]—般外挂程序主要包含两部分,一部分是主程序,主要作为可执行文件存在,另一部分是动态库,在windows上通常是.dll后缀,在Linux上是.so后缀,包含所有要劫持的函数,当外挂程序劫持目标程序的某个函数时,需要通过主程序打开目标进程,搜索要劫持的函数地址,然后使用外挂程序动态库中的函数替换目标函数,为了在一个进程中替换另一个文件的函数,此文件需要为注入到这个进程中,并且这个文件通常是动态库文件。
[0032]当应用正常启动和通过外挂启动时,进程加载的动态库是不一样的,但是在无法判断当前应用是正常启动还是通过外挂启动时,所以只能通过别的方式。
[0033]程序启动后记录当前加载的所有动态库进文件,保存在文件系统上,当程序下一次启动时和上一次记录的动态库文件做比较,并更新动态库文件为这一次启动时的动态库,当比较发现不一致时,排除一致的动态库,剩下的就是可疑动态库,上报这些可疑动态库到服务端,服务端管理员进一步判断是否外挂。,确定是外挂后加入动态库黑名单,使用黑名单技术检测外挂。这样,只要应用有一次是正常启动,下次在通过外挂启动时就会被检测到。
[0034]即使是第一次通过外挂程序启动,第二次为正常启动也可比较出来外挂程序,这是因为第二次正常启动时所有动态库都会出现第一次记录的动态库中(第一次除了包含恶意注入的动态库,还包含所有正常的动态库),所以,将第二次的列表减上次记录的列表结果为空(反过来减则剩下的就是可疑动态库)。减出的结果为空判断为正常,不会存在误判问题。
[0035]通常情况下,只有恶意程序才会注入别的进程,检测到被注入就可以判定为恶意软件,直接加入黑名单,服务端管理员也可以根据上报的信息获取完整程序,对完整程序做进一步人工分析程序行为等进一步处理。
[0036]区别于现有技术,本发明实施例一通过前后两次获取动态库信息列表,并经过差运算,将获得的第三列表发送到服务端做进一步的判断,以采集外挂程序。通过上述方式,本发明通过两次比较判断加载动态库的变化检测恶意应用的注入行为,可以检测到目前大多数注入外挂,上报检测到的恶意动态库到服务端进一步判断是否恶意程序,并结合反外挂特征库形成更好的恶意应用检测方式,并起到采集恶意应用、丰富反外挂特征库的功能。
[0037]如图2所示,在实施例一的基础上,本发明实施例二的步骤S3具体为:
[0038]S31:写入所述第二列表到所述记录文件中;
[0039]S32:判断所述第一列表是否为空;
[0040]若是,则执行S6:结束程序;
[0041]反之,则执行S33:计算所述第一列表及第二列表中的差,生成第三列表。
[0042]其中,步骤S33之后,还包括:
[0043]S34:判断所述第三列表是否为空;
[0044]若是,则执行S6;
[0045]反之,则执行S35:确认所述第三列表中的动态库信息为可疑动态库信息。
[0046]其中,步骤S5具体为:
[0047]S51:服务端判断所述可疑动态库信息是否为外挂程序;
[0048]若是,则执行S52:将所述可疑动态库信息列入外挂程序黑名单中;
[0049]反之,则执行S6。
[0050]其中,步骤S2之后,还包括:
[0051]S21:实时更新所述第一列表的动态库信息为第二列表的动态库信息。
[0052]步骤S21是在获取第二列表后,需要将第二列表替换第一列表,以方便下次继续进行比较,而在下次的比较过程中,则是获取的第三列表(不是上述的第三列表)与第二列表进行比较,以获取其差的第四列表;并进行更新。
[0053]具体地,Android是基于Linux内核的,Linux内核提供proc文件系统导出系统运行时信息,根据proc导出的信息可以读取到当前进程加载的所有动态库文件,这些信息导出在/proc/{self}/smaps文件中(其中{self}等于当前进程的进程id),可以从这个文件中取到此次进程的动态库信息。
[0054]其中,proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。
[0055]整个过程如下:
[0056]从文件F (即记录文件)中读取上次记录的动态库信息到列表A (第一列表),没有则返回空,第一次启动可
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1