CN113392416B - 获取应用程序加解密数据的方法、装置、设备及存储介质 - Google Patents
获取应用程序加解密数据的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113392416B CN113392416B CN202110722108.1A CN202110722108A CN113392416B CN 113392416 B CN113392416 B CN 113392416B CN 202110722108 A CN202110722108 A CN 202110722108A CN 113392416 B CN113392416 B CN 113392416B
- Authority
- CN
- China
- Prior art keywords
- function
- encryption
- decryption
- feature matching
- objective function
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000005540 biological transmission Effects 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 315
- 238000013508 migration Methods 0.000 claims description 14
- 230000005012 migration Effects 0.000 claims description 14
- 238000004064 recycling Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 13
- 238000012986 modification Methods 0.000 abstract description 6
- 230000004048 modification Effects 0.000 abstract description 6
- 238000001514 detection method Methods 0.000 abstract description 4
- 238000012545 processing Methods 0.000 description 6
- 238000010276 construction Methods 0.000 description 5
- 238000005538 encapsulation Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例公开了一种获取应用程序加解密数据的方法、装置、设备及存储介质。该方法包括:在ART虚拟机的压栈函数运行时,若存在目标函数需要压入栈传输参数,则获取所述目标函数的函数声明信息;对所述函数声明信息进行特征匹配;如果函数声明信息特征匹配成功,则获取与所述目标函数相关的加解密数据。上述获取应用程序加解密数据的技术方案实现在ART中,无需对应用程序进行任何hook或修改操作,可以有效规避绝大多数应用反hook对抗检测的问题,而且方案的实现极为底层,不会破坏应用程序自身的执行流程以及目标进程栈平衡。
Description
技术领域
本发明实施例涉及数据安全技术领域,尤其涉及一种获取应用程序加解密数据的方法、装置、设备及存储介质。
背景技术
随着信息技术的不断发展,数据安全问题已经成为人们日益关注的焦点。
目前,检测应用程序中加密数据的主要方法有以下几种:
1、在沙箱外部部署抓包工具(例如Charles、Fiddler等),由抓包工具作为中间代理,截取通信数据。
2、利用安卓系统提供的VpnService接口,实现与方案1中抓包工具类似的功能,将中间代理集成在预制的应用程序中。
3、通过应用层hookSSL函数截取加密前的数据。
4、修改Framework层代码,直接修改SSLInputStream的read方法和SSLOutputStream的write方法。
针对方案1、2的中间代理方式,只能对单向认证的https(HyperTextTransferProtocoloverSecureSocketLayer,SecureSocket层上的超文本传输协议)链路进行数据捕获,双向认证的https链路同样无法获取明文数据。针对方案3,存在应用程序反hook检测对抗导致hook失败的问题,无法通用,需要解决hook对抗问题。针对方案4,只适用于https数据获取,对通用加解密逻辑没有帮助。
发明内容
本发明实施例提供一种获取应用程序加解密数据的方法、装置、设备及存储介质,以克服现有技术中应用程序加解密数据获取方法的缺陷。
第一方面,本发明实施例提供了一种获取应用程序加解密数据的方法,包括:
在ART虚拟机的压栈函数运行时,若存在目标函数需要压入栈传输参数,则获取所述目标函数的函数声明信息;
对所述函数声明信息进行特征匹配;
如果函数声明信息特征匹配成功,则获取与所述目标函数相关的加解密数据。
第二方面,本发明实施例还提供了一种获取应用程序加密数据的装置,该装置包括:
函数声明信息获取模块,用于在ART虚拟机的压栈函数运行时,若存在目标函数需要压入栈传输参数,则获取所述目标函数的函数声明信息;
函数声明信息特征匹配模块,用于对所述函数声明信息进行特征匹配;
加解密数据获取第一模块,用于如果函数声明信息特征匹配成功,则获取与所述目标函数相关的加解密数据。
第三方面,本发明实施例还提供了一种电子设备,其特征在于,所述电子设备运行安卓系统,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例中所述的方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本发明任一实施例中所述的方法。
本实施例的技术方案,通过直接在ART中对函数声明信息进行特征匹配以获取加解密数据,无需对应用程序进行任何hook或修改操作,可以有效规避绝大多数应用反hook对抗检测的问题,而且方案的实现极为底层,不会破坏应用程序自身的执行流程以及目标进程栈平衡。
附图说明
图1是本发明实施例一中的一种获取应用程序加解密数据的方法的流程图;
图2是本发明实施例二中的一种获取应用程序加解密数据的方法的流程图;
图3是本发明实施例三中的一种获取应用程序加解密数据的方法的流程图;
图4是本发明实施例四中的一种获取应用程序加解密数据的装置的结构示意图;
图5是本发明实施例五中的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种获取应用程序加解密数据的方法的流程图,本实施例可适用于在安卓系统终端中获取应用程序加解密数据的情况,该方法可以由获取应用程序加密数据的装置来执行,该装置可采用硬件和/或软件的方式实现,并一般可以集成在电子设备中,如安卓系统终端中。
如图1所示,本实施提供的获取应用程序加解密数据的方法,具体包括如下步骤:
S110、在ART虚拟机的压栈函数运行时,若存在目标函数需要压入栈传输参数,则获取所述目标函数的函数声明信息。
其中,ART(AndroidRuntime,安卓运行时)虚拟机是安卓系统4.4版本发布的,是指通过软件模拟的具有完整硬件系统功能的可运行在一个完全隔离环境中的完整计算机系统。
压栈函数指的是,执行压栈操作的函数。在本实施例中,在压栈函数运行时,可以对任意需要压栈传输参数的函数的相关参数进行压栈传输处理。
目标函数,指的是在应用程序运行过程中的任意一个函数。函数声明,指的是把函数的名字、函数类型以及形参类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查(例如函数名是否正确,实参与形参的类型和个数是否一致)。相应的,函数声明信息指的是与函数声明相关的信息,主要包括函数的名字、函数类型、形参类型、形参个数以及形参顺序等,本实施例对此不进行限制。
在ART虚拟机的压栈函数运行时,如果存在需要压入栈传输参数的函数,则获取该函数的函数声明信息,以根据函数声明信息对函数类型进行判断。
S120、对所述函数声明信息进行特征匹配。
在获取目标函数的函数声明信息之后,对所述函数声明信息进行特征分析,并与标准特征进行匹配,以实现对目标函数的类型识别。其中,所述标准特征指的是用于指示加解密函数类型的特征,本实施例对标准特征不作具体限定,可以是单一特征,也可以是多个特征的组合。
可选的,标准特征指的是用于指示加解密执行函数类型的特征。此时,将目标函数的函数声明信息与标准特征匹配,即可判断出目标函数是否属于加解密执行函数。
S130、如果函数声明信息特征匹配成功,则获取与所述目标函数相关的加解密数据。
函数声明信息特征匹配成功,可以指示目标函数属于与加解密相关的函数。
在目标函数的函数声明信息特征匹配成功时,即可确定目标函数是与加解密相关的。若目标函数声明信息与用于指示加解密执行函数类型的标准特征匹配成功,即可判断出目标函数属于加解密执行函数。
在判断出目标函数的函数声明信息匹配成功时,即可获取与目标函数相关的加解密数据,作为应用程序运行中需要获取的加解密数据。在目标函数属于加解密执行函数时,即可获取目标函数执行前后的加解密数据。
需要指出的是,本实施例提供的获取应用程序加解密数据的方法,可以配置于ART虚拟机的任意位置中。在本实施例的一个可选的实施方式中,可在ART虚拟机中目标位置处的压栈函数中执行本实施例提供的获取应用程序加解密数据的方法。其中,压栈函数在ART虚拟机中的目标位置可以为:
voidSetVRegReference(size_ti,mirror::Object*val)
SHARED_REQUIRES(Locks::mutator_lock_)方法调用;
在上述目标位置处的压栈函数中进行功能扩展,实现函数声明信息获取以及特征匹配的操作,也即将压栈函数作为本实施例技术方案的入口,以获取应用程序的相关加解密数据。
可选的,在获取与所述目标函数相关的加解密数据之后,还包括:将所述加解密数据格式统一化后输出并展示。
在获取到与目标函数相关的加解密数据之后,可以对获取到的加解密数据进行数据封装以及数据格式统一化处理,例如可以在数据收发函数中特定位置之前或之后,添加数据封装及格式统一化代码,以将获取到的加解密数据进行数据封装和数据格式统一化处理。
在对获取到的加解密数据进行数据封装以及数据格式统一化处理之后,可以将加解密数据进行存储,也可以将加解密数据输出展示,例如,在电子设备运行过程中,可以由结果读取工具以及结果解析工具对数据封装以及数据格式统一化处理后的加解密数据进行监听输出,并对相关的加解密数据进行解析还原展示。
上述技术方案的好处在于,对加解密数据进行格式统一化处理并输出展示,更加便于用户识别,为用户对应用程序加解密数据的分析提供了便利。
在一个具体的例子中,在ART虚拟机的压栈函数运行时,对所有参数压栈行为进行检测。若检测到存在目标函数需要压入栈传输参数,则获取目标函数的函数声明信息,并将函数声明信息与标准特征进行特征匹配。如果函数声明信息与标准特征匹配成功,则获取与目标函数相关的加解密数据,并将获取到的加解密数据进行格式统一化处理后输出展示。
本实施例的技术方案,通过直接在ART中对函数声明信息进行特征匹配以获取加解密数据,无需对应用程序进行任何hook或修改操作,可以有效规避绝大多数应用反hook对抗检测的问题,而且方案的实现极为底层,不会破坏应用程序自身的执行流程以及目标进程栈平衡。
实施例二
图2为本发明实施例二提供的一种获取应用程序加解密数据的方法的流程图。本实施例在上述实施例的基础上进行具体化,具体还包括:如果函数声明信息特征匹配失败,则确定所述目标函数的调用对象;对所述调用对象进行特征匹配;如果调用对象特征匹配成功,则获取与所述目标函数相关的加解密数据。
如图2所示,本实施提供的获取应用程序加解密数据的方法,具体包括如下步骤:
S210、在ART虚拟机的压栈函数运行时,若存在目标函数需要压入栈传输参数,则获取所述目标函数的函数声明信息。
S220、对所述函数声明信息进行特征匹配。
S230、判断函数声明信息特征匹配是否成功,若是,执行S240;若否,执行S260。
S240、获取与所述目标函数相关的加解密数据。
作为一种可选的实施方式,对所述函数声明信息进行特征匹配,可以具体为:将所述函数声明信息与特征库中加解密算法函数列表中的加解密执行函数进行匹配。相应的,如果函数声明信息特征匹配成功,则获取与所述目标函数相关的加解密数据,可以具体为:
如果所述函数声明信息与特征库中加解密算法函数列表中的加解密执行函数匹配成功,则获取传入的各参数在所述目标函数执行前的值以及所述目标函数执行后的值。
特征库,可以是在应用程序启动时加载的,用于存储加解密算法函数列表。其中,加解密算法函数列表中预设多种加解密执行函数,用于对目标函数的函数声明信息进行特征匹配。加解密执行函数具体可以指的是用于执行加密操作的函数(也即加密函数)以及用于执行解密操作的函数(也即解密函数)。
在获取到目标函数的函数声明信息之后,将所述函数声明信息与加解密算法函数列表中列举的各个加解密执行函数进行特征匹配。如果所述函数声明信息与加解密算法函数列表中列举的任意一种加解密执行函数特征匹配,则可以确定目标函数为一种加解密执行函数。进而,可以获取压栈传输的各参数在目标函数执行之前以及执行之后的值,作为与目标函数相关的加解密数据。若目标函数为加密函数,则其执行前的值为明文,其执行后的值为密文;若目标函数为解密函数,则其执行前的值为密文,其执行后的值为明文。
在上述技术方案中,设置了特征库,其中包括了列举各种加解密执行函数的加解密算法函数列表,便于在应用程序运行过程中通过特征匹配识别出各种加解密函数,而且加解密算法函数列表支持动态添加,使获取到的应用程序的加解密数据更加全面。
S250、将所述加解密数据格式统一化后输出并展示。
S260、确定所述目标函数的调用对象。
其中,调用对象指的是目标函数在执行过程中需要调用的对象,可以是一个变量,一个数据结构,或是一个函数等,本实施例对此不做具体限定。
S270、对所述调用对象进行特征匹配。
在确定目标函数的调用对象之后,对所述调用对象进行特征分析,并与加解密器对象的特征进行匹配,以实现对调用对象的类型识别,识别所述调用对象是否属于加解密器对象。
S280、如果调用对象特征匹配成功,则获取与所述目标函数相关的加解密数据,并返回执行S250。
调用对象特征匹配成功,可以指示所述调用对象属于加解密器对象。
在调用对象特征匹配成功时,即可确定目标函数是与加解密相关的,也即是与加解密操作相关的通用输入输出函数,进而可以获取与所述目标函数执行相关的加解密数据,作为应用程序运行中需要获取的加解密数据。
在调用对象特征匹配失败时,可以确定目标函数是与加解密无关的,此时无需获取与目标函数执行相关的参数。
作为一种可选的实施方式,对所述调用对象进行特征匹配,可以具体为:将所述调用对象与特征库中加解密器对象列表中的加解密器队形进行匹配。相应的,如果调用对象特征匹配成功,则获取与所述目标函数相关的加解密数据,可以具体为:
如果所述调用对象与特征库中加解密器对象列表中的加解密器对象匹配成功,则获取与所述目标函数执行对应的参数。
特征库,可以是在应用程序启动时加载的,还可以用于存储加解密器对象列表。其中,加解密器对象列表中可以预设多种加解密器对象以及相应的加解密构造参数,用于对目标函数的调用对象进行特征匹配。
在确定目标函数的调用对象之后,将所述调用对象与加解密器对象中的各个加解密器对象进行特征匹配。如果所述调用对象与加解密器对象列表中的任意一种加解密器对象特征匹配,则可以确定目标函数是与加解密操作相关的一种通用输入输出函数。进而,可以获取与目标函数执行相关的数据作为与目标函数相关的加解密数据,具体指的是目标函数在执行输入输出操作时涉及的参数作为与目标函数相关的加解密数据。以将目标函数在执行输出操作时涉及的参数作为与目标函数相关的加解密数据为例,若相关参数需要输出至网络中,则可以将输出参数以及输出网络相关的参数作为与目标函数相关的加解密数据进行记录,若相关参数写入至文件中,则可以将输出参数以及写入文件的相关参数作为与目标函数相关的加解密数据进行记录。
在上述技术方案中,设置了特征库,其中包括了列举各种加解密器对象的的加解密器对象列表,便于在应用程序运行过程中通过特征匹配识别出各种调用加解密器对象的通用输入输出函数,使获取到的应用程序的加解密数据更加全面。
进一步的,本实施例提供的方法还可以包括:如果所述函数声明信息与特征库中加解密算法函数列表中的加解密器构造函数匹配成功,则将与所述目标函数对应的加解密器对象以及加解密构造参数记录至所述加解密器对象列表中。
在本实施方式中,加解密算法函数列表中除了列举了加解密执行函数,还列举了加解密器构造函数。其中,加解密器构造函数指的是与加解密器对象相关的构造函数。
当目标函数的函数声明信息与加解密算法函数列表中的加解密器构造函数匹配成功时,可以将与目标函数对应的加解密器以及相关的加解密器构造参数对应记录在加解密器对象列表,以实现了对加解密器构造参数的动态添加。
在上述技术方案中,加解密器对象列表中加解密器对象还可以是在本实施例提供的方法执行过程中根据识别到的加解密器构造函数动态添加的,使获取到的应用程序的加解密数据更加全面,进一步提升了加解密数据的识别效果。
在一个具体的例子中,在ART虚拟机的压栈函数运行时,对所有参数压栈行为进行检测。若检测到存在目标函数需要压入栈传输参数,则获取目标函数的函数声明信息,并将函数声明信息与特征库中的加解密算法函数列表进行特征匹配。如果函数声明信息与加解密算法函数列表中的加解密执行函数匹配成功,则获取与目标函数相关的加解密数据,并将获取到的加解密数据格式统一化后输出展示。如果函数声明信息与加解密算法函数列表中的加解密执行函数匹配失败,则确定目标函数在执行过程中需要调用的对象,并对调用对象进行特征分析,再与特征库中加解密器对象列表中的加解密器对象进行匹配。如果调用对象与特征库中加解密器对象列表中的加解密器对象匹配成功,则获取与目标函数执行对应的参数作为与目标函数相关的加解密数据,并将相关的加解密数据格式统一化后输出展示。
作为一种可选的实施方式,在ART虚拟机环境下,如果监控到由于GC(GarbageCollection,垃圾回收)导致的内存对象迁移现象,则执行与所述内存对象迁移现象匹配的对象迁移操作;
如果监控到由于GC导致的内存回收现象,则执行与所述内存回收现象匹配的对象删除操作。
程序运行时,内存空间是有限的,GC机制会及时地把不再使用的对象清除,将内存释放出来,由此会出现由于GC导致的内存对象迁移现象,以及由于GC导致的内存回收现象。
其中,如果监控到了由于GC导致的内存对象迁移现象,则确定特征库中加解密器对象列表中与内存对象迁移现象关联的目标加解密对象,并依据由于GC导致的内存对象迁移现象,将加解密器对象列表中目标加解密对象的指针等相关信息进行适应性调整。
如果监控到了由于GC导致的内存回收现象,则确定特征库中加解密器对象列表中与内存回收现象关联的目标加解密对象,并将加解密器对象列表中的目标加解密器对象删除。
在上述技术方案中,进行了内存追踪,并基于内存追踪结果执行匹配的操作,以此解决了由于内存对象迁移或回收现象导致的空指针及野指针问题,防止空指针及野指针导致的对象访问失败及进程崩溃问题的发生。
本实施例未尽详细解释之处请参见前述实施例,在此不再赘述。
本实施例的技术方案,通过直接在ART中对调用对象进行特征匹配以获取加解密数据,无需对应用程序进行任何hook或修改操作,可以有效规避绝大多数应用反hook对抗检测的问题,而且方案的实现极为底层,不会破坏应用程序自身的执行流程以及目标进程栈平衡。
实施例三
图3为本发明实施例三提供的一种获取应用程序加解密数据的方法的流程图。本实施例在上述实施例的基础上进行细化。
如图3所示,该方法包括以下具体步骤:
S310、在ART虚拟机的压栈函数运行时,若存在目标函数需要压入栈传输参数,则获取所述目标函数的函数声明信息。
S320、对所述函数声明信息进行特征匹配。
其中,特征匹配指的是使用获取的函数声明信息与特征库中的加解密算法函数列表进行匹配,加解密算法函数列表中列举了大量的加解密执行函数和加密加解密器构造函数。进而,通过将函数声明信息与加解密算法函数列表进行匹配即可识别出目标函数是否为加解密器构造函数或加解密执行函数。
S330、判断函数声明信息特征匹配是否成功。若是,执行S340;若否,执行S370。
若函数声明信息与加解密算法函数列表匹配成功,则表明目标函数或是加解密器构造函数,或是加解密执行函数。
S340、判断函数声明信息与特征库中加解密算法函数列表中的加解密执行函数是否匹配成功。若是,执行S350;若否执行S360。
其中,加解密执行函数指的是对加密函数或解密函数进行执行操作的函数。
S350、获取传入的各参数在所述目标函数执行前的值以及所述目标函数执行后的值,并执行S390。
S360、将与所述目标函数对应的加解密器对象以及加解密构造参数记录至所述加解密器对象列表中。
此时,识别出目标函数为加解密器构造函数,对与其对应的加解密器对象以及加解密构造参数进行记录。
S370、判断目标函数的调用对象是否为特征库中加解密器对象列表中的加解密器对象。若是,执行S380;若否,执行S3100。
S380、获取与所述目标函数执行对应的参数,并执行S390。
S390、将所述加解密数据格式统一化后输出并展示。
S3100、结束。
本实施例未尽详细解释之处请参考前述实施例,在此不再赘述。
本实施例的技术方案,功能直接实现在ART中,也即直接在ART中依次对函数声明信息及调用对象进行特征匹配以获取加解密数据,无需对应用程序进行任何hook或修改操作,可以有效规避绝大多数应用反hook对抗检测的问题,而且方案的实现极为底层,不会破坏应用程序自身的执行流程以及目标进程栈平衡。
实施例四
图4为本发明实施例四提供的一种获取应用程序加解密数据的装置的结构示意图,该装置可以执行上述各实施例中涉及到的获取应用程序加解密数据的方法。该装置可采用软件和/或硬件的方式实现,如图4所示,所述获取应用程序加解密数据的装置具体包括:函数声明信息获取模块410、函数声明信息特征匹配模块420、加解密数据获取第一模块430。
其中,函数声明信息获取模块410,用于在ART虚拟机的压栈函数运行时,若存在目标函数需要压入栈传输参数,则获取所述目标函数的函数声明信息。
函数声明信息特征匹配模块420,用于对所述函数声明信息进行特征匹配。
加解密数据获取第一模块430,用于如果函数声明信息特征匹配成功,则获取与所述目标函数相关的加解密数据。
本实施例的技术方案,通过直接在ART中对函数声明信息进行特征匹配以获取加解密数据,无需对应用程序进行任何hook或修改操作,可以有效规避绝大多数应用反hook对抗检测的问题,而且方案的实现极为底层,不会破坏应用程序自身的执行流程以及目标进程栈平衡。
可选的,所述获取应用程序加解密数据的装置还包括函数调用对象确定模块、函数调用对象特征匹配模块和加解密数据获取第二模块。
其中,函数调用对象确定模块,用于如果函数声明信息特征匹配失败,则确定所述目标函数的调用对象。
函数调用对象特征匹配模块,用于对所述调用对象进行特征匹配。
加解密数据获取第二模块,用于如果调用对象特征匹配成功,则获取与所述目标函数相关的加解密数据。
可选的,加解密数据获取第一模块430,具体可以用于如果所述函数声明信息与特征库中加解密算法函数列表中的加解密执行函数匹配成功,则获取传入的各参数在所述目标函数执行前的值以及所述目标函数执行后的值。
可选的,加解密数据获取第二模块具体可以用于如果所述调用对象与特征库中加解密器对象列表中的加解密器对象匹配成功,则获取与所述目标函数执行对应的参数。
可选的,所述获取应用程序加解密数据的装置还包括加解密器对象列表记录模块,用于如果所述函数声明信息与特征库中加解密算法函数列表中的加解密器构造函数匹配成功,则将与所述目标函数对应的加解密器对象以及加解密构造参数记录至所述加解密器对象列表中。
可选的,所述获取应用程序加解密数据的装置还包括对象列表调整模块,用于在ART虚拟机环境下,如果监控到由于GC导致的内存对象迁移现象,则执行与所述内存对象迁移现象匹配的对象迁移操作;如果监控到由于GC导致的内存回收现象,则执行与所述内存回收现象匹配的对象删除操作。
可选的,所述获取应用程序加解密数据的装置还包括加解密数据输出展示模块,用于在获取与所述目标函数相关的加解密数据之后,将所述加解密数据格式统一化后输出并展示。
本发明实施例所提供的获取应用程序加解密数据的装置可执行本发明任意实施例所提供的获取应用程序加解密数据的方法,具备执行方法相应的功能模块和有益效果。
实施例五
图5为本发明实施例五提供的一种电子设备的结构示意图,所述电子设备是运行于安卓系统的。如图5所示,该电子设备包括处理器510、存储器520、输入装置530和输出装置540;电子设备中处理器510的数量可以是一个或多个,图5中以一个处理器510为例;电子设备中的处理器510、存储器520、输入装置530和输出装置540可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的获取应用程序加解密数据的方法对应的程序指令/模块(例如,获取应用程序加解密数据的装置中的函数声明信息获取模块410、函数声明信息特征匹配模块420和加解密数据获取第一模块430)。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的获取应用程序加解密数据的方法。
存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置530可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。
实施例六
本发明实施例六还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种获取应用程序加解密数据的方法,该方法包括:
在ART虚拟机的压栈函数运行时,若存在目标函数需要压入栈传输参数,则获取所述目标函数的函数声明信息;
对所述函数声明信息进行特征匹配;
如果函数声明信息特征匹配成功,则获取与所述目标函数相关的加解密数据。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的获取应用程序加解密数据的方法中的相关操作.
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述获取应用程序加解密数据的装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种获取应用程序加解密数据的方法,其特征在于,包括:
在安卓运行时ART虚拟机的压栈函数运行时,若存在目标函数需要压入栈传输参数,则获取所述目标函数的函数声明信息;其中,所述函数声明信息包括函数的名字、函数类型、形参类型、形参个数以及形参顺序中至少一项;
对所述函数声明信息进行特征匹配;
如果函数声明信息特征匹配成功,则获取与所述目标函数相关的加解密数据;
如果函数声明信息特征匹配失败,则确定所述目标函数的调用对象;
对所述调用对象进行特征匹配;
如果调用对象特征匹配成功,则获取与所述目标函数相关的加解密数据。
2.根据权利要求1所述的方法,其特征在于,如果函数声明信息特征匹配成功,则获取与所述目标函数相关的加解密数据,包括:
如果所述函数声明信息与特征库中加解密算法函数列表中的加解密执行函数匹配成功,则获取传入的各参数在所述目标函数执行前的值以及所述目标函数执行后的值。
3.根据权利要求1所述的方法,其特征在于,如果调用对象特征匹配成功,则获取与所述目标函数相关的加解密数据,包括:
如果所述调用对象与特征库中加解密器对象列表中的加解密器对象匹配成功,则获取与所述目标函数执行对应的参数。
4.根据权利要求3所述的方法,其特征在于,还包括:
如果所述函数声明信息与特征库中加解密算法函数列表中的加解密器构造函数匹配成功,则将与所述目标函数对应的加解密器对象以及加解密构造参数记录至所述加解密器对象列表中。
5.根据权利要求1所述的方法,其特征在于,还包括:
在ART虚拟机环境下,如果监控到由于垃圾回收GC导致的内存对象迁移现象,则执行与所述内存对象迁移现象匹配的对象迁移操作;
如果监控到由于GC导致的内存回收现象,则执行与所述内存回收现象匹配的对象删除操作。
6.根据权利要求1所述的方法,其特征在于,在获取与所述目标函数相关的加解密数据之后,还包括:
将所述加解密数据格式统一化后输出并展示。
7.一种获取应用程序加解密数据的装置,其特征在于,包括:
函数声明信息获取模块,用于在ART虚拟机的压栈函数运行时,若存在目标函数需要压入栈传输参数,则获取所述目标函数的函数声明信息;其中,所述函数声明信息包括函数的名字、函数类型、形参类型、形参个数以及形参顺序中至少一项;
函数声明信息特征匹配模块,用于对所述函数声明信息进行特征匹配;
加解密数据获取第一模块,用于如果函数声明信息特征匹配成功,则获取与所述目标函数相关的加解密数据;
函数调用对象确定模块,用于如果函数声明信息特征匹配失败,则确定所述目标函数的调用对象;
函数调用对象特征匹配模块,用于对所述调用对象进行特征匹配;
加解密数据获取第二模块,用于如果调用对象特征匹配成功,则获取与所述目标函数相关的加解密数据。
8.一种电子设备,其特征在于,所述电子设备运行安卓系统,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110722108.1A CN113392416B (zh) | 2021-06-28 | 2021-06-28 | 获取应用程序加解密数据的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110722108.1A CN113392416B (zh) | 2021-06-28 | 2021-06-28 | 获取应用程序加解密数据的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113392416A CN113392416A (zh) | 2021-09-14 |
CN113392416B true CN113392416B (zh) | 2024-03-22 |
Family
ID=77624373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110722108.1A Active CN113392416B (zh) | 2021-06-28 | 2021-06-28 | 获取应用程序加解密数据的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113392416B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927193A (zh) * | 2013-01-15 | 2014-07-16 | 中兴通讯股份有限公司 | Java应用程序函数迁移运行时的加载方法、服务端虚拟机 |
CN104598809A (zh) * | 2015-02-13 | 2015-05-06 | 北京奇虎科技有限公司 | 程序的监控方法及其防御方法以及相关装置 |
CN106845234A (zh) * | 2017-01-05 | 2017-06-13 | 中国电子科技网络信息安全有限公司 | 一种基于函数流关键点监控的安卓恶意软件检测方法 |
CN107133517A (zh) * | 2017-05-08 | 2017-09-05 | 成都德涵信息技术有限公司 | 一种基于内存中数据加密和计算的数据还原方法 |
CN108681457A (zh) * | 2018-05-11 | 2018-10-19 | 西北大学 | 基于代码下沉与残码解释的Android应用程序保护方法 |
CN108804913A (zh) * | 2018-04-27 | 2018-11-13 | 北京奇艺世纪科技有限公司 | 应用程序的运行方法和装置 |
CN109766698A (zh) * | 2018-06-26 | 2019-05-17 | 360企业安全技术(珠海)有限公司 | 数据防护方法及装置 |
CN110096433A (zh) * | 2019-03-26 | 2019-08-06 | 北京邮电大学 | 一种iOS平台上获取加密数据的方法 |
CN110232146A (zh) * | 2019-04-30 | 2019-09-13 | 北京邮电大学 | 一种数据抓取方法及抓取装置 |
CN112800475A (zh) * | 2021-03-24 | 2021-05-14 | 国网上海市电力公司 | 数据加密方法、装置、电子设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210056345A (ko) * | 2018-08-08 | 2021-05-18 | 트래킹 패킹, 인코퍼레이티드. | 배송 패키지 추적 또는 모니터링 시스템 및 방법 |
-
2021
- 2021-06-28 CN CN202110722108.1A patent/CN113392416B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927193A (zh) * | 2013-01-15 | 2014-07-16 | 中兴通讯股份有限公司 | Java应用程序函数迁移运行时的加载方法、服务端虚拟机 |
CN104598809A (zh) * | 2015-02-13 | 2015-05-06 | 北京奇虎科技有限公司 | 程序的监控方法及其防御方法以及相关装置 |
CN106845234A (zh) * | 2017-01-05 | 2017-06-13 | 中国电子科技网络信息安全有限公司 | 一种基于函数流关键点监控的安卓恶意软件检测方法 |
CN107133517A (zh) * | 2017-05-08 | 2017-09-05 | 成都德涵信息技术有限公司 | 一种基于内存中数据加密和计算的数据还原方法 |
CN108804913A (zh) * | 2018-04-27 | 2018-11-13 | 北京奇艺世纪科技有限公司 | 应用程序的运行方法和装置 |
CN108681457A (zh) * | 2018-05-11 | 2018-10-19 | 西北大学 | 基于代码下沉与残码解释的Android应用程序保护方法 |
CN109766698A (zh) * | 2018-06-26 | 2019-05-17 | 360企业安全技术(珠海)有限公司 | 数据防护方法及装置 |
CN110096433A (zh) * | 2019-03-26 | 2019-08-06 | 北京邮电大学 | 一种iOS平台上获取加密数据的方法 |
CN110232146A (zh) * | 2019-04-30 | 2019-09-13 | 北京邮电大学 | 一种数据抓取方法及抓取装置 |
CN112800475A (zh) * | 2021-03-24 | 2021-05-14 | 国网上海市电力公司 | 数据加密方法、装置、电子设备及介质 |
Non-Patent Citations (2)
Title |
---|
基于AES算法的可演化安全SoC原型设计与实现;孙科;《中国优秀硕士学位论文全文数据库 信息科技辑》(第03期);I135-781 * |
基于Android平台的应用程序保护新技术及安全性研究;陈泽;《中国优秀硕士学位论文全文数据库 信息科技辑》(第04期);I138-82 * |
Also Published As
Publication number | Publication date |
---|---|
CN113392416A (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kwon et al. | MCI: Modeling-based causality inference in audit logging for attack investigation | |
TWI726834B (zh) | 用於產生可供診斷標的網路系統是否受到駭客入侵攻擊的可疑事件時序圖的網路安全漏洞診斷系統 | |
Coulter et al. | Code analysis for intelligent cyber systems: A data-driven approach | |
JP2019527877A (ja) | Plcの仮想的なパッチおよびセキュリティコンテキストの自動配信 | |
CN105579955A (zh) | 应用控制流模型 | |
CN113162794B (zh) | 下一步攻击事件预测方法及相关设备 | |
CN109784007A (zh) | 一种字节码加密的方法、字节码解密的方法及终端 | |
CN103209173A (zh) | 一种网络协议漏洞挖掘方法 | |
CN111475376A (zh) | 处理测试数据的方法、装置、计算机设备和存储介质 | |
Thomas et al. | Memory foreshadow: memory forensics of hardware cryptocurrency wallets–a tool and visualization framework | |
US9910994B1 (en) | System for assuring security of sensitive data on a host | |
CN115134067A (zh) | 检测隐私数据泄漏的方法 | |
US11290473B2 (en) | Automatic generation of detection alerts | |
JP6213676B2 (ja) | 解析装置、解析方法、および、解析プログラム | |
US20200252417A1 (en) | Anomaly lookup for cyber security hunting | |
US20230376610A1 (en) | Non-Intrusive Method of Detecting Security Flaws of a Computer Program | |
CN113392416B (zh) | 获取应用程序加解密数据的方法、装置、设备及存储介质 | |
CN111367505A (zh) | 一种JavaScript源代码保密方法、装置、设备及存储介质 | |
US11763004B1 (en) | System and method for bootkit detection | |
Lemos et al. | Inspecting Binder transactions to detect anomalies in Android | |
Mahboubi et al. | Using process mining to identify file system metrics impacted by ransomware execution | |
WO2024082700A1 (zh) | 数据处理方法、终端设备及系统 | |
D’Arco et al. | On the file recovery in systems infected by Ransomware | |
KR102581932B1 (ko) | 리버싱 엔진을 이용하여 SEH overwrite Mitigation 우회를 탐지하기 위한 방법 및 장치 | |
US11822651B2 (en) | Adversarial resilient malware detector randomization method and devices |
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 |