一种SDK入侵检测方法、装置、电子设备及存储介质与流程
未命名
09-22
阅读:104
评论:0
一种sdk入侵检测方法、装置、电子设备及存储介质
技术领域
1.本技术涉及移动应用技术领域,特别是涉及一种sdk入侵检测方法、装置、电子设备及存储介质。
背景技术:
2.目前现有技术中,对于第三方sdk的入侵检测方案多数采用的是静态分析的方案,即使用如nm/objcdump/ldd等工具来获取sdk的符号表,然后进行静态分析。此方法的弊端是无法进行动态分析,如app已打包生成了可执行文件ipa包,如果对iphone手机进行越狱破解操作,替换app中已引入的动态库,那么静态分析的方案将无法识别替换后的动态库。利用这个漏洞,第三方sdk的开发者依然有机可乘。因此,现有技术中的静态分析方案无法实现对第三方sdk的入侵进行动态检测。
技术实现要素:
3.本技术实施例的目的在于提供一种sdk入侵检测方法、装置、电子设备及存储介质,以实现对第三方sdk的入侵进行动态检测。具体技术方案如下:
4.根据本技术实施例的第一方面,提供了一种sdk入侵检测方法,所述方法包括:
5.运行待检测程序;
6.若预设的候选系统方法被执行,确定所述待检测程序为异常程序;
7.其中,用于运行所述待检测程序的系统中的目标系统方法被预先替换为所述候选系统方法。
8.在一种可能的实施例中,预先采用如下步骤将所述目标系统方法替换为所述候选系统方法,包括:
9.交换所述目标系统方法中指向方法实现的指针和所述候选系统方法中的指向方法实现的指针;
10.或,将所述目标系统方法中指向方法实现的指针设置为所述候选系统方法中的指向方法实现的指针。
11.根据本技术实施例的第二方面,提供了一种sdk入侵检测方法,所述方法包括:
12.运行待检测程序以使得所述待检测程序将新注册的方法注册至各类中;
13.获取用于记录预保护类中的方法的目标方法列表;
14.若所述目标方法列表中存在同名的方法,确定所述待检测程序为异常程序。
15.在一种可能的实施例中,所述方法还包括:
16.针对所述目标方法列表中的每个方法,判断临时数组中是否包含与所述方法同名的方法,其中,所述临时数组初始时为空集;
17.若所述临时数组中包含与所述方法同名的方法,则执行预设的异常方法应对措施,并返回执行所述针对所述目标方法列表中的每个方法,判断临时数组中是否包含与所述方法同名的方法的步骤;
18.若所述临时数组中不包含与所述方法同名的方法,则将所述方法添加至所述临时数组中,并以添加所述方法后的临时数组作为新的临时数组,返回执行所述针对所述目标方法列表中的每个方法,判断临时数组中是否包含与所述方法同名的方法的步骤。
19.在一种可能的实施例中,所述方法还包括:
20.直至对所述目标方法列表中的每个方法均判断完成后,删除所述临时数组。
21.根据本技术实施例的第三方面,提供了一种sdk入侵检测方法,所述方法包括:
22.运行待检测程序以使得所述待检测程序将新注册的方法注册至各类中;
23.响应于目标方法列表中存在同名的方法或预设的候选系统方法被执行,将所述待检测程序确定为异常程序;
24.其中,所述目标方法列表用于记录预保护类中的方法;用于运行所述待检测程序的系统中的目标系统方法被预先替换为所述候选系统方法。
25.根据本技术实施例的第四方面,提供了一种sdk入侵检测装置,所述装置包括:
26.第一运行模块,用于运行待检测程序;
27.第一确定模块,用于若预设的候选系统方法被执行,确定所述待检测程序为异常程序;
28.其中,用于运行所述待检测程序的系统中的目标系统方法被预先替换为所述候选系统方法。
29.在一种可能的实施例中,所述装置还包括:
30.替换模块,用于预先采用如下步骤将所述目标系统方法替换为所述候选系统方法,包括:
31.交换所述目标系统方法中指向方法实现的指针和所述候选系统方法中的指向方法实现的指针;
32.或,将所述目标系统方法中指向方法实现的指针设置为所述候选系统方法中的指向方法实现的指针。
33.根据本技术实施例的第五方面,提供了一种sdk入侵检测装置,所述装置包括:
34.第二运行模块,用于运行待检测程序以使得所述待检测程序将新注册的方法注册至各类中;
35.获取模块,用于获取用于记录预保护类中的方法的目标方法列表;
36.第二确定模块,用于若所述目标方法列表中存在同名的方法,确定所述待检测程序为异常程序。
37.在一种可能的实施例中,所述装置还包括:
38.判断模块,用于针对所述目标方法列表中的每个方法,判断临时数组中是否包含与所述方法同名的方法,其中,所述临时数组初始时为空集;
39.执行模块,用于若所述临时数组中包含与所述方法同名的方法,则执行预设的异常方法应对措施,并返回执行所述针对所述目标方法列表中的每个方法,判断临时数组中是否包含与所述方法同名的方法的步骤;
40.添加模块,用于若所述临时数组中不包含与所述方法同名的方法,则将所述方法添加至所述临时数组中,并以添加所述方法后的临时数组作为新的临时数组,返回执行所述针对所述目标方法列表中的每个方法,判断临时数组中是否包含与所述方法同名的方法
的步骤。
41.在一种可能的实施例中,所述装置还包括:
42.直至对所述目标方法列表中的每个方法均判断完成后,删除所述临时数组。
43.根据本技术实施例的第六方面,提供了一种电子设备,包括:
44.存储器,用于存放计算机程序;
45.处理器,用于执行存储器上所存放的程序时,实现上述任一所述的sdk入侵检测方法。
46.根据本技术实施例的第七方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的sdk入侵检测方法。
47.本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的sdk入侵检测方法。
48.本技术实施例有益效果:
49.本技术实施例提供的sdk入侵检测方法、装置、电子设备及存储介质,可以预先将运行的待检测程序中的目标系统方法替换为预设的候选系统方法,实现对目标系统方法的保护,阻碍了第三方sdk恶意使用目标系统方法中的漏洞进行方法入侵。另一方面,第三方sdk可以根据hook机制对目标系统方法进行替换,从而进行方法入侵,但是在将目标系统方法替换为候选系统方法后,第三方sdk无法与目标系统方法进行方法替换,就只能与替换后的候选系统方法进行替换,从而执行候选系统方法,因此,在候选系统方法被执行时,说明有第三方sdk入侵,将待检测程序视为异常程序,从而实现了对于第三方sdk入侵的动态检测。
50.当然,实施本技术的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
51.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
52.图1为本技术实施例提供的sdk方法入侵的一种示意图;
53.图2为本技术实施例提供的category方法实现的一种示意图;
54.图3为本技术实施例提供的sdk入侵检测方法的一种流程示意图;
55.图4为本技术实施例提供的hook方法实现的一种示意图;
56.图5为本技术实施例提供的sdk入侵检测方法的另一种流程示意图;
57.图6为本技术实施例提供的判断目标方法列表中是否存在同名方法的一种流程示意图;
58.图7为本技术实施例提供的sdk入侵检测装置的一种结构示意图;
59.图8为本技术实施例提供的sdk入侵检测装置的另一种结构示意图;
60.图9为本技术实施例提供的电子设备的一种结构示意图。
具体实施方式
61.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员基于本技术所获得的所有其他实施例,都属于本技术保护的范围。
62.为更清楚地对本技术提供的sdk入侵检测方法进行说明,下面将对本文中涉及的相关概念进行简单说明:
63.sdk(software development kit):软件开发工具包,一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
64.objective-c:简称oc,面向对象的编程语言,应用开发中的常用语言。
65.category:分类,objective-c的语言特性,可以动态地为某个类增加方法。
66.runtime:一个动态运行库,为objective-c语言的动态性提供支撑。
67.hook:计算机程序设计术语,是指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术,即处理被拦截的函数调用、事件、消息的代码,被称为钩子。
68.在目前的应用开发中,经常会通过集成第三方sdk的方法,来支持应用中的某些功能或是扩展某些能力,简化应用开发者自身的研发成本,并提高应用开发的效率。但随着第三方sdk的普及,且这些sdk来自各类开发者,开发者的资质、以及其开发sdk的发布,并没有相关的审核机制来保证sdk的安全性,这就会导致某些开发者,通过在自身的sdk中编写入侵代码,让使用sdk的集成方在接入后,执行sdk中的入侵代码,从而达到sdk开发者自身的利益,这也就是第三方sdk的方法入侵。下文中为方便描述,将宿主app视为开发的应用。
69.第三方sdk开发者在了解宿主app中的方法名后,可以通过category动态加载自己编写的方法,或者是在宿主app运行时使用自己编写的方法动态hook app原有方法,从而达到在app运行时,跳过执行原有方法,而执行第三方sdk开发者自己编写的方法。示例性的,如图1所示,宿主app中的classa这一分类中包括方法名为methoda和methodb的方法,第三方sdk开发者在了解到方法名methoda后,可以将自己编写的methoda方法,注入至宿主app中的classa这一分类中,从而在app运行时,跳过执行原有的classa中的methoda方法,而执行第三方sdk开发者自己编写的methoda方法。其中,sdk开发者可以通过多种方法了解到希望注入的宿主app中的方法,如通过逆向工具,例如class-dump、ida等,可以轻松获取宿主app的代码头文件以及方法名。
70.oc语言中定义的方法,包含sel(方法名)和对应的imp(implementation,方法实现,即指向方法实现的指针)。oc中方法的调用,就是通过方法名sel找到对应的方法实现imp的过程。hook技术是软件开发中一种比较常见的技术手段,可以将原有要执行的函数方法进行拦截,替换为其他的想要执行的方法实现。在应用开发中比较常见的hook手段是method swizzling(方法交换),可以通过oc语言特性以及runtime运行时的机制,在app运行期间动态地替换原有的方法实现。hook技术可以动态地交互两个方法的方法实现imp,从而达到拦截原有方法,并能够执行其他的方法。如图2所示,hook技术可以将classa分类中方法methoda的方法实现impa与classb分类中方法methodb的方法实现impb进行替换,即替换方法实现,从而使得执行方法methoda时,拦截原有的impa,并能够执行impb。
71.基于此,本技术实施例提供了一种sdk入侵检测方法,如图3所示,方法包括:
72.s301,运行待检测程序。
73.s302,若预设的候选系统方法被执行,确定待检测程序为异常程序。
74.其中,用于运行待检测程序的系统中的目标系统方法被预先替换为候选系统方法。
75.选用该实施例,可以预先将运行的待检测程序中的目标系统方法替换为预设的候选系统方法,实现对目标系统方法的保护,阻碍了第三方sdk恶意使用目标系统方法中的漏洞进行方法入侵。另一方面,第三方sdk可以根据前述的hook机制对目标系统方法进行替换,从而进行方法入侵,但是在将目标系统方法替换为候选系统方法后,第三方sdk无法与目标系统方法进行方法替换,就只能与替换后的候选系统方法进行替换,从而执行候选系统方法,因此,在候选系统方法被执行时,说明有第三方sdk入侵,将待检测程序视为异常程序,从而实现了对于第三方sdk入侵的动态检测。
76.下面将分别对前述s301-s302进行说明,其中:
77.在s301中,本文中的待检测程序可以为任意系统程序,本技术对于待检测程序不进行任何限定。待检测程序可以为ios(移动操作系统)程序,也可以为其他与ios具有共同动态特性的程序,为方便描述,下文中以待检测程序为ios为例进行说明。
78.在s302中,由于待检测程序在加载时,对于外部符号,例如系统函数等,是lazybind(延迟绑定)的,编译的时候并不是绑定真实的地址,而是在运行时动态绑定的,因此,在进行目标系统方法与预设的候选系统方法的替换之前,需要通过fishhook(三方开源工具)在动态绑定时拿到真实的方法地址,然后进行目标系统方法与预设的候选系统方法的替换操作。
79.预设的候选系统方法的数量与目标系统方法的数量对应,可以为一个,也可以为三个。
80.在一种可能的实施例中,可以根据下文中的方式1或方式2所述的方法,将目标系统方法替换为候选系统方法。
81.方式1:交换目标系统方法中指向方法实现的指针和候选系统方法中的指向方法实现的指针。
82.具体的,可以通过method_exchangeimplementations(ios系统的接口方法名)来交换目标系统方法和候选系统方法这两个方法中的指向方法实现的指针imp。假设目标系统方法的imp为impa,候选系统方法的imp为impb,那么,在进行交换之后,目标系统方法的imp为impb,候选系统方法的imp为impa。示例性的,可以采用如下程序实现method_nonnull m1和method_nonnull m2这两个方法的imp的交换:
83.objc_export void
84.method_exchangeimplementations(method_nonnull m1,method_nonnull m2)
85.objc_available(10.5,2.0,9.0,1.0,2.0);
86.方式2:将目标系统方法中指向方法实现的指针设置为候选系统方法中的指向方法实现的指针。
87.具体的,在一种可能的实施方式中,可以通过class_replacemethod(ios系统的接口方法名)将目标系统方法中的指向方法实现的指针imp修改为候选系统方法中的指向方
法实现的指针imp。假设目标系统方法的imp为impa,候选系统方法的imp为impb,那么,在进行修改之后,目标系统方法的imp为impb,候选系统方法的imp不一定为impa,也可以为impb。
88.示例性的,程序可以如下所示:
89.objc_export imp_nullable
90.class_replacemethod(class_nullable cls,sel_nonnull name,imp_nonnull imp,const char*_nullable types)
91.……
92.objc_available(10.5,2.0,9.0,1.0,2.0);
93.在另一种可能的实施方式中,可以不建立出一个真正存在的候选系统方法,而仅仅只是设置一个新的指向方法实现的指针imp,即并没有一个方法名对应于该新设置的指向方法实现的指针imp,并将目标系统方法中的指向方法实现的指针imp设置为该新设置的指向方法实现的指针imp。具体的,可以通过method_setimplementation(ios系统的接口方法名)和class_getmethodimplementation(ios系统的接口方法名)实现。假设目标系统方法的imp为impa,新设置的imp为impb,那么,在进行设置之后,目标系统方法的imp为impb。示例性的,程序可以如下所示:
94.objc_export imp_nonnull
95.method_setimplementation(method_nonnull m,imp_nonnull imp)
96.objc_available(10.5,2.0,9.0,1.0,2.0);
97.……
98.objc_export imp_nullable
99.class_getmethodimplementation(class_nullable cls,sel_nonnull name)
100.objc_available(10.5,2.0,9.0,1.0,2.0);
101.选用该实施例,可以通过交换目标系统方法中指向方法实现的指针和候选系统方法中的指向方法实现的指针,或者将目标系统方法中指向方法实现的指针设置为候选系统方法中的指向方法实现的指针的方式,将目标系统方法替换为预设的候选系统方法,从而实现了对目标系统方法的保护,进而可以在候选系统方法被执行时,认为有第三方sdk入侵实现了对于第三方sdk入侵的动态检测。
102.第三方sdk在进行方法入侵时,除利用上述在宿主app运行时使用自己编写的方法动态hook app原有方法的方式外,还可能通过category动态加载自己编写的方法的方式。category是objective-c语言中支持的一种特性,可以在不修改原有类的前提下,在app运行时动态地给这个类增加方法。objective-c的运行需要依赖runtime库,与其他系统库一样,runtime也是通过dyld(the dynamic link editor,动态连接器)动态加载的。category就是在oc初始化运行时,category分类会与原有类进行关联,将分类中的实例方法加入到原有类的方法列表;如果是分类中的类方法,将加入到原有类的元类方法列表。oc中类是实例对象的描述,元类是类对象的描述。
103.category中的方法没有完全替换掉原来类已经有的方法,而是覆盖掉原来类的同名方法也就是说如果category和原来类都有methoda,那么category附加完成之后,类的方法列表里会有两个methoda方法,category的方法被放到了新方法列表的前面,而原来类的
方法被放到了新方法列表的后面,此处的新方法列表中包含category中的方法,以及原来类中的方法,即category的方法被放到了新方法列表中靠前的位置,原来类的方法被放到了新方法列表中靠后的位置。如图4所示,将category-classa分类method list(方法列表)中的方法在oc初始化运行时加载至宿主app中对应的原有类的方法列表中,具体的,将method list中的+methodb(类方法)加载至meta classa(原有类中的元类)的方法列表中,将method list中的-methoda(实例方法)加载至classa(原有类中的类)的方法列表中,且在加载后的方法列表中,category的方法在原有类的方法的前面。当调用+methodb类方法时,通过classa的isa(指针)找到meta-classa,最后在meta-classa的方法列表找到对应的方法实现进行调用,因此,classa的isa指针指向meta-classa。宿主app运行时在查找方法的时候是顺着方法列表的顺序查找的,只要找到对应名字的方法就会直接执行该方法,但是方法列表后面可能还有一样名字的方法。
104.因此,当category中的方法与原有类中的方法有同名方法时,在app运行到该同名方法时,便会优先执行category中的方法。这个机制就可以作为第三方sdk开发者可利用的漏洞,在了解了宿主app的类与方法之后,第三方sdk开发者就可以在所希望修改的类中,通过category动态增加同名的新方法。在宿主app运行后,程序便会执行sdk开发者编写的新的方法。
105.基于此,本技术实施例提供了另一种sdk入侵检测方法,如图5所示,方法包括:
106.s501,运行待检测程序以使得待检测程序将新注册的方法注册至各类中。
107.s502,获取用于记录预保护类中的方法的目标方法列表。
108.s503,若目标方法列表中存在同名的方法,确定待检测程序为异常程序。
109.选用该实施例,可以通过运行待检测程序将新注册的方法注册至待检测程序的各类中,获取注册新方法之后的想要保护的类的目标方法列表,如果目标方法列表中存在同名的方法,则说明第三方sdk想要待检测程序在运行时,执行注册进去的同名的新方法,而不是待检测程序自身的方法,也就是说,第三方sdk想要通过此同名的新方法实现方法入侵,因此,可以在目标方法列表中存在同名的方法时,确定待检测程序为异常程序,从而实现了对于第三方sdk入侵的动态检测。
110.下面将分别对前述s501-s503进行说明,其中:
111.在s501中,在待检测程序运行时,新注册的方法,即category中的方法会与待检测程序中的原有类进行关联,将新注册的方法加入到待检测程序中对应的原有类的方法列表中。具体的,在待检测程序运行时,可以将新注册的方法中的实例方法方法加入到待检测程序中的类方法列表中,将新注册的方法中的类方法方法加入到待检测程序中的元类方法列表中。
112.在s502中,预保护类指的是待检测程序中的某一需要保护的分类。示例性的,预保护类可以为待检测程序中的类对象,即元类,也可以为待检测程序中的实例对象对象,即类。并且,此时获取到的用于记录预保护类中的方法的目标方法列表中不仅包含待检测程序本身的预保护类中的方法,而且也包括与预保护类同一类的新注册的方法。
113.在s503中,遍历目标方法列表,判断目标方法列表中是否存在同名的方法,当目标方法列表中存在同名的方法时,说明第三方sdk想要通过同名的方法实现方法入侵,将待检测程序视为异常程序。本技术对于判断目标方法列表中是否存在同名方法的具体方式不进
行任何限定。
114.在一种可能的实施例中,可以通过如下步骤判断目标方法列表中是否存在同名方法,如图6所示,包括:
115.s601,针对目标方法列表中的每个方法,判断临时数组中是否包含与方法同名的方法。如果是,则执行步骤s602;如果否,则执行步骤s603。
116.其中,临时数组初始时为空集。
117.s602,执行预设的异常方法应对措施,并返回执行步骤s601。
118.s603,将方法添加至临时数组中,并以添加方法后的临时数组作为新的临时数组,返回执行步骤s601。
119.选用该实施例,通过临时数组的设置,遍历目标方法列表,判断目标方法列表中是否存在同名的方法,在目标方法列表中的某一方法不在临时数组中有同名的方法时,将该方法添加至临时数组,从而对临时数组进行更新,并在判断时,将目标方法列表中的方法均与最新的临时数组进行比较,从而完成对目标方法列表中是否存在同名方法的检测,从而实现对第三方sdk入侵的动态检测。并在检测到同名方法时,执行预设的异常方法应对措施,以对第三方sdk的入侵进行应对。
120.在s601中,设置临时数组,临时数组初始时为空集,在临时数组中不包含与当前判断的方法同名的方法时,将当前判断的方法添加至临时数组,从而对临时数组进行更新。在针对目标方法列表中的每个方法进行判断时,都采用更新后的临时数组,判断临时数组中是否包含与目标方法列表中的方法同名的方法。
121.临时数组可以为待检测程序中存在的初始为空集的数据库,也可以为根据自身需求建立的初始为空集的数据库。本技术对于临时数组的具体存在形式不进行任何限定。
122.在s602中,在临时数组中包含与当前判断的方法同名的方法时,预设的异常方法应对措施可以指的是报警,也可以指的是启动预设的保护程序,还可以指的是删除目标方法列表中排序靠前的同名方法。由于在待检测程序将新注册的方法注册至各类中的时候,新注册的方法会被放在各类的方法列表的前面,而待检测程序各类中原有的方法会被放在方法列表的后面,因此,获取到的方法列表中排序靠前的方法是新注册的方法,删除目标方法列表中排序靠前的同名方法,就可以将新注册的方法删除,而不会删除原有类中的方法。
123.并在临时数组中包含与当前判断的方法同名的方法时,返回执行步骤s601,判断临时数组中是否包含与目标方法列表中其他未判断过的方法同名的方法。
124.在s603中,在临时数组中不包含与当前判断的方法同名的方法时,将当前判断的方法添加至临时数组,并以添加了当前判断的方法之后的临时数组作为新的临时数组,返回执行步骤s601,判断新的临时数组中是否包含与目标方法列表中其他未判断过的方法同名的方法。
125.在一种可能的实施例中,直至对目标方法列表中的每个方法均判断完成后,删除临时数组。
126.具体的,删除临时数组可以指的是使程序中不再有该临时数组,也可以指的是将临时数组重新变为空集。
127.选用该实施例,可以在对目标方法列表中的每个方法均判断完成后,通过删除临时数组来释放临时数组所占用的内存,从而减小对内存的占用。
128.本技术实施例还提供了一种sdk入侵检测方法,方法包括:
129.在待检测程序进行初始化时,运行待检测程序以使得待检测程序将新注册的方法注册至各类中;获取用于记录预保护类中的方法的目标方法列表;若目标方法列表中存在同名的方法,确定待检测程序为异常程序。
130.具体的实施方式可以参见前述s501-s503的相关说明,在此不再赘述。
131.在待检测程序进行方法调用时,若预设的候选系统方法被执行,确定待检测程序为异常程序;其中,用于运行待检测程序的系统中的目标系统方法被预先替换为候选系统方法。
132.具体的实施方式可以参见前述s301-s302的相关说明,在此不再赘述。
133.对应于前述sdk入侵检测方法,本技术实施例还提供了一种sdk入侵检测装置,如图7所示,装置包括:
134.第一运行模块701,用于运行待检测程序;
135.第一确定模块702,用于若预设的候选系统方法被执行,确定待检测程序为异常程序;
136.其中,用于运行待检测程序的系统中的目标系统方法被预先替换为候选系统方法。
137.在一种可能的实施例中,装置还包括:
138.替换模块,用于预先采用如下步骤将目标系统方法替换为候选系统方法,包括:
139.交换目标系统方法中指向方法实现的指针和候选系统方法中的指向方法实现的指针;
140.或,将目标系统方法中指向方法实现的指针设置为候选系统方法中的指向方法实现的指针。
141.本技术实施例还提供了另一种sdk入侵检测装置,如图8所示,装置包括:
142.第二运行模块801,用于运行待检测程序以使得待检测程序将新注册的方法注册至各类中;
143.获取模块802,用于获取用于记录预保护类中的方法的目标方法列表;
144.第二确定模块803,用于若目标方法列表中存在同名的方法,确定待检测程序为异常程序。
145.在一种可能的实施例中,装置还包括:
146.判断模块,用于针对目标方法列表中的每个方法,判断临时数组中是否包含与方法同名的方法,其中,临时数组初始时为空集;
147.执行模块,用于若临时数组中包含与方法同名的方法,则执行预设的异常方法应对措施,并返回执行针对目标方法列表中的每个方法,判断临时数组中是否包含与方法同名的方法的步骤;
148.添加模块,用于若临时数组中不包含与方法同名的方法,则将方法添加至临时数组中,并以添加方法后的临时数组作为新的临时数组,返回执行针对目标方法列表中的每个方法,判断临时数组中是否包含与方法同名的方法的步骤。
149.本技术实施例还提供了一种电子设备,如图9所示,包括:
150.存储器901,用于存放计算机程序;
151.处理器902,用于执行存储器901上所存放的程序时,实现如下步骤:
152.运行待检测程序;
153.若预设的候选系统方法被执行,确定待检测程序为异常程序;
154.其中,用于运行待检测程序的系统中的目标系统方法被预先替换为候选系统方法。
155.或,
156.运行待检测程序以使得待检测程序将新注册的方法注册至各类中;
157.获取用于记录预保护类中的方法的目标方法列表;
158.若目标方法列表中存在同名的方法,确定待检测程序为异常程序。
159.或,
160.运行待检测程序以使得待检测程序将新注册的方法注册至各类中;
161.响应于目标方法列表中存在同名的方法或预设的候选系统方法被执行,将待检测程序确定为异常程序;
162.其中,目标方法列表用于记录预保护类中的方法;用于运行待检测程序的系统中的目标系统方法被预先替换为候选系统方法。
163.并且上述电子设备还可以包括通信总线和/或通信接口,处理器902、通信接口、存储器901通过通信总线完成相互间的通信。
164.上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
165.通信接口用于上述电子设备与其他设备之间的通信。
166.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
167.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
168.在本技术提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一sdk入侵检测方法的步骤。
169.在本技术提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一sdk入侵检测方法。
170.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计
算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者固态硬盘solid state disk(ssd)等。
171.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
172.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
173.以上所述仅为本技术的较佳实施例,并非用于限定本技术的保护范围。凡在本技术的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本技术的保护范围内。
技术特征:
1.一种sdk入侵检测方法,其特征在于,所述方法包括:运行待检测程序;若预设的候选系统方法被执行,确定所述待检测程序为异常程序;其中,用于运行所述待检测程序的系统中的目标系统方法被预先替换为所述候选系统方法。2.根据权利要求1所述的方法,其特征在于,预先采用如下步骤将所述目标系统方法替换为所述候选系统方法,包括:交换所述目标系统方法中指向方法实现的指针和所述候选系统方法中的指向方法实现的指针;或,将所述目标系统方法中指向方法实现的指针设置为所述候选系统方法中的指向方法实现的指针。3.一种sdk入侵检测方法,其特征在于,所述方法包括:运行待检测程序以使得所述待检测程序将新注册的方法注册至各类中;获取用于记录预保护类中的方法的目标方法列表;若所述目标方法列表中存在同名的方法,确定所述待检测程序为异常程序。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:针对所述目标方法列表中的每个方法,判断临时数组中是否包含与所述方法同名的方法,其中,所述临时数组初始时为空集;若所述临时数组中包含与所述方法同名的方法,则执行预设的异常方法应对措施,并返回执行所述针对所述目标方法列表中的每个方法,判断临时数组中是否包含与所述方法同名的方法的步骤;若所述临时数组中不包含与所述方法同名的方法,则将所述方法添加至所述临时数组中,并以添加所述方法后的临时数组作为新的临时数组,返回执行所述针对所述目标方法列表中的每个方法,判断临时数组中是否包含与所述方法同名的方法的步骤。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:直至对所述目标方法列表中的每个方法均判断完成后,删除所述临时数组。6.一种sdk入侵检测方法,其特征在于,所述方法包括:运行待检测程序以使得所述待检测程序将新注册的方法注册至各类中;响应于目标方法列表中存在同名的方法或预设的候选系统方法被执行,将所述待检测程序确定为异常程序;其中,所述目标方法列表用于记录预保护类中的方法;用于运行所述待检测程序的系统中的目标系统方法被预先替换为所述候选系统方法。7.一种sdk入侵检测装置,其特征在于,所述装置包括:第一运行模块,用于运行待检测程序;第一确定模块,用于若预设的候选系统方法被执行,确定所述待检测程序为异常程序;其中,用于运行所述待检测程序的系统中的目标系统方法被预先替换为所述候选系统方法。8.根据权利要求7所述的装置,其特征在于,所述装置还包括:替换模块,用于预先采用如下步骤将所述目标系统方法替换为所述候选系统方法,包
括:交换所述目标系统方法中指向方法实现的指针和所述候选系统方法中的指向方法实现的指针;或,将所述目标系统方法中指向方法实现的指针设置为所述候选系统方法中的指向方法实现的指针。9.一种sdk入侵检测装置,其特征在于,所述装置包括:第二运行模块,用于运行待检测程序以使得所述待检测程序将新注册的方法注册至各类中;获取模块,用于获取用于记录预保护类中的方法的目标方法列表;第二确定模块,用于若所述目标方法列表中存在同名的方法,确定所述待检测程序为异常程序。10.根据权利要求9所述的装置,其特征在于,所述装置还包括:判断模块,用于针对所述目标方法列表中的每个方法,判断临时数组中是否包含与所述方法同名的方法,其中,所述临时数组初始时为空集;执行模块,用于若所述临时数组中包含与所述方法同名的方法,则执行预设的异常方法应对措施,并返回执行所述针对所述目标方法列表中的每个方法,判断临时数组中是否包含与所述方法同名的方法的步骤;添加模块,用于若所述临时数组中不包含与所述方法同名的方法,则将所述方法添加至所述临时数组中,并以添加所述方法后的临时数组作为新的临时数组,返回执行所述针对所述目标方法列表中的每个方法,判断临时数组中是否包含与所述方法同名的方法的步骤。11.根据权利要求10所述的装置,其特征在于,所述装置还包括:直至对所述目标方法列表中的每个方法均判断完成后,删除所述临时数组。12.一种电子设备,其特征在于,包括:存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现权利要求1-2或3-5或6任一所述的方法。13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-2或3-5或6任一所述的方法。
技术总结
本申请实施例提供了一种SDK入侵检测方法、装置、电子设备及存储介质。其中,所述方法包括:运行待检测程序;若预设的候选系统方法被执行,确定所述待检测程序为异常程序;其中,用于运行所述待检测程序的系统中的目标系统方法被预先替换为所述候选系统方法。应用该实施例,可以预先将运行的待检测程序中的目标系统方法替换为预设的候选系统方法,实现对目标系统方法的保护,阻碍了第三方SDK恶意使用目标系统方法中的漏洞进行方法入侵。另一方面,可以在候选系统方法被执行时,说明有第三方SDK入侵,将待检测程序视为异常程序,从而实现了对于第三方SDK入侵的动态检测。了对于第三方SDK入侵的动态检测。了对于第三方SDK入侵的动态检测。
技术研发人员:于骞
受保护的技术使用者:杭州萤石软件有限公司
技术研发日:2023.06.27
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种泵壳体加工夹具的制作方法 下一篇:一种污水脱氮除磷装置的制作方法
