CN112861191B - 一种应用程序监控方法及装置 - Google Patents
一种应用程序监控方法及装置 Download PDFInfo
- Publication number
- CN112861191B CN112861191B CN202110440221.0A CN202110440221A CN112861191B CN 112861191 B CN112861191 B CN 112861191B CN 202110440221 A CN202110440221 A CN 202110440221A CN 112861191 B CN112861191 B CN 112861191B
- Authority
- CN
- China
- Prior art keywords
- information
- program
- application program
- signature information
- target
- 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
Images
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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种应用程序监控方法及装置,涉及互联网技术领域,该方法包括:当应用程序在目标系统中启动时,从所述目标系统中获取所述应用程序的第一签名信息;从所述应用程序的安装资源文件中,获取所述应用程序对应的第二签名信息及程序描述信息;当所述第一签名信息与所述第二签名信息一致时,将所述程序描述信息上传至服务器;通过所述服务器中的目标校验信息对所述程序描述信息进行校验,得到校验结果,所述校验结果用于确定所述应用程序是否存在风险。本申请有效提升应用程序的监控可靠性。
Description
技术领域
本申请涉及互联网技术领域,具体涉及一种应用程序监控方法及装置。
背景技术
随着应用程序广泛应用,存在黑客通过重打包在应用程序上添加恶意篡改代码的情况,所以对应用程序的监控十分重要。
目前,对于应用程序的监控存在通过对应用程序本身进行一些编码处理,从而对应用程序进行监控处理的措施,这样存在容易被黑客绕过监控,导致应用程序的监控可靠性较低的问题。
发明内容
本申请实施例提供一种应用程序监控方法及装置,旨在提升应用程序的监控可靠性。
为解决上述技术问题,本申请实施例提供以下技术方案:
根据本申请的一个实施例,一种应用程序监控方法,其包括当应用程序在目标系统中启动时,从所述目标系统中获取所述应用程序的第一签名信息;从所述应用程序的安装资源文件中,获取所述应用程序对应的第二签名信息及程序描述信息;当所述第一签名信息与所述第二签名信息一致时,将所述程序描述信息上传至服务器;通过所述服务器中的目标校验信息对所述程序描述信息进行校验,得到校验结果,所述校验结果用于确定所述应用程序是否存在风险。
根据本申请的一个实施例,一种应用程序监控装置,其包括:第一获取模块,用于当应用程序在目标系统中启动时,从所述目标系统中获取所述应用程序的第一签名信息;第二获取模块,用于从所述应用程序的安装资源文件中,获取所述应用程序对应的第二签名信息及程序描述信息;第一校验模块,用于当所述第一签名信息与所述第二签名信息一致时,将所述程序描述信息上传至服务器;第二校验模块,用于通过所述服务器中的目标校验信息对所述程序描述信息进行校验,得到校验结果,所述校验结果用于确定所述应用程序是否存在风险。
在本申请的一些实施例中,所述第一校验模块,包括:信息加密单元,用于利用预定签名信息加密所述程序描述信息,得到加密校验信息,所述预定签名信息包括所述第一签名信息及所述第二签名信息中一种;信息上传单元,用于将所述加密校验信息上传至所述服务器。
在本申请的一些实施例中,所述目标校验信息包括所述应用程序的目标签名信息及目标程序描述信息;所述第二校验模块,包括:解密校验单元,用于通过所述服务器中的所述目标签名信息对所述加密校验信息进行解密校验,以在解密校验通过时,解密出所述程序描述信息;内容校验单元,用于利用所述目标程序描述信息,对解密出的所述程序描述信息进行一致性校验,得到所述校验结果。
在本申请的一些实施例中,所述第一获取模块,包括:动态库加载单元,用于加载动态库文件,所述动态库文件中包括二进制证书获取逻辑;证书获取逻辑执行单元,用于执行所述二进制证书获取逻辑,以在原生层基于反射方式通过所述目标系统的应用程序服务层中的证书获取接口,获取所述应用程序的第一签名信息。
在本申请的一些实施例中,所述动态库文件中还包括所述应用程序的特定程序逻辑;所述动态库加载单元,用于:响应于所述特定程序逻辑的触发指令,加载所述动态库文件;所述装置还包括控制模块,用于根据所述校验结果确定所述应用程序中的所述特定程序逻辑的运行状态。
在本申请的一些实施例中,所述动态库文件中还包括二进制证书比较逻辑;所述第一校验模块,包括:比较逻辑执行单元,用于执行所述二进制证书比较逻辑,以在原生层对所述第一签名信息与所述第二签名信息进行比较验证,得到比较验证结果;第一检验单元,用于当所述比较验证结果指示所述第一签名信息与所述第二签名信息一致时,将所述程序描述信息上传至服务器。
在本申请的一些实施例中,所述动态库文件中还包括二进制资源解析逻辑;所述第二获取模块,包括:解析逻辑执行单元,用于执行所述二进制资源解析逻辑,以获取所述应用程序对应的存储地址;权限配置单元,用于基于所述存储地址,获取所述应用程序对应的安装资源文件,并将所述安装资源文件保存至具有解析权限的目标位置;文件解析单元,用于在所述目标位置解析所述安装资源文件,得到所述应用程序对应的第二签名信息及程序描述信息。
在本申请的一些实施例中,所述第二获取模块,还包括:重命名单元,用于对所述安装资源文件重命名处理,得到重命名后的安装资源文件;所述文件解析单元,用于在所述目标位置解析所述重命名后的安装资源文件。
在本申请的一些实施例中,所述装置还包括:目标版本文件获取模块,用于获取所述应用程序的开发者版本对应的程序文件;反编译提取模块,用于将所述开发者版本对应的程序文件上传至所述服务器,以通过对所述开发者版本对应的程序文件进行反编译,提取所述应用程序对应的目标签名信息及目标程序描述信息;校验信息保存单元,用于在所述服务器中,将所述目标签名信息及所述目标程序描述信息作为所述目标校验信息进行保存。
根据本申请的另一实施例,一种电子设备可以包括:存储器,存储有计算机可读指令;处理器,读取存储器存储的计算机可读指令,以执行本申请实施例所述的方法。
根据本申请的另一实施例,一种存储介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行本申请实施例所述的方法。
根据本申请的另一实施例,一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例所述的各种可选实现方式中提供的方法。
本申请实施例通过当应用程序在目标系统中启动时,从目标系统中获取应用程序的第一签名信息;从应用程序的安装资源文件中,获取应用程序对应的第二签名信息及程序描述信息;当第一签名信息与第二签名信息一致时,将程序描述信息上传至服务器;通过服务器中的目标校验信息对程序描述信息进行校验,得到校验结果;根据校验结果控制所述应用程序的运行状态。
以这种方式,在应用程序启动时,通过从目标系统中获取第一签名信息以及从安装资源文件中第二签名信息及程序描述信息,可以基于第一签名信息与第二签名信息是否一致,在本地对应用程序的签名信息是否异常进行本地校验,避免了把正确签名信息硬编码到应用程序中的校验监控时容易被黑客绕过的问题,进一步的,当第一签名信息与第二签名信息一致时,将程序描述信息上传至服务器进行程序描述信息的校验,通过程序描述信息的进一步校验,避免把从目标系统中获取到的第一签名信息当成正确的签名证书校验监控方式,避免黑客对于第一签名信息的篡改,进而通过本地校验加上服务器的进一步校验,确保黑客难以绕过应用程序的校验监控,有效提升应用程序的监控可靠性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本申请实施例的系统的示意图。
图2示出了可以应用本申请实施例的另一个系统的示意图。
图3示出了根据本申请的一个实施例的应用程序监控方法的流程图。
图4示出了根据图3实施例的应用程序监控方法的流程图。
图5示出了应用本申请的实施例的一种场景下应用程序监控的流程图。
图6示出了图5所示场景下服务器中生成目标校验信息的流程图。
图7示出了本申请的实施例的展示存储地址的终端界面图。
图8示出了本申请的实施例的展示配置文件的终端界面图。
图9示出了本申请的实施例的展示签名证书文件的终端界面图。
图10示出了本申请的实施例的上传程序文件的终端界面图。
图11示出了本申请的实施例的提示应用程序不合法的终端界面图。
图12示出了根据本申请的一个实施例的应用程序监控装置的框图。
图13示出了根据本申请的一个实施例的电子设备的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在以下的说明中,本申请的具体实施例将参考由一部或多部计算机所执行的步骤及符号来说明,除非另有述明。因此,这些步骤及操作将有数次提到由计算机执行,本文所指的计算机执行包括了由代表了以一结构化型式中的数据的电子信号的计算机处理单元的操作。此操作转换该数据或将其维持在该计算机的内存系统中的位置处,其可重新配置或另外以本领域测试人员所熟知的方式来改变该计算机的运作。该数据所维持的数据结构为该内存的实体位置,其具有由该数据格式所定义的特定特性。但是,本申请原理以上述文字来说明,其并不代表为一种限制,本领域测试人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
图1示出了可以应用本申请实施例的系统100的示意图。如图1所示,系统100可以包括服务器101、终端102,服务器101上可以进行各种信息的存储、分发等工作,终端102上可以进行应用程序的运行、发布、开发等工作。
服务器101可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
一种实施方式中,服务器101可以提供人工智能云服务,例如提供大型多人在线角色扮演游戏(MMORPG)的人工智能云服务。所谓人工智能云服务,一般也被称作是AIaaS(AIas a Service,中文为“AI即服务”)。这是目前主流的一种人工智能平台的服务方式,具体来说AIaaS平台会把几类常见的AI服务进行拆分,并在云端提供独立或者打包的服务。这种服务模式类似于开了一个AI主题商城:所有的开发者都可以通过API接口的方式来接入使用平台提供的一种或者是多种人工智能服务,部分资深的开发者还可以使用平台提供的AI框架和AI基础设施来部署和运维自已专属的云人工智能服务,例如,服务器101可以提供基于人工智能的签名信息校验处理。
终端102可以是边缘设备,例如智能手机、电脑、可穿戴电子设备、VR/AR设备、智能家居设备、车载计算机等等。
其中,终端102上的客户端可以通过目标协议链路向服务器101传输数据,目标协议链路可以包括基于运输层协议的链路,例如传输控制协议(TCP,Transmission ControlProtocol)链路或者用户数据报协议(UDP,User Datagram Protocol)链路传输以及其他运输层协议。
终端102和服务器101可以通过无线通信方式进行直接或间接地连接,本申请在此不做特殊限制。
本示例的一种实施方式中,终端102可以当应用程序在目标系统中启动时,从目标系统中获取应用程序的第一签名信息;终端102从应用程序的安装资源文件中,获取应用程序对应的第二签名信息及程序描述信息;终端102当第一签名信息与第二签名信息一致时,将程序描述信息上传至服务器101;通过服务器101中的目标校验信息对程序描述信息进行校验,得到校验结果,所述校验结果用于确定所述应用程序是否存在风险。
图2示出了可以应用本申请实施例的另一种系统200的示意图。如图2所示,系统200可以是由客户端201、多个节点202(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。
以分布式系统为区块链系统为例,参见图2,图2是本申请实施例提供的分布式系统200应用于区块链系统的一个可选的结构示意图,由多个节点202(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端201形成,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission ControlProtocol )协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点202,节点包括硬件层、中间层、操作系统层和应用层。
参见图2示出的区块链系统中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币;
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
本示例的一种实施方式中,当目标终端上的客户端201对应的应用程序在目标系统中启动时,从目标系统中获取应用程序的第一签名信息;从应用程序的安装资源文件中,获取应用程序对应的第二签名信息及程序描述信息;当第一签名信息与第二签名信息一致时,将程序描述信息上传至服务器(即节点202);通过服务器(即节点202)中的目标校验信息对程序描述信息进行校验,得到校验结果,所述校验结果用于确定所述应用程序是否存在风险。
图3示意性示出了根据本申请的一个实施例的应用程序监控方法的流程图。该应用程序监控方法的执行主体可以是任意电子设备,比如图1中所示的终端102或者图2中客户端201对应的目标终端。
如图3所示,该应用程序监控方法可以包括步骤S310至步骤S350。
步骤S310,当应用程序在目标系统中启动时,从目标系统中获取应用程序的第一签名信息;
步骤S320,从应用程序的安装资源文件中,获取应用程序对应的第二签名信息及程序描述信息;
步骤S330,当第一签名信息与第二签名信息一致时,将程序描述信息上传至服务器;
步骤S340,通过服务器中的目标校验信息对程序描述信息进行校验,得到校验结果,所述校验结果用于确定所述应用程序是否存在风险。
一些实施方式中,可以把签名信息硬编码到应用程序代码,在应用程序运行时从安装系统获取签名信息,通过比较监控程序是否异常;另一些实施方式中,应用程序运行时,从安装系统中获取签名信息与服务器中正确的签名信息进行比较校验监控程序是否异常。对于第一种方式,黑客把硬编码的签名信息替换成重打包的签名信息,这样从安装系统获取的签名信息与重打包的签名信息一致时,就绕过了监控;对于第二种方式,黑客在对应用程序重打包并签名后,捕获系统接口返回的签名信息与服务器中的签名信息一致时,也就绕过了监控。因此,可能存在应用程序的监控可靠性较低的问题。
本申请,基于步骤S310至步骤S340的相关实施例至少可以实现:在应用程序启动时,通过从目标系统中获取第一签名信息以及从安装资源文件中第二签名信息及程序描述信息,可以基于第一签名信息与第二签名信息是否一致,在本地对应用程序的签名信息是否异常进行本地校验,避免了把正确签名信息硬编码到应用程序中的校验监控时容易被黑客绕过的问题,进一步的,当第一签名信息与第二签名信息一致时,将程序描述信息上传至服务器进行程序描述信息的校验,通过程序描述信息的进一步校验,避免把从目标系统中获取到的第一签名信息当成正确的签名证书校验监控方式,避免黑客对于第一签名信息的篡改,进而通过本地校验加上服务器的进一步校验,确保黑客难以绕过应用程序的校验监控,有效提升应用程序的监控可靠性。
下面描述应用程序监控时,所进行的各步骤的具体过程。
在步骤S310中,当应用程序在目标系统中启动时,从目标系统中获取应用程序的第一签名信息。
本示例的实施方式中,应用程序指用于完成某项或多项特定工作的计算机程序,即单一可执行文件或单一程序,例如Word、Photoshop等。一种实施例中,应用程序可以指应用软件,应用软件可以是单一程序或其他从属组件的集合,例如Microsoft Office、OpenOffice等。
目标系统即供应用程序安装运行的系统,例如Windows操作系统、iOS操作系统、鸿蒙OS系统以及Android操作系统等。不同的操作系统可以安装运行对应类型的应用程序。一种实施例中,应用程序为Android应用程序,目标系统为Android操作系统。
应用程序在目标系统中经过数字签名后,才能安装在目标系统中,当前启动的应用程序经过数字签名产生第一签名信息(例如签名证书),目标系统可以根据该第一签名信息标识应该程序的开发者及应用程序之间的信任关系,该数字签名可以由应用程序的开发者完成。
以 Android操作系统为例, Android操作系统要求每一个Android应用程序经过数字签名才能够安装到 Android操作系统中,也就是说如果一个Android应用程序没有经过数字签名是没有办法安装到系统中的,当前启动的Android应用程序经过数字签名产生第一签名信息(例如签名证书)。 Android操作系统通过第一签名信息来标识开发者与应用程序之间的信任关系,这个数字签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证。
进而,当应用程序在目标系统中启动时,可以通过获取签名信息的系统接口从目标系统中获取应用程序的第一签名信息。其中,在该目标系统中启动的该应用程序可能是黑客通过重打包添加恶意篡改代码,并数字签名后的应用程序;在该目标系统中启动的该应用程序也可能是开发者发布的正常应用程序。通过系统接口从目标系统中获取应用程序的第一签名信息,可能是黑客通过 Hook技术在系统没有调用系统接口之前,利用钩子程序就先捕获该系统接口的控制权,通过系统接口返回的假的签名信息,该假的签名信息与黑客自身重打包时数字签名得到的签名信息不一致(例如假的签名信息是黑客故意返回的重打包之前的正确的签名信息),以欺骗应用程序的监控。
一种实施例中,参阅图4,步骤S310中,从目标系统中获取应用程序的第一签名信息,包括:
步骤S311,加载动态库文件,该动态库文件中包括二进制证书获取逻辑;
步骤S312,执行二进制证书获取逻辑,以在原生层基于反射方式通过目标系统的应用程序服务层中的证书获取接口,获取应用程序的第一签名信息。
动态库文件可以是基于原生开发工具包(native development kit,NDK)编译的动态库文件。该NDK包括了一套交叉编译环境和开发库,利用该NDK可以编写C/C++语言程序,该NDK可以编译成目标系统的系统环境下可以使用的动态库文件,编译得到的该动态库文件中的程序逻辑为二进制逻辑(即二进制逻辑代码),该二进制逻辑在原生层(即NDK层,也就是操作系统中NDK所对应的原生系统层)执行。
本实施例中该动态库文件中实现二进制证书获取逻辑,二进制证书获取逻辑即获取第一签名信息的二进制逻辑代码;证书获取逻辑一方面没有解释编译的开消,获取第一签名信息的效率高,同时,二进制证书获取逻辑的反编译难度大,保证第一签名信息获取过程中的难以被黑客篡改。
二进制证书获取逻辑可以基于反射方式通过目标系统的应用程序服务层中的证书获取接口,获取应用程序的第一签名信息。即基于反射方式通过服务类的类名直接获取服务类(例如证书获取服务类),通过服务类的系统接口(例如证书获取服务类的证书获取接口)获取对象(例如第一签名信息)。
其中,应用程序服务层即应用程序可以直接获取目标系统中所需系统服务对象的系统服务层,应用程序服务层例如Android操作系统中的Java层,该层的系统服务主要由Java语言编写,在这里我们称为Android系统服务(AndroidService),应用程序一般可以通过Context句柄获得对应的系统服务对象,例如AudioService,LocationManagerService,WindowManagerService,ActivityManagerService等系统服务对象。
以目标系统为Android操作系统为例,NDK可以是用C或C++语言在Android操作系统的一组套件,一般来讲以so文件(即动态库文件)的形式存在,Java层系统服务的Java代码可以通过JNI接口来调用so文件(即动态库文件)的相关二进制代码,so文件的C或C++二进制逻辑(即二进制代码)可以在原生层执行通过反射方式获取到Java层的相关服务对象(例如证书获取服务类)以及相关API接口(例如证书获取服务类的证书获取接口)的调用。进而,基于动态库文件中二进制证书获取逻辑的执行获取第一签名信息,可以在Android操作系统中的NDK层(即原生层)进行信息获取,增加第一签名信息获取逻辑的复杂度,保证Android操作系统中第一签名信息获取过程中的难以被黑客篡改,因为so文件通过反汇编,得到的是ARM代码,修改so文件难度将大增。
一种实施例中,动态库文件中包含有应用程序的特定程序逻辑;步骤S311,加载动态库文件,包括:
响应于特定程序逻辑的触发指令,加载动态库文件;
此时,在步骤S340,通过服务器中的目标校验信息对程序描述信息进行校验,得到校验结果之后,包括:
根据校验结果确定应用程序中的特定程序逻辑的运行状态。
应用程序的特定程序逻辑可以是应用程序中的核心程序逻辑,例如支付程序等重要逻辑。进而,响应于特定程序逻辑的触发指令,加载动态库文件,可以保证应用程序运行时无法跳过该动态库文件的加载。
加载动态库文件后强制进行本地信息校验逻辑(可以包括二进制证书获取逻辑,以及后续实施例中的二进制资源解析逻辑以及二进制证书比较逻辑等)的执行,完成本地签名信息的校验,然后,根据校验结果确定应用程序中的特定程序逻辑的运行状态,例如确定是否运行该特定程序逻辑。进一步避免黑客跳过本地签名信息的校验过程。
在步骤S320中,从应用程序的安装资源文件中,获取应用程序对应的第二签名信息及程序描述信息。
本示例的实施方式中,应用程序的安装资源文件即该应用程序在目标系统中安装后,在承载该目标系统的终端中的内存中保存的安装程序资源包。通过对该安装资源文件进行解析,即可得到该应用程序的安装版本对应的第二签名信息及程序描述信息。
第二签名信息即应用程序的签名证书;程序描述信息即描述应用程序的版本及程序内容的信息,一种实施例中,程序描述信息可以包括应用程序的版本信息、摘要信息以及应用程序的程序文件的包名,摘要信息为通过对应用程序的程序文件(程序文件可以是安装资源文件或者安装资源文件中的核心文件)经信息摘要算法(MD5, Message-DigestAlgorithm)计算处理得到的摘要信息(即文件MD5)。
其中,第二签名信息及程序描述信息从应用程序的安装资源文件中获得,反映了该应用程序的真实信息,且该第二签名信息及程序描述信息获取时难以被黑客篡改以欺骗应用程序的校验监控。
获取应用程序对应的第二签名信息及程序描述信息的方式:可以通过目标系统的信息获取接口(例如应用信息服务类的信息获取接口)获取应用程序对应的存储地址,也可以根据应用程序的包名,在预定安装内存中遍历以该包名为前缀的文件名,进而获取应用程序对应的存储地址;从存储地址中获取应用程序对应的安装资源文件,并将安装资源文件保存至具有解析权限的目标位置;在目标位置解析安装资源文件,得到应用程序对应的第二签名信息及程序描述信息。
一种实施例中,动态库文件中还包括二进制资源解析逻辑;参阅图4,步骤S320,从应用程序的安装资源文件中,获取应用程序对应的第二签名信息及程序描述信息,包括:
步骤S321,执行二进制资源解析逻辑,以获取应用程序对应的存储地址;
步骤S322,基于存储地址,获取应用程序对应的安装资源文件,并将安装资源文件保存至具有解析权限的目标位置;
步骤S323,在目标位置解析安装资源文件,得到应用程序对应的第二签名信息及程序描述信息。
本实施例中动态库文件中实现二进制资源解析逻辑,二进制资源解析逻辑即解析安装资源文件的二进制逻辑代码,二进制资源解析逻辑一方面没有解释编译的开消,资源解析的效率高,同时,二进制资源解析逻辑的反编译难度大,保证资源解析过程中的难以被黑客攻击。
执行二进制资源解析逻辑,一种实施例中,可以在原生层基于反射方式通过目标系统的信息获取接口(例如应用信息服务类的信息获取接口)获取应用程序对应的存储地址,或者,另一种实施例中,可以根据应用程序的包名,在预定安装内存中遍历以该包名为前缀的文件名,进而获取应用程序对应的存储地址。其中,存储地址即应用程序安装在设备中对应的安装资源文件存储位置,存储地址可以是内存安装路径,例如图7所示的路径“/data/app目录”。
然后,基于二进制资源解析逻辑的执行,获取安装资源文件并将安装资源文件保存至具有解析权限的目标位置(例如终端的sd卡中),进而获得安装资源文件的解析权限,最后,基于二进制资源解析逻辑的执行,在目标位置解析安装资源文件,得到应用程序对应的第二签名信息及程序描述信息。
以目标系统为Android操作系统为例,动态库文件中的二进制资源解析逻辑的执行,可以在Android操作系统中的NDK层进行资源解析,增加资源解析逻辑的复杂度,保证Android操作系统中资源解析过程中的难以被黑客攻击,因为so文件通过反汇编,得到的是ARM代码,修改so文件难度将大增。
一种实施例中,步骤S322,将安装资源文件保存至具有解析权限的目标位置之后,还包括:
对安装资源文件重命名处理,得到重命名后的安装资源文件;
步骤S323,在目标位置解析安装资源文件,包括:
在目标位置解析重命名后的安装资源文件。
将安装资源文件保存至具有解析权限的目标位置(例如终端的sd卡中)之后,将对安装资源文件重命名处理,得到重命名后的安装资源文件进行解析,可以防止应用程序在目标位置的存储路径(例如应用程序在sd卡的存储路径)与安装资源文件的名字一样的情况,进而,防止在按照默认保存方式保存安装资源文件时,安装资源文件的名称与存储路径的名称一样时,黑客容易锁定该安装资源文件,导致保存的安装资源文件被替换为没有被黑客重打包的应用程序的资源文件,进而通过重命名处理进一步保证应用程序监控的可靠性。
一种实施例中,动态库文件中还包括二进制重命名逻辑,执行二进制重命名逻辑可以对安装资源文件进行随机重命名处理,通过二进制重命名逻辑进一步保证重命名处理的可靠性。
在步骤S330中,当第一签名信息与第二签名信息一致时,将程序描述信息上传至服务器。
本示例的实施方式中,第一签名信息为应用程序运行启动的目标系统中获取的签名信息,第一签名信息获取时容易被黑客攻击,即黑客容易攻击获取第一签名信息的系统接口而返回假的签名信息;第二签名信息为应用程序的安装资源文件获取的该应用程序的安装版本对应的第二签名信息,一般第二签名证书的获取较难被黑客攻击。
进而,比较第一签名信息与第二签名信息是否一致,可以比较验证黑客容易是否攻击获取第一签名信息的系统接口而返回假的签名信息。当第一签名信息与第二签名信息一致时,证明黑客容易没有攻击获取第一签名信息的系统接口而返回假的签名信息,同时,初步证明应用程序可能没有被黑客重打包并签名,此时,继续将程序描述信息上传至服务器进一步校验。
相反,当第一签名信息与第二签名信息不一致时,证明黑客攻击了获取第一签名信息的系统接口而返回假的签名信息,应用程序具有被黑客重打包并签名的风险,此时,可以直接结束应用程序的运行,退出程序运行。
一种实施例中,动态库文件中还包括二进制证书比较逻辑;参阅图4,步骤S330,当第一签名信息与第二签名信息一致时,将程序描述信息上传至服务器,包括:
步骤S331,执行二进制证书比较逻辑,以在原生层对第一签名信息与第二签名信息进行比较验证,得到比较验证结果;
步骤S332,当比较验证结果指示第一签名信息与第二签名信息一致时,将程序描述信息上传至服务器。
本实施例中动态库文件中实现二进制证书比较逻辑,二进制证书比较逻辑即验证第一签名信息与第二签名信息是否一致的二进制逻辑代码,二进制证书比较逻辑一方面没有解释编译的开消,信息比较的效率高,同时,在原生层执行二进制证书比较逻辑的反编译难度大,保证信息比较过程中的难以被黑客攻击。
当第一签名信息与第二签名信息一致时,证明黑客容易没有攻击获取第一签名信息的系统接口而返回假的签名信息,同时,初步证明应用程序可能没有被黑客重打包并签名,此时,继续将程序描述信息上传至服务器进一步校验。
一些实施例中,把本地信息校验逻辑均设置于动态库文件中,本地信息校验逻辑可以包括二进制证书获取逻辑,以及后续实施例中的二进制资源解析逻辑、二进制重命名逻辑以及二进制证书比较逻辑,保证本地进行签名信息校验的安全性及效率。
一种实施例中,步骤S330、步骤S332中,将程序描述信息上传至服务器,包括:利用预定签名信息加密程序描述信息,得到加密校验信息,预定签名信息包括第一签名信息及第二签名信息中一种;将加密校验信息上传至服务器。
服务器中可以预设目标校验信息,该目标校验信息可以是应用程序的开发者或者有权限的发布者保存在服务器中的,以通过该目标校验信息校验应用程序是否被篡改。
在验证了第一签名信息及第二签名信息一致后,将程序描述信息上传至服务器时,首先,利用第一签名信息及第二签名信息中一种,对程序描述信息进行加密,得到加密校验信息后进行上传可以保证程序描述信息的安全性,以及服务器可以在解密加密校验信息时,进一步校验获取第一签名信息时系统接口是否被黑客攻击。
在步骤S340中,通过服务器中的目标校验信息对程序描述信息进行校验,得到校验结果,该校验结果用于确定应用程序是否存在风险。
本示例的实施方式中,程序描述信息即描述应用程序的版本及程序内容的信息。一种实施例中,目标校验信息可以是预设的用于校验程序描述信息是否与应用程序的开发者版本所匹配的信息,其中,开发者版本可以是应用程序的开发者或者合法拥有者最新开发的上传至服务器的应用程序版本,目标校验信息可以包括开发者版本对应的目标程序描述信息(例如可以包括版本信息及摘要信息)。通过服务器中的目标校验信息对程序描述信息进行校验,可以校验目标校验信息是否与应用程序的开发者版本所匹配(例如程序描述信息与目标程序描述信息是否一致),得到校验结果。一种实施例中,目标校验信息可以是应用程序的开发者或者合法拥有者动态上传的验证信息,该实施例中该目标校验信息中包括动态识别信息及动态验证信息,可以获取程序描述信息与动态识别信息的差别信息,然后,判断该差别信息与动态验证信息是否一致,得到校验结果。
校验结果如果为不匹配(例如程序描述信息与目标程序描述信息不一致,或者差别信息与动态验证信息不一致),则说明系统中当前启动的应用程序被黑客重打包并签名,进而根据校验结果可以确定应用程序具有风险;校验结果如果为匹配(例如程序描述信息与目标程序描述信息一致或者差别信息与动态验证信息一致),则在基于前虚步骤中进行的本地校验的基础上,说明系统中当前启动的应用程序没有黑客重打包并签名,进而根据校验结果可以确定应用程序不具有风险。
一种实施例中,目标校验信息包括应用程序的目标签名信息及目标程序描述信息;步骤S340,通过服务器中的目标校验信息对程序描述信息进行校验,得到校验结果,包括:
通过服务器中的目标签名信息对加密校验信息进行解密校验,以在解密校验通过时,解密出程序描述信息;
利用目标程序描述信息,对解密出的程序描述信息进行一致性校验,得到校验结果。
目标签名信息及目标程序描述信息可以是开发者版本对应的签名信息及程序描述信息(例如可以包括版本信息及摘要信息)。
解密校验通过即目标签名信息与加密校验信息的秘钥(第一签名信息与第二签名信息中的一种)一致,可以通过目标签名信息对加密校验信息进行解密,解密出被加密的程序描述信息。这样通过解密校验可以在程序描述信息校验以前,进一步校验秘钥(第一签名信息与第二签名信息中的一种)是否被黑客攻击,例如可以校验获取第一签名信息是系统接口是否被攻击,在本地校验获取第一签名信息是系统接口是否被攻击的基础上进一步进行校验监控,进一步保证黑客难以绕过校验过程。
进而解密校验通过时,说明秘钥(第一签名信息与第二签名信息中的一种)没有被黑客攻击,获取第一签名信息是系统接口没有被攻击,进而,进一步通过服务器中的目标校验信息对程序描述信息进行一致性校验,可以校验目标校验信息是否与应用程序的开发者版本所匹配(例如程序描述信息与目标程序描述信息是否一致),得到校验结果,极大的保证了应用程序监控校验逻辑很难被绕过。
一种实施例中,步骤S340之后,还可以包括:根据校验结果控制应用程序的运行状态。
本示例的实施方式中,运行状态即应用程序是否运行。当校验结果为不匹配(例如程序描述信息与目标程序描述信息不一致,或者差别信息与动态验证信息不一致),则说明系统中当前启动的应用程序被黑客重打包并签名,此时可以控制应用程序在目标系统停止运行;当校验结果如果为匹配(例如程序描述信息与目标程序描述信息一致,或者差别信息与动态验证信息不一致),则在基于前虚步骤中进行的本地校验的基础上,说明系统中当前启动的应用程序没有黑客重打包并签名,此时可以控制应用程序在目标系统启动运行。
一种实施例中,在步骤S310,当应用程序在目标系统中启动时,从目标系统中获取应用程序的第一签名信息之前,还包括:
获取应用程序的开发者版本对应的程序文件;
将开发者版本对应的程序文件上传至服务器,以通过对开发者版本对应的程序文件进行反编译,提取应用程序对应的目标签名信息及目标程序描述信息;
在服务器中,将目标签名信息及目标程序描述信息作为目标校验信息进行保存。
开发者版本可以是应用程序的开发者或者合法拥有者最新开发的应用程序版本,例如,应用程序的开发者版本可以是步骤S310中应用程序在目标系统启动的时刻点之前,且距离该启动的时刻点最近的时刻点,由开发者所开发的应用程序。
将开发者版本对应的程序文件上传至服务器进行反编译,可以提取应用程序对应的正确合法签名信息及程序描述信息(即目标签名信息及目标程序描述信息),保存为目标校验信息,可以有效保证应用程序监控校验的准确性。
以这种方式,通过步骤S310至步骤S340,在应用程序启动时,通过从目标系统中获取第一签名信息以及从安装资源文件中第二签名信息及程序描述信息,可以基于第一签名信息与第二签名信息是否一致,在本地对应用程序的签名信息是否异常进行本地校验,避免了把正确签名信息硬编码到应用程序中的校验监控时容易被黑客绕过的问题,进一步的,当第一签名信息与第二签名信息一致时,将程序描述信息上传至服务器进行程序描述信息的校验,通过程序描述信息的进一步校验,避免把从目标系统中获取到的第一签名信息当成正确的签名证书校验监控方式,避免黑客对于第一签名信息的篡改,进而通过本地校验加上服务器的进一步校验,确保黑客难以绕过应用程序的校验监控,有效提升应用程序的监控可靠性。
从开发者角度来说可以保证应用程序的产品技术不会因被植入调试代码重打包后而导致被盗窃;从应用程序的产品收益来看,不会因为被植入广告代码或者篡改原来的广告ID重打包发布而导致产品收益下降等;从使用者角度来说,因不能运行被篡改重打包签名的应用程序而阻止黑客恶意窃取用户隐私信息、窃取用户的手机财产等。
根据上述实施例所描述的方法,以下将举例作进一步详细说明。
图5示出了应用本申请的实施例的一种场景下应用程序监控的流程图。该场景为进行Android应用程序监控的场景,该场景下前述实施例中的应用程序为Android应用程序(APK:Android application package),目标系统为Android操作系统。参阅图5,该场景下Android应用程序监控过程包括步骤S410至步骤S4130。
在步骤S410,当Android应用程序在Android操作系统中启动时,先加载和初始化so文件(即动态库文件),so文件中包含有本地信息校验逻辑(即so文件的C/C++二进制代码),本地信息校验逻辑可以包括二进制证书获取逻辑、二进制资源解析逻辑、二进制重命名逻辑以及二进制证书比较逻辑。
so文件中还可以包含有Android操作系统的特定程序逻辑,Android应用程序在Android操作系统中启动后,可以响应于特定程序逻辑的触发,加载和初始化so文件。
在步骤S420,执行二进制证书获取逻辑,以基于反射方式通过Android操作系统的Java层(即应用程序服务层)中的证书获取接口,获取应用程序的第一签名信息。
具体地,so文件中在Android操作系统中原生NDK层的代码(即二进制证书获取逻辑),通过反射方式获取到Android操作系统中Java层的证书获取服务类,然后通过该证书获取服务类的证书获取API接口获取到Android应用程序的第一签名信息signInfo1。
在步骤S430,执行二进制资源解析逻辑,以获取Android应用程序对应的存储地址;在步骤S440,基于存储地址,获取Android应用程序对应的安装资源文件,并将安装资源文件保存至sd卡某个路径(即具有解析权限的目标位置);在步骤S450,在sd卡中解析安装资源文件,得到Android应用程序对应的第二签名信息signInfo2及程序描述信息。
步骤S430至步骤S450,具体包括:so文件中在Android操作系统中原生NDK层的代码(即二进制资源解析逻辑),可以通过反射方式获取Android操作系统中Java层的应用信息服务类,然后通过该应用信息服务类的信息获取接口获取Android应用程序对应的存储地址,或者,可以根据应用程序的包名,在预定安装内存中遍历以该包名为前缀的文件名,进而获取Android应用程序对应的存储地址。其中,存储地址例如图7所示的存储地址“/data/app目录”601,如图7,Android应用程序程序安装后,Android操作系统的终端会在“/data/app目录”601下存储对应的安装资源文件。
然后,基于原生NDK层的代码(即二进制资源解析逻辑)的执行,从存储地址拷贝Android应用程序对应的安装资源文件至sd卡某个路径(即具有解析权限的目标位置),以及,解析该安装资源文件获得该Android应用程序的第二签名信息signInfo2及程序描述信息(可以包括版本信息及摘要信息)。
具体地,解析该安装资源文件可以包括:使用apktool 工具(apktool命令)对安装资源文件(即程序文件)进行反编译,得到反编译结果,反编译结果包括Android应用程序的配置文件Manifest.xml被反编译后得到的如图8所示的反编译配置文件Manifest.xml,以及META-INF文件被反编译后得到的反编译META-INF文件。然后,对反编译配置文件Manifest.xml进行解析获取到其中包含的版本信息602及程序文件的包名603等,读取反编译META-INF文件里以RSA后缀结尾的签名证书文件,如图9所示的签名证书文件MQQPIM.RSA,从该签名证书文件获取证书指纹中的签名信息604(即签名MD5,也就是第二签名信息)。
步骤S460,执行二进制证书比较逻辑,以进行第一签名信息与第二签名信息的比较验证,得到比较验证结果。
具体地,so文件中在Android操作系统中原生NDK层的代码(即二进制证书比较逻辑)对比第一签名信息signInfo1和第二签名信息signInfo2是否一致,如果不一致, 则该Android应用程序存在被篡改、被重打包并签名的风险,直接退出Android应用程序运行,如果一致,说明在Java层的证书获取API接口没有被黑客通过Hook技术攻击,可以把程序描述信息(可以包括版本信息及摘要信息)加密后上传到服务器。
步骤S470,当比较验证结果为第一签名信息与第二签名信息一致时,将程序描述信息上传至服务器(包括利用秘钥加密程序描述信息,得到加密校验信息,秘钥包括第一签名信息及第二签名信息中一种,将加密校验信息上传至服务器)。
步骤S480至步骤S4110,通过服务器中的数据库保存的目标校验信息(包括Android应用程序对应的目标签名信息及目标程序描述信息)对加密校验信息进行校验,得到校验结果。
步骤S480,通过服务器用目标签名信息对加密校验信息进行解密校验,以在解密校验通过时,解密出程序描述信息。如果解密不成功,则该Android应用程序存在被篡改、被重打包并签名的风险,直接退出Android应用程序的运行。
步骤S490,服务器根据当前启动的Android应用程序的版本,从数据库中获取对应版本的Android应用程序的目标程序描述信息(即服务器中当前启动的Android应用程序的版本所对应的开发者版本Android应用程序对应的目标程序描述信息,此时当前启动的Android应用程序的版本信息与目标程序描述信息中的版本信息一致),对解密出的程序描述信息进行一致性校验,得到校验结果。
需要说明的是,尽管当前启动的Android应用程序的第一版本与开发者版本Android应用程序的第二版本两者之间的版本信息相同,但当前启动的Android应用程序可能是被篡改、被重打包签名后的应用程序,而服务器中的开发者版本Android应用程序则是合法的应用程序。
步骤S4110,服务器利用目标程序描述信息中的摘要信息(即文件MD5),对解密出的程序描述信息中的摘要信息进行一致性校验,得到校验结果。如果校验结果为不一致,则该Android应用程序存在被篡改、被重打包签名的风险,则执行步骤S4130直接停止该Android应用程序的进程并退出应用运行,此外,如图11所示,如果校验结果为不一致,在客户端界面弹出如图11所述提示内容“当前客户端不合法,请在官方渠道下载”。
步骤S4120,校验结果为一致,则该Android应用程序为官方应用程序(即开发者版本的应用程序),控制该Android应用程序正常运行。
图6示出了图5所示场景下服务器中生成目标校验信息的流程图。参阅图6,服务器中生成目标校验信息的过程包括步骤S510至步骤S560。
步骤S510,服务器接收客户端(本示例中为web端)上传的Android应用程序的开发者版本对应的程序文件,具体地,Android应用程序的开发者或者合法拥有者,获取Android应用程序的开发者版本对应的程序文件,通过客户端上传该程序文件至服务器,本示例中,通过如图10所示的web端“录入应用”界面,在“安全配置-配置管理目录”605下上传该程序文件,上传的方式可以是将程序文件拖拽到界面中触发上传。其他方式中也可以是点击文件查找控件,在目标路径下选择程序文件,点击上传控件进行上传的方式。
步骤S520至步骤S550,服务器通过对开发者版本对应的程序文件进行反编译,提取应用程序对应的目标签名信息及目标程序描述信息(包括版本信息及摘要信息(即文件MD5))。
步骤S520,服务器通过对Android应用程序的开发者版本对应的程序文件利用信息摘要算法(MD5, Message-Digest Algorithm)计算处理得到Android应用程序的摘要信息(即文件MD5),得到目标程序描述信息中的摘要信息。
步骤S530,服务器对Android应用程序的开发者版本对应的程序文件进行反编译,得到反编译结果,反编译结果可以包括Android应用程序的配置文件Manifest.xml被反编译后得到的反编译配置文件Manifest.xml,以及META-INF文件被反编译后的反编译META-INF文件。
步骤S540,从反编译配置文件Manifest.xml中,获取Android应用程序的开发者版本对应的版本信息和程序文件的包名,得到目标程序描述信息中的版本信息和/或程序文件的包名。
步骤S550,从反编译META-INF文件对应的文件夹里搜索以RSA为后缀结尾的签名证书文件(如MQQPIM.RSA文件),从该签名证书文件获取证书指纹中的签名MD5,得到Android应用程序对应的目标签名信息。
步骤S550,在服务器中,将目标签名信息及目标程序描述信息作为目标校验信息进行保存,具体地,服务器将Android应用程序对应的摘要信息(即文件MD5)、版本信息、程序文件的包名以及签名证书(即签名MD5)保存在数据库中。
进而,服务器中基于上传的Android应用程序的开发者版本对应的程序文件,生成一张包含摘要信息(即文件MD5)、版本信息、程序文件的包名以及签名证书的数据表,可以可靠地进行Android应用程序重打包签名校验。
本场景下,基于本申请的实施例的应用,通过获取Android应用程序的第一签名信息与第二签名信息作为程序描述信息上传至服务器进行校验的初步校验信息,在本地利用初步校验信息初步校验通过后,通过服务器进行程序描述信息的校验,根据最终校验结果控制Android应用程序的运行状态,避免了把正确签名信息硬编码到Android应用程序中的校验监控方式,同时避免把从Android操作系统的系统接口获取到的签名信息当成正确的签名证书校验监控方式,确保黑客难以绕过Android应用程序的校验监控,保证Android应用程序运行状态控制的可靠性,有效提升Android应用程序的监控可靠性。
从开发者角度来说可以保证Android应用程序的产品技术不会因被植入调试代码重打包后而导致被盗窃;从Android应用程序的产品收益来看,不会因为被植入广告代码或者篡改原来的广告ID重打包发布而导致产品收益下降等;从使用者角度来说,因不能运行被篡改重打包签名的Android应用程序而阻止黑客恶意窃取用户隐私信息、窃取用户的手机财产等。
为便于更好的实施本申请实施例提供的应用程序监控方法,本申请实施例还提供一种基于上述应用程序监控方法的应用程序监控装置。其中名词的含义与上述应用程序监控方法中相同,具体实现细节可以参考方法实施例中的说明。图12示出了根据本申请的一个实施例的应用程序监控装置的框图。
如图12所示,应用程序监控装置700中可以包括第一获取模块710、第二获取模块720、第一校验模块730及第二校验模块740。
第一获取模块710可以用于当应用程序在目标系统中启动时,从所述目标系统中获取所述应用程序的第一签名信息;第二获取模块720可以用于从所述应用程序的安装资源文件中,获取所述应用程序对应的第二签名信息及程序描述信息;第一校验模块730可以用于当所述第一签名信息与所述第二签名信息一致时,将所述程序描述信息上传至服务器;第二校验模块740可以用于通过所述服务器中的目标校验信息对所述程序描述信息进行校验,得到校验结果,所述校验结果用于确定所述应用程序是否存在风险。
在本申请的一些实施例中,所述第一校验模块730,包括:信息加密单元,用于利用预定签名信息加密所述程序描述信息,得到加密校验信息,所述预定签名信息包括所述第一签名信息及所述第二签名信息中一种;信息上传单元,用于将所述加密校验信息上传至所述服务器。
在本申请的一些实施例中,所述目标校验信息包括所述应用程序的目标签名信息及目标程序描述信息;所述第二校验模块740,包括:解密校验单元,用于通过所述服务器中的所述目标签名信息对所述加密校验信息进行解密校验,以在解密校验通过时,解密出所述程序描述信息;内容校验单元,用于利用所述目标程序描述信息,对解密出的所述程序描述信息进行一致性校验,得到所述校验结果。
在本申请的一些实施例中,所述第一获取模块710,包括:动态库加载单元,用于加载动态库文件,所述动态库文件中包括二进制证书获取逻辑;证书获取逻辑执行单元,用于执行所述二进制证书获取逻辑,以在原生层基于反射方式通过所述目标系统的应用程序服务层中的证书获取接口,获取所述应用程序的第一签名信息。
在本申请的一些实施例中,所述动态库文件中还包括所述应用程序的特定程序逻辑;所述动态库加载单元,用于:响应于所述特定程序逻辑的触发指令,加载所述动态库文件;所述装置还包括控制模块,用于根据所述校验结果确定所述应用程序中的所述特定程序逻辑的运行状态。
在本申请的一些实施例中,所述动态库文件中还包括二进制证书比较逻辑;所述第一校验模块730,包括:比较逻辑执行单元,用于执行所述二进制证书比较逻辑,以在原生层对所述第一签名信息与所述第二签名信息进行比较验证,得到比较验证结果;第一检验单元,用于当所述比较验证结果指示所述第一签名信息与所述第二签名信息一致时,将所述程序描述信息上传至服务器。
在本申请的一些实施例中,所述动态库文件中还包括二进制资源解析逻辑;所述第二获取模块720,包括:解析逻辑执行单元,用于执行所述二进制资源解析逻辑,以获取所述应用程序对应的存储地址;权限配置单元,用于从所述存储地址中获取所述应用程序对应的安装资源文件,并将所述安装资源文件保存至具有解析权限的目标位置;文件解析单元,用于在所述目标位置解析所述安装资源文件,得到所述应用程序对应的第二签名信息及程序描述信息。
在本申请的一些实施例中,所述第二获取模块720,还包括:重命名单元,用于对所述安装资源文件重命名处理,得到重命名后的安装资源文件;所述文件解析单元,用于在所述目标位置解析所述重命名后的安装资源文件。
在本申请的一些实施例中,所述装置还包括:目标版本文件获取模块,用于获取所述应用程序的开发者版本对应的程序文件;反编译提取模块,用于将所述开发者版本对应的程序文件上传至所述服务器,以通过对所述开发者版本对应的程序文件进行反编译,提取所述应用程序对应的目标签名信息及目标程序描述信息;校验信息保存单元,用于在所述服务器中,将所述目标签名信息及所述目标程序描述信息作为所述目标校验信息进行保存。
以这种方式,基于应用程序监控装置700,实现在应用程序启动时,通过从目标系统中获取第一签名信息以及从安装资源文件中第二签名信息及程序描述信息,可以基于第一签名信息与第二签名信息是否一致,在本地对应用程序的签名信息是否异常进行本地校验,避免了把正确签名信息硬编码到应用程序中的校验监控时容易被黑客绕过的问题,进一步的,当第一签名信息与第二签名信息一致时,将程序描述信息上传至服务器进行程序描述信息的校验,通过程序描述信息的进一步校验,避免把从目标系统中获取到的第一签名信息当成正确的签名证书校验监控方式,避免黑客对于第一签名信息的篡改,进而通过本地校验加上服务器的进一步校验,确保黑客难以绕过应用程序的校验监控,有效提升应用程序的监控可靠性。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,本申请实施例还提供一种电子设备,该电子设备可以为终端或者服务器,如图13所示,其示出了本申请实施例所涉及的电子设备的结构示意图,具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器801、一个或一个以上计算机可读存储介质的存储器802、电源803和输入单元804等部件。本领域技术人员可以理解,图13中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器801是该电子设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器802内的软件程序和/或模块,以及调用存储在存储器802内的数据,执行计算机设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器801可包括一个或多个处理核心;优选的,处理器801可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户页面和应用程序等,调制解调处理器主要处理无线通讯。可以理解的是,上述调制解调处理器也可以不集成到处理器801中。
存储器802可用于存储软件程序以及模块,处理器801通过运行存储在存储器802的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器802可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器802还可以包括存储器控制器,以提供处理器801对存储器802的访问。
电子设备还包括给各个部件供电的电源803,优选的,电源803可以通过电源管理系统与处理器801逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源803还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元804,该输入单元804可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器801会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器802中,并由处理器801来运行存储在存储器802中的应用程序,从而实现各种功能,如下:
当应用程序在目标系统中启动时,从所述目标系统中获取所述应用程序的第一签名信息;从所述应用程序的安装资源文件中,获取所述应用程序对应的第二签名信息及程序描述信息;当所述第一签名信息与所述第二签名信息一致时,将所述程序描述信息上传至服务器;通过所述服务器中的目标校验信息对所述程序描述信息进行校验,得到校验结果,所述校验结果用于确定所述应用程序是否存在风险。
一种实施例中,将所述程序描述信息上传至服务器时,处理器801可以执行:利用预定签名信息加密所述程序描述信息,得到加密校验信息,所述预定签名信息包括所述第一签名信息及所述第二签名信息中一种;将所述加密校验信息上传至所述服务器。
一种实施例中,所述目标校验信息包括所述应用程序的目标签名信息及目标程序描述信息;通过所述服务器中的目标校验信息对所述程序描述信息进行校验,得到校验结果时,处理器801可以执行:通过所述服务器中的所述目标签名信息对所述加密校验信息进行解密校验,以在解密校验通过时,解密出所述程序描述信息;利用所述目标程序描述信息,对解密出的所述程序描述信息进行一致性校验,得到所述校验结果。
一种实施例中,从所述目标系统中获取所述应用程序的第一签名信息时,处理器801可以执行:加载动态库文件,所述动态库文件中包括二进制证书获取逻辑;执行所述二进制证书获取逻辑,以在原生层基于反射方式通过所述目标系统的应用程序服务层中的证书获取接口,获取所述应用程序的第一签名信息。
一种实施例中,所述动态库文件中还包括所述应用程序的特定程序逻辑;加载动态库文件时,处理器801可以:响应于所述特定程序逻辑的触发指令,加载所述动态库文件;通过所述服务器中的目标校验信息对所述程序描述信息进行校验,得到校验结果之后,处理器801可以执行:根据所述校验结果确定所述应用程序中的所述特定程序逻辑的运行状态。
一种实施例中,所述动态库文件中还包括二进制证书比较逻辑;当所述第一签名信息与所述第二签名信息一致,将所述程序描述信息上传至服务器时,处理器801可以:执行所述二进制证书比较逻辑,以在原生层对所述第一签名信息与所述第二签名信息进行比较验证,得到比较验证结果;当所述比较验证结果指示所述第一签名信息与所述第二签名信息一致时,将所述程序描述信息上传至服务器。
一种实施例中,所述动态库文件中还包括二进制资源解析逻辑;从所述应用程序的安装资源文件中,获取所述应用程序对应的第二签名信息及程序描述信息时,处理器801可以:执行所述二进制资源解析逻辑,以通过获取所述应用程序对应的存储地址;从所述存储地址中获取所述应用程序对应的安装资源文件,并将所述安装资源文件保存至具有解析权限的目标位置;在所述目标位置解析所述安装资源文件,得到所述应用程序对应的第二签名信息及程序描述信息。
一种实施例中,将所述安装资源文件保存至具有解析权限的目标位置之后,处理器801可以执行:对所述安装资源文件重命名处理,得到重命名后的安装资源文件;在所述目标位置解析所述安装资源文件时,处理器801可以执行:在所述目标位置解析所述重命名后的安装资源文件。
一种实施例中,处理器801可以执行:获取所述应用程序的开发者版本对应的程序文件;将所述开发者版本对应的程序文件上传至所述服务器,以通过对所述开发者版本对应的程序文件进行反编译,提取所述应用程序对应的目标签名信息及目标程序描述信息;在所述服务器中,将所述目标签名信息及所述目标程序描述信息作为所述目标校验信息进行保存。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例还提供一种存储介质,其中存储有计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种方法中的步骤。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种方法中的步骤,因此,可以实现本申请实施例所提供的方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请上述实施例中各种可选实现方式中提供的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的实施例,而可以在不脱离其范围的情况下进行各种修改和改变。
Claims (8)
1.一种应用程序监控方法,其特征在于,包括:
当应用程序在目标系统中启动时,响应于所述应用程序中特定程序逻辑的触发,强制加载包括有所述特定程序逻辑的动态库文件,以强制执行所述动态库文件中的二进制证书获取逻辑,在原生层基于反射方式从所述目标系统中获取所述应用程序的第一签名信息,所述特定程序逻辑是所述应用程序中的核心程序逻辑;
从所述应用程序的安装资源文件中,获取所述应用程序对应的第二签名信息及程序描述信息,所述程序描述信息中包括第一摘要信息及第一版本信息,所述第一摘要信息通过对所述应用程序的程序文件经信息摘要算法计算处理得到;
当所述第一签名信息与所述第二签名信息一致时,利用所述第一签名信息及所述第二签名信息中一种加密所述程序描述信息,得到加密校验信息,并将所述加密校验信息上传至服务器,所述服务器中保存有所述应用程序对应的目标签名信息及目标程序描述信息,所述目标程序描述信息中包括第二摘要信息及第二版本信息,所述第二摘要信息通过对所述应用程序的开发者版本对应的程序文件利用信息摘要算法计算处理得到,所述程序文件为安装资源文件或者安装资源文件中的核心文件,所述目标签名信息为所述应用程序的开发者版本对应的签名信息;
通过所述服务器中的所述目标签名信息对所述加密校验信息进行解密校验,以在所述目标签名信息与所述第一签名信息及所述第二签名信息中一种一致时,解密出所述程序描述信息,并通过所述服务器利用所述目标程序描述信息,对解密出的所述程序描述信息进行一致性校验,得到校验结果,包括:利用所述第二摘要信息对所述第一摘要信息进行一致性校验,并利用所述第二版本信息对所述第一版本信息进行一致性校验,得到所述校验结果,所述校验结果用于确定所述应用程序是否存在风险;
根据所述校验结果确定所述应用程序中的所述特定程序逻辑的运行状态,以确定是否运行所述特定程序逻辑。
2.根据权利要求1所述的方法,其特征在于,所述动态库文件中还包括二进制证书比较逻辑;
所述当所述第一签名信息与所述第二签名信息一致时,利用所述第一签名信息及所述第二签名信息中一种加密所述程序描述信息,得到加密校验信息,并将所述加密校验信息上传至服务器,包括:
执行所述二进制证书比较逻辑,以在原生层对所述第一签名信息与所述第二签名信息进行比较验证,得到比较验证结果;
当所述比较验证结果指示所述第一签名信息与所述第二签名信息一致时,利用所述第一签名信息及所述第二签名信息中一种加密所述程序描述信息,得到加密校验信息,并将所述加密校验信息上传至服务器。
3.根据权利要求1所述的方法,其特征在于,所述动态库文件中还包括二进制资源解析逻辑;
所述从所述应用程序的安装资源文件中,获取所述应用程序对应的第二签名信息及程序描述信息,包括:
执行所述二进制资源解析逻辑,以获取所述应用程序对应的存储地址;
基于所述存储地址,获取所述应用程序对应的安装资源文件,并将所述安装资源文件保存至具有解析权限的目标位置;
在所述目标位置解析所述安装资源文件,得到所述应用程序对应的第二签名信息及程序描述信息。
4.根据权利要求3所述的方法,其特征在于,所述将所述安装资源文件保存至具有解析权限的目标位置之后,所述方法还包括:
对所述安装资源文件重命名处理,得到重命名后的安装资源文件;
所述在所述目标位置解析所述安装资源文件,包括:
在所述目标位置解析所述重命名后的安装资源文件。
5.根据权利要求1所述的方法,其特征在于,在所述当应用程序在目标系统中启动时,响应于所述应用程序中特定程序逻辑的触发,加载包括有所述特定程序逻辑的动态库文件之前,所述方法还包括:
获取所述应用程序的开发者版本对应的程序文件;
将所述开发者版本对应的程序文件上传至所述服务器,以通过对所述开发者版本对应的程序文件进行反编译,提取所述应用程序对应的目标签名信息及目标程序描述信息;
在所述服务器中,将所述目标签名信息及所述目标程序描述信息作为目标校验信息进行保存。
6.一种应用程序监控装置,其特征在于,包括:
第一获取模块,用于当应用程序在目标系统中启动时,响应于所述应用程序中特定程序逻辑的触发,强制加载包括有所述特定程序逻辑的动态库文件,以强制执行所述动态库文件中的二进制证书获取逻辑,在原生层基于反射方式从所述目标系统中获取所述应用程序的第一签名信息,所述特定程序逻辑是所述应用程序中的核心程序逻辑;
第二获取模块,用于从所述应用程序的安装资源文件中,获取所述应用程序对应的第二签名信息及程序描述信息,所述程序描述信息中包括第一摘要信息及第一版本信息,所述第一摘要信息通过对所述应用程序的程序文件经信息摘要算法计算处理得到;
第一校验模块,用于当所述第一签名信息与所述第二签名信息一致时,利用所述第一签名信息及所述第二签名信息中一种加密所述程序描述信息,得到加密校验信息,并将所述加密校验信息上传至服务器,所述服务器中保存有所述应用程序对应的目标签名信息及目标程序描述信息,所述目标程序描述信息中包括第二摘要信息及第二版本信息,所述第二摘要信息通过对所述应用程序的开发者版本对应的程序文件利用信息摘要算法计算处理得到,所述程序文件为安装资源文件或者安装资源文件中的核心文件,所述目标签名信息为所述应用程序的开发者版本对应的签名信息;
第二校验模块,用于通过所述服务器中的所述目标签名信息对所述加密校验信息进行解密校验,以在所述目标签名信息与所述第一签名信息及所述第二签名信息中一种一致时,解密出所述程序描述信息,并通过所述服务器利用所述目标程序描述信息,对解密出的所述程序描述信息进行一致性校验,得到校验结果,包括:利用所述第二摘要信息对所述第一摘要信息进行一致性校验,并利用所述第二版本信息对所述第一版本信息进行一致性校验,得到所述校验结果,所述校验结果用于确定所述应用程序是否存在风险;
控制模块,用于根据所述校验结果确定所述应用程序中的所述特定程序逻辑的运行状态,以确定是否运行所述特定程序逻辑。
7.一种电子设备,其特征在于,包括:存储器,存储有计算机可读指令;处理器,读取存储器存储的计算机可读指令,以执行权利要求1-5任一项所述的方法。
8.一种存储介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110440221.0A CN112861191B (zh) | 2021-04-23 | 2021-04-23 | 一种应用程序监控方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110440221.0A CN112861191B (zh) | 2021-04-23 | 2021-04-23 | 一种应用程序监控方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112861191A CN112861191A (zh) | 2021-05-28 |
CN112861191B true CN112861191B (zh) | 2023-01-10 |
Family
ID=75992836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110440221.0A Active CN112861191B (zh) | 2021-04-23 | 2021-04-23 | 一种应用程序监控方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112861191B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419769B (zh) * | 2021-06-23 | 2024-02-20 | 中国信息通信研究院 | 一种应用软件管理方法及装置 |
CN113742668A (zh) * | 2021-08-17 | 2021-12-03 | 深圳Tcl新技术有限公司 | 信息获取方法、装置、计算机设备和计算可读存储介质 |
CN113779620A (zh) * | 2021-08-19 | 2021-12-10 | 成都鲁易科技有限公司 | 程序文件的校验方法、装置、存储介质及计算机设备 |
CN113779576A (zh) * | 2021-09-09 | 2021-12-10 | 安天科技集团股份有限公司 | 一种可执行文件感染病毒的识别方法、装置及电子设备 |
CN114896621B (zh) * | 2022-07-15 | 2022-10-14 | 深圳竹云科技股份有限公司 | 应用服务的获取方法、加密方法、装置、计算机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105915342A (zh) * | 2016-07-01 | 2016-08-31 | 广州爱九游信息技术有限公司 | 一种应用程序通信处理系统、设备、装置及方法 |
KR20170044850A (ko) * | 2015-10-16 | 2017-04-26 | 심재훈 | 안드로이드 어플리케이션 동적 로딩 방법 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104683409B (zh) * | 2013-11-29 | 2019-03-01 | 华为终端(东莞)有限公司 | 终端间应用共享的方法和终端 |
CN105320535B (zh) * | 2014-08-04 | 2019-02-15 | 广州爱九游信息技术有限公司 | 一种安装包的校验方法、客户端、服务器及系统 |
CN105721542B (zh) * | 2016-01-15 | 2018-12-28 | 南京熊猫电子股份有限公司 | 一种基于网络安全监控安装智能机顶盒应用程序的方法 |
CN105956456B (zh) * | 2016-04-26 | 2019-02-19 | 南京邮电大学 | 一种对Android系统进行四重联合签名验证的实现方法 |
CN106022098A (zh) * | 2016-05-10 | 2016-10-12 | 青岛海信传媒网络技术有限公司 | 一种应用程序的签名验证方法和装置 |
CN107341085B (zh) * | 2017-06-14 | 2020-12-08 | 北京多思安全芯片科技有限公司 | 一种控制装置 |
CN107766747B (zh) * | 2017-10-31 | 2020-03-17 | 维沃移动通信有限公司 | 校验应用程序安装包完整性的方法、移动终端及服务器 |
CN108197469B (zh) * | 2017-11-28 | 2020-12-18 | 东软集团股份有限公司 | 校验应用程序的方法、装置和存储介质以及电子设备 |
-
2021
- 2021-04-23 CN CN202110440221.0A patent/CN112861191B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170044850A (ko) * | 2015-10-16 | 2017-04-26 | 심재훈 | 안드로이드 어플리케이션 동적 로딩 방법 |
CN105915342A (zh) * | 2016-07-01 | 2016-08-31 | 广州爱九游信息技术有限公司 | 一种应用程序通信处理系统、设备、装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112861191A (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112861191B (zh) | 一种应用程序监控方法及装置 | |
CN109314642B (zh) | 用区块链实施的用于安全投票和分配的计数系统和方法 | |
JP3753885B2 (ja) | 国際暗号体系のホストシステム要素 | |
JP4902636B2 (ja) | マシン属性を使用して企業環境におけるソフトウエア海賊版を防止する方法およびシステム | |
US8239967B2 (en) | Simultaneous tamper-proofing and anti-piracy protection of software | |
US7788730B2 (en) | Secure bytecode instrumentation facility | |
CN111143869B (zh) | 应用程序包处理方法、装置、电子设备及存储介质 | |
US9158902B2 (en) | Software modification for partial secure memory processing | |
JP5126447B1 (ja) | アプリケーションプログラムの実行方法 | |
CN104199654A (zh) | 开放平台的调用方法及装置 | |
US11003435B2 (en) | Manifest trialing techniques | |
KR20190127124A (ko) | 블록체인을 이용한 소스 코드 및 관련 데이터의 무결성 검증 방법 및 장치 | |
CN103544434A (zh) | 用于确保应用程序安全运行的方法和终端 | |
CN112101949A (zh) | 安全的服务请求处理方法及装置 | |
CN111191240B (zh) | 互联网电子证据的采集方法、装置及设备 | |
CN114048506A (zh) | 应用控制方法、装置、设备以及存储介质 | |
Zhao et al. | Feasibility of deploying biometric encryption in mobile cloud computing | |
Bahaa-Eldin et al. | A comprehensive software copy protection and digital rights management platform | |
CN106648770B (zh) | 一种应用程序安装包的生成方法、加载方法及装置 | |
CN110572371B (zh) | 基于html5本地存储机制的身份唯一性校验控制方法 | |
CN109800596B (zh) | 一种个人数据安全管理系统 | |
CN112732676A (zh) | 基于区块链的数据迁移方法、装置、设备及存储介质 | |
CN117633900B (zh) | 基于分布式网络的文件路径核验方法和装置、设备和介质 | |
US11687656B2 (en) | Secure application development using distributed ledgers | |
KR102534012B1 (ko) | 컨텐츠 제공자의 보안등급을 인증하는 시스템 및 그 방법 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40044561 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |