CN110535724B - 应用程序网络读写限制方法、装置、电子设备及存储介质 - Google Patents
应用程序网络读写限制方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110535724B CN110535724B CN201910803137.3A CN201910803137A CN110535724B CN 110535724 B CN110535724 B CN 110535724B CN 201910803137 A CN201910803137 A CN 201910803137A CN 110535724 B CN110535724 B CN 110535724B
- Authority
- CN
- China
- Prior art keywords
- write
- address
- application program
- preset
- network read
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/686—Types of network addresses using dual-stack hosts, e.g. in Internet protocol version 4 [IPv4]/Internet protocol version 6 [IPv6] networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Telephonic Communication Services (AREA)
Abstract
一种应用程序网络读写限制方法,所述方法包括:通过无权限安卓过程链接表钩子技术,将应用程序的默认网络读写接口地址替换为预设网络读写接口地址,将应用程序的默认多路复用接口地址替换为预设多路复用接口地址;通过预设网络读写接口地址对应的网络读写接口,对应用程序进行流量统计,获得应用程序的流量信息;根据流量信息以及预设的流量阈值,确定需要进行网络读写限制的目标套接字;根据流量信息,通过网络读写接口以及预设多路复用接口地址对应的多路复用接口,对目标套接字的网络读写进行限制。本发明还提供一种应用程序网络读写限制装置、电子设备以及存储介质。本发明能在没有系统管理权限的情况下对应用程序的流量进行监控。
Description
技术领域
本发明涉及智能终端技术领域,尤其涉及一种应用程序网络读写限制方法、装置、电子设备及存储介质。
背景技术
目前,可以使用安卓系统提供的工具对应用程序的流量进行监控。
但在实践中发现,使用这些安卓系统提供的工具需要系统管理权限。若安卓设备厂商不愿意提供系统管理权限,则无法对应用程序的流量进行监控。
因此,如何在没有系统管理权限的情况下对应用程序的流量进行监控是一个亟待解决的技术问题。
发明内容
鉴于以上内容,有必要提供一种应用程序网络读写限制方法、装置、电子设备及存储介质,能够在没有系统管理权限的情况下对应用程序的流量进行监控。
本发明的第一方面提供一种应用程序网络读写限制方法,所述方法包括:
当应用程序作为独立的进程运行时,通过无权限安卓过程链接表钩子技术,将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址;
通过所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息;
根据所述流量信息以及预设的流量阈值,从所述应用程序的套接字中确定需要进行网络读写限制的目标套接字;
根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制。
在一种可能的实现方式中,所述将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址包括:
将所述应用程序的可执行文件的第一默认网络读写接口地址替换为第一预设网络读写接口地址,以及将所述可执行文件的第一默认多路复用接口地址替换为第一预设多路复用接口地址;
将所述应用程序连接的动态链接库的第二默认网络读写接口地址替换为第二预设网络读写接口地址,以及将所述动态链接库的第二默认多路复用接口地址替换为第二预设多路复用接口地址。
在一种可能的实现方式中,所述通过无权限安卓过程链接表钩子技术,将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址包括:
通过无权限安卓过程链接表钩子技术,从插件管理程序中获取所述应用程序的进程标识,所述插件管理程序用于管理所述应用程序;
根据所述进程标识,确定目标文件,所述目标文件用于存储所述应用程序的可执行文件的第一内存地址和所述应用程序连接的动态链接库的第二内存地址;
从所述目标文件中获取所述第一内存地址以及所述第二内存地址;
从所述第一内存地址中,确定所述可执行文件的第一首地址,以及从所述第二内存地址中,确定所述动态链接库的第二首地址;
根据所述第一首地址以及所述第二首地址,获取所述应用程序运行时的动态链接所需信息表;
根据所述动态链接所需信息表,获取用于存储默认网络读写接口地址和默认多路复用接口地址的文件结构;
将所述文件结构存储的所述默认网络读写接口地址替换为预设网络读写接口地址,以及将所述文件结构存储的所述默认多路复用接口地址替换为预设多路复用接口地址。
在一种可能的实现方式中,所述网络读写接口包括套接字接口以及主动连接接口,所述通过所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息包括:
通过所述预设网络读写接口地址对应的网络读写接口,获取所述套接字接口调用的套接字类型参数;
根据所述套接字类型参数,判断所述套接字接口创建的套接字的类型是否为网络套接字;
若所述套接字接口创建的套接字的类型为网络套接字,获取所述主动连接接口调用的互联网协议地址参数;
若所述互联网协议地址参数与预设互联网协议地址不一致,对所述套接字的流量进行统计,获得流量信息。
在一种可能的实现方式中,所述网络读写接口还包括接收连接接口,所述方法还包括:
若所述套接字接口创建的套接字的类型为网络套接字,获取所述接收连接接口返回的文件描述符所连接的互联网协议地址;
若所述文件描述符所连接的互联网协议地址与所述预设互联网协议地址不一致,对所述套接字的流量进行统计,获得流量信息。
在一种可能的实现方式中,所述根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制包括:
通过所述网络读写接口,判断所述目标套接字是否有设置非阻塞选项;
若所述目标套接字没有设置非阻塞选项,根据所述流量信息,计算所述目标套接字的网络读写限制时间;
根据所述网络读写限制时间,将所述目标套接字对应的网络读写线程暂停;
通过所述预设多路复用接口地址对应的多路复用接口,获取所述应用程序的所有可读/可写的第一套接字;
从所述第一套接字中确定不需要进行网络读写限制的第二套接字;
将所述第二套接字返回给所述应用程序对应的进程。
在一种可能的实现方式中,所述方法还包括:
对所述应用程序的需进行流量统计的套接字的生命周期进行监听;
当监听到所述需进行流量统计的套接字被创建时,或,监听到所述需进行流量统计的套接字被销毁时,更新所有所述需进行流量统计的套接字的预设流量阈值。
本发明的第二方面提供一种应用程序网络读写限制装置,所述装置包括:
替换模块,用于当应用程序作为独立的进程运行时,通过无权限安卓过程链接表钩子技术,将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址;
统计模块,用于通过所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息;
确定模块,用于根据所述流量信息以及预设的流量阈值,从所述应用程序的套接字中确定需要进行网络读写限制的目标套接字;
限制模块,用于根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制。
本发明的第三方面提供一种电子设备,所述电子设备包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现所述的应用程序网络读写限制方法。
本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述的应用程序网络读写限制方法。
由以上技术方案,本发明中,当应用程序作为独立的进程运行时,可以通过无权限安卓过程链接表钩子技术,将所述应用程序的可执行文件的默认网络读写接口地址替换为预设网络读写接口地址,将所述可执行文件的默认多路复用接口地址替换为预设多路复用接口地址,将所述应用程序连接的动态链接库的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述动态链接库的默认多路复用接口地址替换为预设多路复用接口地址;通过调用所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息;根据所述流量信息以及预设的流量阈值,从所述应用程序的套接字中确定需要进行网络读写限制的目标套接字;根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制。可见,本发明中,可以通过无权限安卓过程链接表钩子技术,将应用程序的默认网络读写接口地址以及默认多路复用接口地址分别替换为预设网络读写接口地址以及预设多路复用接口地址,即应用程序在运行时会调用预设网络读写接口地址对应的网络读写接口以及预设多路复用接口地址对应的多路复用接口,从而可以在没有系统管理权限的情况下通过网络读写接口以及多路复用接口,获取应用程序的流量信息并对网络读写进行限制。实现了在没有系统管理权限的情况下对应用程序的流量进行监控。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明公开的一种应用程序网络读写限制方法的较佳实施例的流程图。
图2是本发明公开的一种应用程序网络读写限制装置的较佳实施例的功能模块图。
图3是本发明实现应用程序网络读写限制方法的较佳实施例的电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例的应用程序网络读写限制方法应用在电子设备中,也可以应用在电子设备和通过网络与所述电子设备进行连接的服务器所构成的硬件环境中,由服务器和电子设备共同执行。网络包括但不限于:广域网、城域网或局域网。
其中,服务器可以是指能对网络中其它设备(如电子设备)提供服务的计算机系统。如果一个个人电脑能够对外提供文件传输协议(File Transfer Protocol,简称FTP)服务,也可以叫服务器。从狭义范围上讲,服务器专指某些高性能计算机,能通过网络,对外提供服务,其相对于普通的个人电脑来说,稳定性、安全性、性能等方面都要求更高,因此在CPU、芯片组、内存、磁盘系统、网络等硬件和普通的个人电脑有所不同。
所述电子设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述电子设备还可包括网络设备和/或用户设备。其中,所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量主机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。所述用户设备包括但不限于任何一种可与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理PDA、游戏机、交互式网络电视IPTV、智能式穿戴式设备等。其中,所述用户设备及网络设备所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络VPN等。
请参见图1,图1是本发明公开的一种应用程序网络读写限制方法的较佳实施例的流程图。其中,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
S11、当应用程序作为独立的进程运行时,电子设备通过无权限安卓过程链接表钩子技术,将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址。
其中,所述应用程序可以是一个应用的一部分,一个应用可以对应多个应用程序。
其中,可以通过接口地址调用对应的接口,所述默认网络读写接口地址用于调用系统默认的网络读写接口,所述默认多路复用接口地址用于调用系统默认的多路复用地址,所述预设网络读写接口地址用于调用预先设置的网络读写接口,所述预设多路复用接口地址用于调用预先设置的多路复用接口。
具体的,所述将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址包括:
将所述应用程序的可执行文件的第一默认网络读写接口地址替换为第一预设网络读写接口地址,以及将所述可执行文件的第一默认多路复用接口地址替换为第一预设多路复用接口地址;
将所述应用程序连接的动态链接库的第二默认网络读写接口地址替换为第二预设网络读写接口地址,以及将所述动态链接库的第二默认多路复用接口地址替换为第二预设多路复用接口地址。
在该可选的实施方式中,所述应用程序可以通过自身的可执行文件直接调用系统默认的网络读写接口以及多路复用接口,也可以通过连接动态链接库去调用系统默认的网络读写接口以及多路复用接口。因此,需要将可执行文件的第一默认网络读写接口地址、第一默认多路复用接口地址分别替换为第一预设网络读写接口地址、第一预设多路复用接口地址,将应用程序连接的动态链接库的第二默认网络读写接口地址、第二默认多路复用接口地址分别替换为第二预设网络读写接口地址、第二预设多路复用接口地址。可以确保应用程序进行网络读写时调用的是预设的网络读写接口以及预设的多路复用接口。
具体的,所述通过无权限安卓过程链接表钩子技术,将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址包括:
通过无权限安卓过程链接表钩子技术,从插件管理程序中获取所述应用程序的进程标识,所述插件管理程序用于管理所述应用程序;
根据所述进程标识,确定目标文件,所述目标文件用于存储所述应用程序的可执行文件的第一内存地址和所述应用程序连接的动态链接库的第二内存地址;
从所述目标文件中获取所述第一内存地址以及所述第二内存地址;
从所述第一内存地址中,确定所述可执行文件的第一首地址,以及从所述第二内存地址中,确定所述动态链接库的第二首地址;
根据所述第一首地址以及所述第二首地址,获取所述应用程序运行时的动态链接所需信息表;
根据所述动态链接所需信息表,获取用于存储默认网络读写接口地址和默认多路复用接口地址的文件结构;
将所述文件结构存储的所述默认网络读写接口地址替换为预设网络读写接口地址,以及将所述文件结构存储的所述默认多路复用接口地址替换为预设多路复用接口地址。
其中,所述目标文件可以是/proc/[pid]/maps文件,用于存储所述应用程序的可执行文件的第一内存地址和所述应用程序连接的动态链接库的第二内存地址。
在该可选的实施方式中,安卓(Android)应用的所有进程在启动时会启动Applicaton类,本实施例的无权限安卓过程链接表钩子技术(无root Android PLT Hook技术)方案可以在Application类中执行,当应用程序作为独立的进程运行时,通过遍历/proc/[pid]/maps文件,通过正则匹配的方式获取到可执行文件的第一内存地址和应用程序连接的动态链接库的第二内存地址,其中,第一内存地址可以有多个,第二内存地址可以有多个,数值最小的第一内存地址为执行文件在内存的首地址,数值最小的第二内存地址为动态链接库在内存的首地址,通过这两个首地址,可以找到应用程序运行时的动态链接所需信息表(.dynamic section),从.dynamic section文件结构中找到.rel.dyn以及.rel.plt section两个文件结构,后两个文件结构中保存着应用程序的默认网络读写接口地址和默认多路复用接口地址,将后两个文件结构中保存的默认网络读写接口地址和默认多路复用接口地址分别替换为预设网络读写接口地址和预设多路复用接口地址。
S12、电子设备通过所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息。
其中,所述预设网络读写接口地址对应的网络读写接口是对系统原本的网络读写接口的一层封装,在这层封装中加入了流量统计和网络读写限制的相关代码。
本发明实施例中,应用程序在进行网络读写时,会调用预设网络读写接口地址对应的网络读写接口,即会调用流量统计相关代码,对应用程序进行流量统计,获得应用程序的流量信息。
作为一种可选的实施方式,所述网络读写接口包括套接字接口以及主动连接接口,所述通过所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息包括:
通过所述预设网络读写接口地址对应的网络读写接口,获取所述套接字接口调用的套接字类型参数;
根据所述套接字类型参数,判断所述套接字接口创建的套接字的类型是否为网络套接字;
若所述套接字接口创建的套接字的类型为网络套接字,获取所述主动连接接口调用的互联网协议地址参数;
若所述互联网协议地址参数与预设互联网协议地址不一致,对所述套接字的流量进行统计,获得流量信息。
其中,所述套接字(socket)由操作系统提供给应用程序使用,用来标识一个网络连接或端点。
其中,所述套接字的类型包括但不限于网络套接字以及内核套接字。
其中,所述预设互联网协议(IP)地址可以包括互联网通信协议第四版(IPv4)地址以及互联网通信协议第六版(IPv6)协议。
在该可选的实施方式中,可以通过预设网络读写接口地址调用预先封装好的网络读写接口,该网络读写接口中封装有用于流量统计的相关代码,可以通过获取套接字接口调用的套接字类型参数,确定套接字的类型,若该套接字的类型为网络套接字,网络套接字可能是用于和其它应用程序进行通信,因此需进一步判断该套接字的连接方式是否为非本地连接,若主动连接接口调用的互联网协议地址参数与预设互联网协议地址一致,确定该套接字的连接方式为本地连接,或,若主动连接接口调用的互联网协议地址参数与预设互联网协议地址不一致,确定该套接字的连接方式为非本地连接,则需要对该套接字进行流量统计,以获取应用程序的流量信息。
作为一种可选的实施方式,所述网络读写接口还包括接收连接接口,所述方法还包括:
若所述套接字接口创建的套接字的类型为网络套接字,获取所述接收连接接口返回的文件描述符所连接的互联网协议地址;
若所述文件描述符所连接的互联网协议地址与所述预设互联网协议地址不一致,对所述套接字的流量进行统计,获得流量信息。
在该可选的实施方式中,可以获取接收连接接口(accept())返回的文件描述符,并根据该文件描述符所连接的地址,判断是否需要对该套接字进行流量统计,若该文件描述符所连接的地址与预设互联网协议地址一致,确定该套接字用于本地连接,不需要进行流量统计,或,若该文件描述符所连接的地址与预设互联网协议地址不一致,确定该套接字用于非本地连接,需要对该套接字进行流量统计,从而获取应用程序的流量信息。
S13、电子设备根据所述流量信息以及预设的流量阈值,从所述应用程序的套接字中确定需要进行网络读写限制的目标套接字。
其中,所述预设的流量阈值包括预设读速度阈值以及预设写速度阈值。
在该可选的实施方式中,可以根据所述流量信息,确定所述第一套接字在预设时间范围内读的第一字节数以及写的第二字节数;并计算出所述第一套接字在所述预设时间范围内字节读速度以及字节写速度,判断所述字节读速度是否大于所述预设读速度阈值,以及判断所述字节写速度是否大于所述预设写速度阈值;若所述字节读速度大于所述预设读速度阈值,或,所述字节写速度大于所述预设写速度阈值,将所述第一套接字确定为需要进行网络读写限制的目标套接字。
S14、电子设备根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制。
其中,所述预设多路复用接口地址对应的多路复用接口是对系统默认的多路复用接口的一层封装,在这层封装中加入了相关代码,用于确保网络读写机制的正常运行。
具体的,所述根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制包括:
通过所述网络读写接口,判断所述目标套接字是否有设置非阻塞选项;
若所述目标套接字没有设置非阻塞选项,根据所述流量信息,计算所述目标套接字的网络读写限制时间;
根据所述网络读写限制时间,将所述目标套接字对应的网络读写线程暂停;
通过所述预设多路复用接口地址对应的多路复用接口,获取所述应用程序的所有可读/可写的第一套接字;
从所述第一套接字中确定不需要进行网络读写限制的第二套接字;
将所述第二套接字返回给所述应用程序对应的进程。
在该可选的实施方式中,可以先判断目标套接字是否有设置非阻塞选项,若目标套接字设置有非阻塞选项,则目标套接字的网络读写是非阻塞的,若要阻塞目标套接字的网络读写操作,可以在该网络读写操作没有完成就返回EAGAIN错误,用于提示在下次循环再尝试该网络读写操作。若目标套接字没有设置非阻塞选项,根据所述流量信息,计算所述目标套接字的网络读写限制时间,然后,根据网络读写限制时间,将调用sleep()接口将目标套接字进行网络读写的线程暂停,延迟网络读写操作,使得延迟之后的网络读写速不超过预设流量阈值。即超出预设流量阈值的套接字的网络读写需要延迟一段时间后再执行,而未超出预设流量阈值的套接字的网络读写可以立即执行。因为在使用事件循环机制的应用程序中,进行网络读写的线程(EventLoop)一般是一个使用多路复用接口查询或等待套接字可读/可写,然后对套接字进行读/写的循环,本发明实施例中引入了EAGAIN机制,若EventLoop第1步如果使用系统自带的多路复用接口查询到套接字可读或可写,第2步使用经过封装的预设的网络读写接口进行网路读写时又立即返回EAGAIN错误,会引起EventLoop线程不断循环与空转,影响EventLoop的效率。因此需要通过封装的预设的多路复用接口去查询可读/可写的第一套接字,并从中确定不需要进行网络读写延迟的第二套接字,将第二套接字返回给进程,使得进程进行网络读/写时不会引起EventLoop线程不断循环与空转。
可选的,若目标套接字是因为字节读速度大于预设读速度阈值,而需要进行网络读写限制,则可以获取目标套接字在当前待读的字节数,算出当前待读的字节数与预设时间范围内读的第一字节数的和,计算和与预设读速度阈值的商,最后将商减去预设时间范围的时间长度,得到网络读写限制时间。可选的,若目标套接字是因为字节写速度大于预设写速度阈值,而需要进行网络读写限制,则可以获取目标套接字在当前待写的字节数,算出当前待写的字节数与预设时间范围内写的第二字节数的和,计算和与预设写速度阈值的商,最后将商减去预设时间范围的时间长度,得到网络读写限制时间。
作为一种可选的实施方式,所述方法还包括:
对所述应用程序的需进行流量统计的套接字的生命周期进行监听;
当监听到所述需进行流量统计的套接字被创建时,或,监听到所述需进行流量统计的套接字被销毁时,更新所有所述需进行流量统计的套接字的预设流量阈值。
其中,所述套接字的生命周期包括套接字的创建、销毁、连接以及重连过程。
在该可选的实施方式中,可以对应用程序的需进行流量统计的套接字的生命周期进行监听,当一个需进行流量统计的套接字被创建或者被销毁时,需要重新确定每个需进行流量统计的套接字的预设流量阈值,将总的流量阈值平均分配给每个需进行流量统计的套接字。
在图1所描述的方法流程中,本发明中,当应用程序作为独立的进程运行时,可以通过无权限安卓过程链接表钩子技术,将所述应用程序的可执行文件的默认网络读写接口地址替换为预设网络读写接口地址,将所述可执行文件的默认多路复用接口地址替换为预设多路复用接口地址,将所述应用程序连接的动态链接库的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述动态链接库的默认多路复用接口地址替换为预设多路复用接口地址;通过调用所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息;根据所述流量信息以及预设的流量阈值,从所述应用程序的套接字中确定需要进行网络读写限制的目标套接字;根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制。可见,可以通过无权限安卓过程链接表钩子技术,将应用程序的默认网络读写接口地址以及默认多路复用接口地址分别替换为预设网络读写接口地址以及预设多路复用接口地址,即应用程序在运行时会调用预设网络读写接口地址对应的网络读写接口以及预设多路复用接口地址对应的多路复用接口,从而可以在没有系统管理权限的情况下通过网络读写接口以及多路复用接口,获取应用程序的流量信息并对网络读写进行限制。实现了在没有系统管理权限的情况下对应用程序的流量进行监控。
以上所述,仅是本发明的具体实施方式,但本发明的保护范围并不局限于此,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。
请参见图2,图2是本发明公开的一种应用程序网络读写限制装置的较佳实施例的功能模块图。
在一些实施例中,所述应用程序网络读写限制装置运行于电子设备中。所述应用程序网络读写限制装置可以包括多个由程序代码段所组成的功能模块。所述应用程序网络读写限制装置中的各个程序段的程序代码可以存储于存储器中,并由至少一个处理器所执行,以执行图1所描述的应用程序网络读写限制方法中的部分或全部步骤,具体可以参照图1所述方法中的相关描述,在此不再赘述。
本实施例中,所述应用程序网络读写限制装置根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:替换模块201、统计模块202、确定模块203及限制模块204。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在一些实施例中,关于各模块的功能将在后续的实施例中详述。
替换模块201,用于当应用程序作为独立的进程运行时,通过无权限安卓过程链接表钩子技术,将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址;
统计模块202,用于通过所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息;
确定模块203,用于根据所述流量信息以及预设的流量阈值,从所述应用程序的套接字中确定需要进行网络读写限制的目标套接字;
限制模块204,用于根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制。
作为一种可选的实施方式,所述替换模块201将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址的方式具体为:
将所述应用程序的可执行文件的第一默认网络读写接口地址替换为第一预设网络读写接口地址,以及将所述可执行文件的第一默认多路复用接口地址替换为第一预设多路复用接口地址;
将所述应用程序连接的动态链接库的第二默认网络读写接口地址替换为第二预设网络读写接口地址,以及将所述动态链接库的第二默认多路复用接口地址替换为第二预设多路复用接口地址。
作为一种可选的实施方式,所述替换模块201通过无权限安卓过程链接表钩子技术,将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址的方式具体为:
通过无权限安卓过程链接表钩子技术,从插件管理程序中获取所述应用程序的进程标识,所述插件管理程序用于管理所述应用程序;
根据所述进程标识,确定目标文件,所述目标文件用于存储所述应用程序的可执行文件的第一内存地址和所述应用程序连接的动态链接库的第二内存地址;
从所述目标文件中获取所述第一内存地址以及所述第二内存地址;
从所述第一内存地址中,确定所述可执行文件的第一首地址,以及从所述第二内存地址中,确定所述动态链接库的第二首地址;
根据所述第一首地址以及所述第二首地址,获取所述应用程序运行时的动态链接所需信息表;
根据所述动态链接所需信息表,获取用于存储默认网络读写接口地址和默认多路复用接口地址的文件结构;
将所述文件结构存储的所述默认网络读写接口地址替换为预设网络读写接口地址,以及将所述文件结构存储的所述默认多路复用接口地址替换为预设多路复用接口地址。
作为一种可选的实施方式,所述网络读写接口包括套接字接口以及主动连接接口,所述统计模块202通过所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息的方式具体为:
通过所述预设网络读写接口地址对应的网络读写接口,获取所述套接字接口调用的套接字类型参数;
根据所述套接字类型参数,判断所述套接字接口创建的套接字的类型是否为网络套接字;
若所述套接字接口创建的套接字的类型为网络套接字,获取所述主动连接接口调用的互联网协议地址参数;
若所述互联网协议地址参数与预设互联网协议地址不一致,对所述套接字的流量进行统计,获得流量信息。
作为一种可选的实施方式,所述网络读写接口还包括接收连接接口,所述应用程序网络读写限制装置还可以包括:
获取模块,用于若所述套接字接口创建的套接字的类型为网络套接字,获取所述接收连接接口返回的文件描述符所连接的互联网协议地址;
所述统计模块202,还用于若所述文件描述符所连接的互联网协议地址与所述预设互联网协议地址不一致,对所述套接字的流量进行统计,获得流量信息。
作为一种可选的实施方式,所述限制模块204根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制的方式具体为:
通过所述网络读写接口,判断所述目标套接字是否有设置非阻塞选项;
若所述目标套接字没有设置非阻塞选项,根据所述流量信息,计算所述目标套接字的网络读写限制时间;
根据所述网络读写限制时间,将所述目标套接字对应的网络读写线程暂停;
通过所述预设多路复用接口地址对应的多路复用接口,获取所述应用程序的所有可读/可写的第一套接字;
从所述第一套接字中确定不需要进行网络读写限制的第二套接字;
将所述第二套接字返回给所述应用程序对应的进程。
作为一种可选的实施方式,所述应用程序网络读写限制装置还可以包括:
监听模块,用于对所述应用程序的需进行流量统计的套接字的生命周期进行监听;
更新模块,用于当监听到所述需进行流量统计的套接字被创建时,或,监听到所述需进行流量统计的套接字被销毁时,更新所有所述需进行流量统计的套接字的预设流量阈值。
在图2所描述的应用程序网络读写限制装置中,可以当应用程序作为独立的进程运行时,通过无权限安卓过程链接表钩子技术,将所述应用程序的可执行文件的默认网络读写接口地址替换为预设网络读写接口地址,将所述可执行文件的默认多路复用接口地址替换为预设多路复用接口地址,将所述应用程序连接的动态链接库的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述动态链接库的默认多路复用接口地址替换为预设多路复用接口地址;通过调用所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息;根据所述流量信息以及预设的流量阈值,从所述应用程序的套接字中确定需要进行网络读写限制的目标套接字;根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制。可见,可以通过无权限安卓过程链接表钩子技术,将应用程序的可执行文件的默认网络读写接口地址以及默认多路复用接口地址分别替换为预设网络读写接口地址以及预设多路复用接口地址,将应用程序连接的动态链接库的默认网络读写接口地址以及默认多路复用接口地址分别替换为预设网络读写接口地址以及预设多路复用接口地址,即应用程序在运行时会调用预设网络读写接口地址对应的网络读写接口以及预设多路复用接口地址对应的多路复用接口,从而可以在没有系统管理权限的情况下通过网络读写接口以及多路复用接口,获取应用程序的流量信息并对网络读写进行限制。实现了在没有系统管理权限的情况下对应用程序的流量进行监控。
如图3所示,图3是本发明实现应用程序网络读写限制方法的较佳实施例的电子设备的结构示意图。所述电子设备3包括存储器31、至少一个处理器32、存储在所述存储器31中并可在所述至少一个处理器32上运行的计算机程序33及至少一条通讯总线34。
本领域技术人员可以理解,图3所示的示意图仅仅是所述电子设备3的示例,并不构成对所述电子设备3的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备3还可以包括输入输出设备、网络接入设备等。
所述电子设备3还包括但不限于任何一种可与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)、游戏机、交互式网络电视(InternetProtocol Television,IPTV)、智能式穿戴式设备等。所述电子设备3所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
所述至少一个处理器32可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。该处理器32可以是微处理器或者该处理器32也可以是任何常规的处理器等,所述处理器32是所述电子设备3的控制中心,利用各种接口和线路连接整个电子设备3的各个部分。
所述存储器31可用于存储所述计算机程序33和/或模块/单元,所述处理器32通过运行或执行存储在所述存储器31内的计算机程序和/或模块/单元,以及调用存储在存储器31内的数据,实现所述电子设备3的各种功能。所述存储器31可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备3的使用所创建的数据(比如音频数据等)等。此外,存储器31可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)、至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。
结合图1,所述电子设备3中的所述存储器31存储多个指令以实现一种应用程序网络读写限制方法,所述处理器32可执行所述多个指令从而实现:
当应用程序作为独立的进程运行时,通过无权限安卓过程链接表钩子技术,将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址;
通过所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息;
根据所述流量信息以及预设的流量阈值,从所述应用程序的套接字中确定需要进行网络读写限制的目标套接字;
根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制。
在一种可选的实施方式中,所述将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址包括:
将所述应用程序的可执行文件的第一默认网络读写接口地址替换为第一预设网络读写接口地址,以及将所述可执行文件的第一默认多路复用接口地址替换为第一预设多路复用接口地址;
将所述应用程序连接的动态链接库的第二默认网络读写接口地址替换为第二预设网络读写接口地址,以及将所述动态链接库的第二默认多路复用接口地址替换为第二预设多路复用接口地址。
在一种可选的实施方式中,所述通过无权限安卓过程链接表钩子技术,将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址包括:
通过无权限安卓过程链接表钩子技术,从插件管理程序中获取所述应用程序的进程标识,所述插件管理程序用于管理所述应用程序;
根据所述进程标识,确定目标文件,所述目标文件用于存储所述应用程序的可执行文件的第一内存地址和所述应用程序连接的动态链接库的第二内存地址;
从所述目标文件中获取所述第一内存地址以及所述第二内存地址;
从所述第一内存地址中,确定所述可执行文件的第一首地址,以及从所述第二内存地址中,确定所述动态链接库的第二首地址;
根据所述第一首地址以及所述第二首地址,获取所述应用程序运行时的动态链接所需信息表;
根据所述动态链接所需信息表,获取用于存储默认网络读写接口地址和默认多路复用接口地址的文件结构;
将所述文件结构存储的所述默认网络读写接口地址替换为预设网络读写接口地址,以及将所述文件结构存储的所述默认多路复用接口地址替换为预设多路复用接口地址。
在一种可选的实施方式中,所述网络读写接口包括套接字接口以及主动连接接口,所述通过所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息包括:
通过所述预设网络读写接口地址对应的网络读写接口,获取所述套接字接口调用的套接字类型参数;
根据所述套接字类型参数,判断所述套接字接口创建的套接字的类型是否为网络套接字;
若所述套接字接口创建的套接字的类型为网络套接字,获取所述主动连接接口调用的互联网协议地址参数;
若所述互联网协议地址参数与预设互联网协议地址不一致,对所述套接字的流量进行统计,获得流量信息。
在一种可选的实施方式中,所述网络读写接口还包括接收连接接口,所述处理器32可执行所述多个指令从而实现:
若所述套接字接口创建的套接字的类型为网络套接字,获取所述接收连接接口返回的文件描述符所连接的互联网协议地址;
若所述文件描述符所连接的互联网协议地址与所述预设互联网协议地址不一致,对所述套接字的流量进行统计,获得流量信息。
在一种可选的实施方式中,所述根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制包括:
通过所述网络读写接口,判断所述目标套接字是否有设置非阻塞选项;
若所述目标套接字没有设置非阻塞选项,根据所述流量信息,计算所述目标套接字的网络读写限制时间;
根据所述网络读写限制时间,将所述目标套接字对应的网络读写线程暂停;
通过所述预设多路复用接口地址对应的多路复用接口,获取所述应用程序的所有可读/可写的第一套接字;
从所述第一套接字中确定不需要进行网络读写限制的第二套接字;
将所述第二套接字返回给所述应用程序对应的进程。
在一种可选的实施方式中,所述处理器32可执行所述多个指令从而实现:
对所述应用程序的需进行流量统计的套接字的生命周期进行监听;
当监听到所述需进行流量统计的套接字被创建时,或,监听到所述需进行流量统计的套接字被销毁时,更新所有所述需进行流量统计的套接字的预设流量阈值。
具体地,所述处理器32对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
在图3所描述的电子设备3中,可以当应用程序作为独立的进程运行时,通过无权限安卓过程链接表钩子技术,将所述应用程序的可执行文件的默认网络读写接口地址替换为预设网络读写接口地址,将所述可执行文件的默认多路复用接口地址替换为预设多路复用接口地址,将所述应用程序连接的动态链接库的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述动态链接库的默认多路复用接口地址替换为预设多路复用接口地址;通过调用所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息;根据所述流量信息以及预设的流量阈值,从所述应用程序的套接字中确定需要进行网络读写限制的目标套接字;根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制。可见,可以通过无权限安卓过程链接表钩子技术,将应用程序的可执行文件的默认网络读写接口地址以及默认多路复用接口地址分别替换为预设网络读写接口地址以及预设多路复用接口地址,将应用程序连接的动态链接库的默认网络读写接口地址以及默认多路复用接口地址分别替换为预设网络读写接口地址以及预设多路复用接口地址,即应用程序在运行时会调用预设网络读写接口地址对应的网络读写接口以及预设多路复用接口地址对应的多路复用接口,从而可以在没有系统管理权限的情况下通过网络读写接口以及多路复用接口,获取应用程序的流量信息并对网络读写进行限制。实现了在没有系统管理权限的情况下对应用程序的流量进行监控。
所述电子设备3集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种应用程序网络读写限制方法,其特征在于,所述方法包括:
当应用程序作为独立的进程运行时,通过无权限安卓过程链接表钩子技术,将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址,包括:通过无权限安卓过程链接表钩子技术,从插件管理程序中获取所述应用程序的进程标识,所述插件管理程序用于管理所述应用程序;根据所述进程标识,确定目标文件;根据所述目标文件中存储的信息将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址;
通过所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息;
根据所述流量信息以及预设的流量阈值,从所述应用程序的套接字中确定需要进行网络读写限制的目标套接字;
根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制。
2.根据权利要求1所述的方法,其特征在于,所述将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址包括:
将所述应用程序的可执行文件的第一默认网络读写接口地址替换为第一预设网络读写接口地址,以及将所述可执行文件的第一默认多路复用接口地址替换为第一预设多路复用接口地址;
将所述应用程序连接的动态链接库的第二默认网络读写接口地址替换为第二预设网络读写接口地址,以及将所述动态链接库的第二默认多路复用接口地址替换为第二预设多路复用接口地址。
3.根据权利要求1所述的方法,其特征在于,所述目标文件用于存储所述应用程序的可执行文件的第一内存地址和所述应用程序连接的动态链接库的第二内存地址,所述根据所述目标文件中存储的信息将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址包括:
从所述目标文件中获取所述第一内存地址以及所述第二内存地址;
从所述第一内存地址中,确定所述可执行文件的第一首地址,以及从所述第二内存地址中,确定所述动态链接库的第二首地址;
根据所述第一首地址以及所述第二首地址,获取所述应用程序运行时的动态链接所需信息表;
根据所述动态链接所需信息表,获取用于存储默认网络读写接口地址和默认多路复用接口地址的文件结构;
将所述文件结构存储的所述默认网络读写接口地址替换为预设网络读写接口地址,以及将所述文件结构存储的所述默认多路复用接口地址替换为预设多路复用接口地址。
4.根据权利要求1所述的方法,其特征在于,所述网络读写接口包括套接字接口以及主动连接接口,所述通过所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息包括:
通过所述预设网络读写接口地址对应的网络读写接口,获取所述套接字接口调用的套接字类型参数;
根据所述套接字类型参数,判断所述套接字接口创建的套接字的类型是否为网络套接字;
若所述套接字接口创建的套接字的类型为网络套接字,获取所述主动连接接口调用的互联网协议地址参数;
若所述互联网协议地址参数与预设互联网协议地址不一致,对所述套接字的流量进行统计,获得流量信息。
5.根据权利要求4所述的方法,其特征在于,所述网络读写接口还包括接收连接接口,所述方法还包括:
若所述套接字接口创建的套接字的类型为网络套接字,获取所述接收连接接口返回的文件描述符所连接的互联网协议地址;
若所述文件描述符所连接的互联网协议地址与所述预设互联网协议地址不一致,对所述套接字的流量进行统计,获得流量信息。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制包括:
通过所述网络读写接口,判断所述目标套接字是否有设置非阻塞选项;
若所述目标套接字没有设置非阻塞选项,根据所述流量信息,计算所述目标套接字的网络读写限制时间;
根据所述网络读写限制时间,将所述目标套接字对应的网络读写线程暂停;
通过所述预设多路复用接口地址对应的多路复用接口,获取所述应用程序的所有可读/可写的第一套接字;
从所述第一套接字中确定不需要进行网络读写限制的第二套接字;
将所述第二套接字返回给所述应用程序对应的进程。
7.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
对所述应用程序的需进行流量统计的套接字的生命周期进行监听;
当监听到所述需进行流量统计的套接字被创建时,或,监听到所述需进行流量统计的套接字被销毁时,更新所有所述需进行流量统计的套接字的预设流量阈值。
8.一种应用程序网络读写限制装置,其特征在于,所述应用程序网络读写限制装置包括:
替换模块,用于当应用程序作为独立的进程运行时,通过无权限安卓过程链接表钩子技术,将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址,包括:通过无权限安卓过程链接表钩子技术,从插件管理程序中获取所述应用程序的进程标识,所述插件管理程序用于管理所述应用程序;根据所述进程标识,确定目标文件;根据所述目标文件中存储的信息将所述应用程序的默认网络读写接口地址替换为预设网络读写接口地址,以及将所述应用程序的默认多路复用接口地址替换为预设多路复用接口地址;
统计模块,用于通过所述预设网络读写接口地址对应的网络读写接口,对所述应用程序进行流量统计,获得所述应用程序的流量信息;
确定模块,用于根据所述流量信息以及预设的流量阈值,从所述应用程序的套接字中确定需要进行网络读写限制的目标套接字;
限制模块,用于根据所述流量信息,通过所述网络读写接口以及所述预设多路复用接口地址对应的多路复用接口,对所述目标套接字的网络读写进行限制。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序以实现如权利要求1至7中任意一项所述的应用程序网络读写限制方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有至少一个指令,所述至少一个指令被处理器执行时实现如权利要求1至7中任意一项所述的应用程序网络读写限制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910803137.3A CN110535724B (zh) | 2019-08-28 | 2019-08-28 | 应用程序网络读写限制方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910803137.3A CN110535724B (zh) | 2019-08-28 | 2019-08-28 | 应用程序网络读写限制方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110535724A CN110535724A (zh) | 2019-12-03 |
CN110535724B true CN110535724B (zh) | 2022-11-08 |
Family
ID=68664886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910803137.3A Active CN110535724B (zh) | 2019-08-28 | 2019-08-28 | 应用程序网络读写限制方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110535724B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112202739B (zh) * | 2020-09-17 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 一种流量监控方法和装置 |
CN116055546A (zh) * | 2022-07-21 | 2023-05-02 | 荣耀终端有限公司 | 进程管理方法、电子设备、存储介质及程序产品 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150244630A1 (en) * | 2014-02-23 | 2015-08-27 | Telefonaktiebolaget L M Ericsson (Publ) | IPoE DUAL-STACK SUBSCRIBER FOR ROUTED RESIDENTIAL GATEWAY CONFIGURATION |
CN106789443A (zh) * | 2017-01-13 | 2017-05-31 | 百度在线网络技术(北京)有限公司 | 呈现网络访问请求分析结果的方法与装置 |
CN110138727A (zh) * | 2019-03-28 | 2019-08-16 | 江苏通付盾信息安全技术有限公司 | 反弹shell网络连接的信息查找方法及装置 |
CN111523136B (zh) * | 2020-07-06 | 2023-09-22 | 腾讯科技(深圳)有限公司 | 应用程序的权限管理方法、装置、设备及存储介质 |
-
2019
- 2019-08-28 CN CN201910803137.3A patent/CN110535724B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110535724A (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022078345A1 (zh) | 多设备间的数据交互方法及相关设备 | |
US7487307B2 (en) | Method, apparatus and program product for managing memory in a virtual computing system | |
CN108462760B (zh) | 电子装置、集群访问域名自动生成方法及存储介质 | |
US9678680B1 (en) | Forming a protection domain in a storage architecture | |
CN111767268B (zh) | 数据库表分区方法、装置、电子设备及存储介质 | |
WO2021042849A1 (zh) | 一种云平台、业务处理方法、命令接口及计算机设备 | |
CN110083399B (zh) | 小程序运行方法、计算机设备及存储介质 | |
CN111736922B (zh) | 插件调用方法、装置、电子设备及存储介质 | |
WO2017050064A1 (zh) | 共享内存数据库的内存管理方法及装置 | |
CN110535724B (zh) | 应用程序网络读写限制方法、装置、电子设备及存储介质 | |
CN111679893A (zh) | 运行系统构建方法、装置、电子设备及存储介质 | |
CN112632163A (zh) | 大数据报表导出方法及相关设备 | |
CN112148498A (zh) | 数据同步方法、装置、服务器及存储介质 | |
CN107577962B (zh) | 一种密码卡多算法并列执行的方法、系统及相关装置 | |
CN109634524A (zh) | 一种数据处理守护进程的数据分区配置方法、装置及设备 | |
CN111899018B (zh) | 订单数据处理方法、装置、服务器及存储介质 | |
CN105677481A (zh) | 一种数据处理方法、系统及电子设备 | |
US11620364B2 (en) | Layered-infrastructure blockchain-based system for software license distribution | |
CN115080242A (zh) | 一种pci设备资源统一调度的方法、装置及介质 | |
CN112395319B (zh) | 缓存共用方法、装置、服务器及存储介质 | |
US11048523B2 (en) | Enabling software sensor power operation requests via baseboard management controller (BMC) | |
CN112434237A (zh) | 页面加载方法、装置、电子设备及存储介质 | |
CN109582464B (zh) | 一种云平台管理多种虚拟化平台的方法和装置 | |
JP7006077B2 (ja) | 管理システム、管理方法、及び管理プログラム | |
CN108566293B (zh) | 电子装置、zk节点信息通知方法及存储介质 |
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 |