CN105404498B - 移动智能终端下转发应用程序内流量的方法 - Google Patents
移动智能终端下转发应用程序内流量的方法 Download PDFInfo
- Publication number
- CN105404498B CN105404498B CN201410471861.8A CN201410471861A CN105404498B CN 105404498 B CN105404498 B CN 105404498B CN 201410471861 A CN201410471861 A CN 201410471861A CN 105404498 B CN105404498 B CN 105404498B
- Authority
- CN
- China
- Prior art keywords
- bytecode
- function
- kit
- code
- program
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种移动智能终端下转发应用程序内流量的方法,适用于安卓操作系统,该方法包括以下步骤:在一代码重写工具包读取应用程序的字节码文件;在该代码重写工具包检索该字节码文件中与一个或多个网络请求对应的一个或多个第一字节码;在该代码重写工具包从一软件开发工具包中提取与各第一字节码对应的第二字节码,并以各第二字节码替换各第一字节码;以及将各第二字节码返回给该打包程序,从而使该打包程序使用重写的各第二字节码生成应用包。
Description
技术领域
本发明涉及移动互联网领域,尤其是涉及移动智能终端下转发应用程序内流量的方法。
背景技术
移动智能终端是指像个人电脑一样,具有独立的操作系统,可以由用户自行安装软件、游戏等第三方服务商提供的程序,通过此类程序来不断对终端的功能进行扩充,并可以通过移动通讯网络来实现无线网络接入的便携式设备。常见的移动智能终端包括智能手机和平板电脑。得益于其高度的便携性,移动智能终端正在成为人们使用频率最高的电子设备。
移动智能终端被使用的最多的功能之一是访问互联网,这正在取代通过台式电脑或者笔记本电脑访问互联网的传统方式。在这种背景下,希望移动智能终端也具有以往仅在台式电脑或者笔记本电脑上实现的各种网络服务,例如网络代理服务。
网络代理服务允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。代理服务有利于保障网络终端的隐私或安全,防止攻击,同时可以缓存源服务器的内容,降低源服务器的负载压力。
目前移动智能终端中的应用程序上使用代理服务,主要有以下几种方法:
1、CNAME方法:CNAME指别名记录(也被称为规范名字),这种记录允许将多个名字映射到同一台计算机。可以通过DNS(Domain Name System,域名系统)将域名映射到代理服务器的地址。这一方法的缺点是仅限HTTP/HTTPS协议,且该方法在配置后会有一定的延迟时间,无法立即生效。
2、APN方法,通过配置APN(Access Point Name,接入点)来引导流量。这一方法的缺点是配置了APN的移动智能终端上所有的应用程序都会被迫使用所配置的代理服务器,安全性低。
3、代码控制:应用程序开发者直接在代码中对应用程序的各个网络请求进行代理设置,将流量发送到代理服务器。这一方法的缺点是代码改动量大,复用程度低,且在有些操作系统(例如Google公司的Android系统)中,这种方式不适用于已经编译完成的第三方应用程序。
发明内容
本发明所要解决的技术问题是提供一种移动智能终端下转发应用程序内流量的方法,其能够在Android这样的操作系统中让已经编译完成的第三方应用程序实现代理设置。
本发明为解决上述技术问题而采用的技术方案是提出一种移动智能终端下转发应用程序内流量的方法,适用于安卓操作系统,该方法包括以下步骤:
在一代码重写工具包读取应用程序的字节码文件,该应用程序的字节码文件由该应用程序的打包程序在导出应用包时获取;
在该代码重写工具包检索该字节码文件中与一个或多个网络请求对应的一个或多个第一字节码;
在该代码重写工具包从一软件开发工具包中提取与各第一字节码对应的第二字节码,并以各第二字节码替换各第一字节码;以及
将各第二字节码返回给该打包程序,从而使该打包程序使用重写的各第二字节码生成应用包。
在本发明的一实施例中,该代码重写工具包具有一配置信息,该配置信息包含各第一字节码的匹配信息,该代码重写工具包根据该配置信息检索需要重写的各第一字节码。
在本发明的一实施例中,该打包程序被配置一Java代理(javaagent)参数,该Java代理参数的文件存储目标为该代码重写工具包。
在本发明的一实施例中,上述方法还包括经由该代码重写工具包将该Java代理参数传递给安卓开发环境的dx程序。
在本发明的一实施例中,该一个或多个网络请求的其中之一使用Http客户端(Httpclient)访问网络。
在本发明的一实施例中,各第二字节码包括:替换该第一字节码中的第一执行函数的第二执行函数、将Http客户端实例以及执行函数的参数传递给该第二执行函数的指令。
在本发明的一实施例中,该一个或多个网络请求的其中之一使用URL访问网络。
在本发明的一实施例中,各第二字节码包括:替换该第一字节码中的第一连接函数的第二连接函数、将URL实例及连接函数的参数传递给该第二连接函数的指令。
在本发明的一实施例中,该一个或多个网络请求的其中之一使用套接字(Socket)访问网络。
在本发明的一实施例中,各第二字节码包括:替换该第一字节码中的第一连接函数的第二连接函数、将Socket实例及连接函数的参数传递给该第二连接函数的指令。
本发明由于采用以上技术方案,使之与现有技术相比,具有如下显著优点:
1、支持协议种类多。支持HTTP/HTTPS和其他所有基于TCP的应用层协议。
2、响应快速。对于是否使用代理的开关,所使用代理服务器的地址等修改能立即生效。
3、不影响其他应用。确保只有需要使用服务的应用的流量被转发到代理服务器,智能移动终端上的其他应用不受影响。
4、兼容性强。使用方法简单透明,与应用自身实现关联度极低,能兼容绝大多数应用。
5、部署简单。应用开发者只需要在开发工程中使用代码重写工具包和软件开发工具包,能以最低的成本将代理功能部署到应用上。
附图说明
为让本发明的上述目的、特征和优点能更明显易懂,以下结合附图对本发明的具体实施方式作详细说明,其中:
图1是本发明一实施例中进行代码重写的流程图。
图2是本发明一实施例中HttpClient访问网络的重写后代码执行流程图。
图3是本发明一实施例中使用URL访问网络的重写后代码执行流程图。
图4是本发明一实施例中使用Socket访问网络的重写后代码执行流程图。
图5是本发明另一实施例中使用Socket访问网络的重写后代码执行流程图。
具体实施方式
本发明的实施例描述一种在移动智能终端平台下将网络请求转发到指定服务器(后文称为代理服务器)的方法。本发明的实施例所涉及的移动终端平台例如为谷歌(Google)公司的安卓(Android)操作系统。
已知的CNAME方法仅限HTTP/HTTPS协议,且该方法在配置后会有一定的延迟时间,无法立即生效。已知的APN方法迫使移动智能终端上所有的应用程序都使用所配置的代理服务器。已知的代码控制方法需要直接在代码中对应用程序的各个网络请求进行代理设置,代码改动量大、复用程度低,且在有些操作系统(例如Google公司的Android系统)中存在不适用于已经编译完成的第三方应用程序。
本发明的各实施例适用于各种协议的网络请求,包括但不限于HTTP/HTTPS协议和TCP/IP协议。另外,本发明的实施例的方法可允许应用程序单独设定代理。再者,本发明的实施例的方法可以让已经编译完成的第三方应用程序拥有代理设置的能力。
本发明的实施例在应用程序打包时进行代码的检索和重写。在已编译的应用程序打包过程中,一个代码重写工具包可以获得应用程序的所有代码,检索代码中涉及网络请求的那部分代码,然后从一个软件开发工具包(Software Development Kit,SDK)中获得事先编写好的替换代码。使用替换代码来替换所检索到的那部分代码,从而加入所期望的代理设置功能。
图1是本发明一实施例中进行代码重写的流程图。为便于理解,在应用程序打包的整个流程中描述本实施例的代码重写流程100。代码重写流程100会使用代码重写工具包和软件开发工具包。较佳地,这两个工具包可以由应用程序开发者以外的第三方提供,以节省应用程序开发者的开发精力。
参考图1所示,流程如下:
在步骤101,开始进行应用程序打包。应用程序打包可以在安卓的集成开发环境(Integrated Development Environment,IDE)中使用打包程序实施。
在步骤102,在IDE开始打包程序的时候,为打包程序设置Java代理(javaagent)参数。
打包程序会在启动ProcessBuilder的时候,获取所有的设置,从而获取到javaagent参数。通过设置javaagent参数可以读取应用程序的所有字节码,而获得应用程序的字节码文件,且javaagent参数会指定其文件存储目标为代码重写工具包。
步骤103,ProcessBuilder会把获取到的javaagent参数经过代码重写工具包等层层传递,最终传递到安卓开发平台的dx程序。
dx程序是Android应用打包的最后一个步骤。在dx程序中,会将应用程序的所有代码(以class文件形式存在)传递到javaagent参数中指定的代码重写工具包。
从步骤104-107为代码重写工具包将执行代码重写的流程100。
在步骤104,代码重写工具包读取应用程序的字节码文件,即由前述打包程序在导出应用包时读取到的应用程序的字节码文件。
代码重写工具包可以在dx程序的premain函数中获取到class字节码。
在步骤105,代码重写工具包检索字节码文件中与一个或多个网络请求对应的一个或多个第一字节码。
具体地说,代码重写工具包可以遍历字节码文件,从而检索与网络请求对应的字节码。这些与网络请求对应的字节码即为需要修改的第一字节码。
举例来说,对Http请求来说,会使用Http客户端(HttpClient)或者URL来访问网络,因此代码重写工具包会检索有关HttpClient或者URL的第一字节码。
在步骤106,在代码重写工具包从软件开发工具包中提取与各第一字节码对应的第二字节码,并以各第二字节码替换各第一字节码。
在步骤107,代码重写工具包将各第二字节码返回给打包程序。
在步骤108,打包程序的dx程序对所有字节码文件,包括修改后的第二字节码进行dex操作。
在步骤109,生成应用包(apk文件)。
在一实施例中,代码重写工具包具有一配置信息,配置信息可包含各第一字节码的匹配信息。代码重写工具包根据该配置信息检索需要重写的各第一字节码。
在本发明的实施例中,Http请求可以通过HttpClient或者URL访问网络,而TCP请求可以通过Socket访问网络。下文将对这些请求所涉及的代码重写进行举例。然而可以理解,所举例的代码重写流程及代码仅仅是示例性的。此外,本发明可适用于Http请求、TCP请求之外的网络请求。
举例来说,当重写代码工具包获取到的类型为HttpClient的时候,在字节码中对HttpClient的第一执行(execute)函数进行重写,把第一执行函数的字节码改成软件开发工具包中的HttpInstrument中的第二执行函数。此外,还写入将HttpClient的实例和第二执行函数的参数传递给第二执行函数的指令。
这样,此第二执行函数在执行时会获得HttpClient的实例,并进行设置代理的操作,因而当应用程序在运行过程通过HttpClient发起的请求都会被转发到指定的代理服务器。
又如,当代码重写工具包获取到的类型为URL的时候,在字节码中对URL的第一连接函数进行重写,把第一连接函数的字节码改成软件开发工具包中的HttpInstrument中的第二连接函数。此外,还写入将URL的实例和第二连接函数的参数传递给第二连接函数的指令。
这样,此第二连接函数在执行时会获得URL的实例,并打开一个带有代理的URL连接并将其放置到堆栈。
再如,当代码重写工具包获取到的类型为套接字(Socket)的时候,在字节码中Socket的第一连接函数进行重写,把第一连接函数的字节码改成软件开发工具包中的TcpInstrument中的第二连接函数。此外,还写入将URL的实例和第二连接函数的参数传递给第二连接函数的指令。
这样,第二连接函数会获取Socket实例,然后连接到指定的代理服务器,并将原来需要连接的地址也发送到指定的代理服务器。
以下比较重写前和重写后的字节码。
举例来说,对于使用HttpClient实例发出Http请求的方式,原生的第一字节码主要包括执行以下内容的指令:加载Http示例,加载原生执行函数(下文称为第一执行函数)的参数。重写后的第二字节码主要包括执行以下内容的指令:替换该第一字节码中的第一执行函数的第二执行函数,将HttpClient实例传递给第二执行函数的指令,以及将第二执行函数的参数传递给第二执行函数的指令。
各第二字节码还包括执行以下内容的指令:截取HttpClient实例,为HttpClient实例设置代理。
示例性代码如下:
修改前:
33 aload_0[this]
34 getfield com.chinanetcenter.wcs.android.http.AsyncHttpRequest.client:org.apache.http.impl.client.AbstractHttpClient[5]//与上一行配合,达到加载HttpClient实例的目的
37 aload_0[this]
38 getfield com.chinanetcenter.wcs.android.http.AsyncHttpRequest.request:org.apache.http.client.methods.HttpUriRequest[7]//与上一行配合,达到加载参数的目的
41 aload_0[this]
42 getfield com.chinanetcenter.wcs.android.http.AsyncHttpRequest.context:org.apache.http.protocol.HttpContext[6]//与上一行配合,达到加载参数的目的
45 invokevirtual org.apache.http.impl.client.AbstractHttpClient.execute(org.apache.http.client.methods.HttpUriRequest,org.apache.http.protocol.HttpContext):org.apache.http.HttpResponse[22]//调用HttpClient的execute
48 astore_1[response]//保存execute返回的结果
修改后:
//以下的操作是先加载一些实例,保存到堆栈中,以便后面使用。
33 aload_0[this]
34 getfield com.chinanetcenter.wcs.android.http.AsyncHttpRequest.client:org.apache.http.impl.client.AbstractHttpClient[34]//加载HttpClient实例的参数
37 astore_1//保存到堆栈中
38 aload_0[this]
39 getfield com.chinanetcenter.wcs.android.http.AsyncHttpRequest.request:org.apache.http.client.methods.HttpUriRequest[38]//加载参数
42 astore_2//保存到堆栈中
43 aload_0[this]
44 getfield com.chinanetcenter.wcs.android.http.AsyncHttpRequest.context:org.apache.http.protocol.HttpContext[36]//加载参数
47 astore_3//保存到堆栈中
//以下包含:
//1、判断实例是否是HttpClient
//2、原HttpClient的执行指令集
48 aload_1//加载HttpClient的实例
49 instanceof org.apache.http.client.HttpClient[67]//判断是否是HttpClient的实例
52 ifne 89//如果是HttpClient的实例,跳转到前面数字是89的那一行,所以从55到61是加载到的不是HttpClient实例的时候执行的。
55 aload_1//加载HttpClient实例
56 aload_2//加载参数
57 aload_3//加载参数
58 invokevirtual org.apache.http.impl.client.AbstractHttpClient.execute(org.apache.http.client.methods.HttpUriRequest,org.apache.http.protocol.HttpContext):org.apache.http.HttpResponse[73]//调用HttpClient实例的execute方法的指令
61 astore 4//保存返回结果
63 aload_0[this]
//以下包含:
//1、HttpInstrument中execute执行的指令集
//2、执行成功后返回到原来的地方继续执行下去
89 aload_1//加载HttpClient实例
90 checkcast org.apache.http.client.HttpClient[67]//是否是HttpClient
93 aload_2//加载参数
94 aload_3//加载参数
95 invokestatic com.mato.sdk.instrumentation.HttpInstrumentation.execute(org.apache.http.client.HttpClient,org.apache.http.client.methods.HttpUriRequest,org.apache.http.protocol.HttpContext):org.apache.http.HttpResponse[84]//调用HttpInstrument的execute
98 astore 4//保存返回的结果
100 goto 63//跳到前面数字是63的那一行。
对于使用URL实例发出Http请求的方式,原生的第一字节码主要包括执行以下内容的指令:加载URL示例,加载原生连接函数(下文称为第一连接函数)的参数。重写后的第二字节码主要包括执行以下内容的指令:替换该第一字节码中的第一连接函数的第二连接函数,将URL实例传递给第二连接函数的指令,以及将第二连接函数的参数传递给第二连接函数的指令。
各第二字节码还可包括执行以下内容的指令:截取URL实例,为URL实例设置代理。
对于使用Socket实例发出TCP请求的方式,原生的第一字节码主要包括执行以下内容的指令:加载Socket示例,加载原生连接函数(下文称为第一连接函数)的参数。重写后的第二字节码主要包括执行以下内容的指令:替换该第一字节码中的第一连接函数的第二连接函数,将Socket实例传递给第二连接函数的指令,以及将第二连接函数的参数传递给第二连接函数的指令。
各第二字节码还可包括执行以下内容的指令:截取Socket实例,为Socket实例设置代理。
图2是本发明一实施例中HttpClient访问网络的重写后代码执行流程图。参考图2所示,使用HttpClient访问网络的流程包括以下步骤:
步骤201,应用程序使用HttpClient用来发起Http请求;
步骤202,利用堆栈信息截获到HttpClient实例;
步骤203,此时根据需要判断是否为堆栈中的HttpClient实例设置代理;
步骤204,当步骤203中判断为是的时候执行,当需要设置代理则为HttpClient设置代理;
具体来说,在调用执行函数execute前将HttpClient实例放置到堆栈上,并且将execute函数中的所有参数也放置到堆栈上;然后调用HttpInstrument的execute函数,并且堆栈上的HttpClient实例和execute函数的所有参数传递到HttpInstrument。
步骤205,使用HttpClient实例发起Http/Https请求。
图3是本发明一实施例中使用URL访问网络的重写后代码执行流程图。参考图3所示,使用URL访问网络的流程包括以下步骤:
步骤301,应用程序代码中意图使用URL打开一个URLConnection;
步骤302,根据堆栈信息获取到URL实例;
步骤303,根据需要判断是否打开一个经过代理的URLConnection;
步骤304,在步骤303中判断为是的时候执行,当需要设置代理则打开一个经过代理的URLConnection;
具体地说,调用HttpInstrument的openConnection函数的字节码,并且将堆栈上的URL实例和openConnection的所有参数传递到HttpInstrument的openConnection函数中。
步骤305,最终通过步骤304返回的URLConnection进行Http/Https进行网络通信。
图4是本发明一实施例中使用Socket访问网络的重写后代码执行流程图。参考图4所示,使用Socket访问网络的流程包括以下步骤:
步骤401,在应用程序中创建一个不带地址和端口的Socket;
步骤402,使用Socket连接到自己要进行通讯的地址和端口;
步骤403,判断是否需要设置代理;
步骤404,当步骤403判断为是,从堆栈信息中获取Socket实例;
步骤405,使用Socket实例连接到指定的代理服务器;
步骤405,使用Socket进行通讯。
图5是本发明另一实施例中使用Socket访问网络的重写后代码执行流程图。参考图5所示,使用Socket访问网络的流程包括以下步骤:
步骤501,在应用程序中创建一个带有地址和端口的Socket;
步骤502,判断是否需要设置代理;
步骤503,当步骤502中的判断为是,创建一个连接到代理服务器的Socket并返回;
具体地说,将Socket实例以及connect相关的参数放置到堆栈上,调用TcpInstrument中connect函数,并且将堆栈上的Socket实例和connect的所有参数传递到TcpInstrument的connect函数中。
步骤504,使用Socket进行通讯。
本发明的上述实施例,通过Java的Instrument技术改写class文件,实现各个网络请求的代理设置,有效地解决了搭载Android系统的移动智能终端进行代理设置的过程繁琐、可操作性低、兼容性差等问题。
本发明上述实施例的方法,相比现有方法具有以下特点:
1、支持协议种类多。支持HTTP/HTTPS和其他所有基于TCP的应用层协议。
2、响应快速。对于是否使用代理的开关,所使用代理服务器的地址等修改能立即生效。
3、不影响其他应用。确保只有需要使用服务的应用的流量被转发到代理服务器,智能移动终端上的其他应用不受影响。
4、兼容性强。使用方法简单透明,与应用自身实现关联度极低,能兼容绝大多数应用。
5、部署简单。应用开发者只需要在开发工程中使用代码重写工具包和软件开发工具包,能以最低的成本将代理功能部署到应用上。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
Claims (10)
1.一种移动智能终端下转发应用程序内流量的方法,适用于安卓操作系统,该方法包括以下步骤:
在一代码重写工具包读取应用程序的字节码文件,该应用程序的字节码文件由该应用程序的打包程序在导出应用包时获取;
在该代码重写工具包检索该字节码文件中与一个或多个网络请求对应的一个或多个第一字节码;
在该代码重写工具包从一软件开发工具包中提取与各第一字节码对应的第二字节码,并以各第二字节码替换各第一字节码;以及
将各第二字节码返回给该打包程序,从而使该打包程序使用重写的各第二字节码生成应用包。
2.如权利要求1所述的方法,其特征在于,该代码重写工具包具有一配置信息,该配置信息包含各第一字节码的匹配信息,该代码重写工具包根据该配置信息检索需要重写的各第一字节码。
3.如权利要求1所述的方法,其特征在于,该打包程序被配置一Java代理(javaagent)参数,该Java代理参数的文件存储目标为该代码重写工具包。
4.如权利要求3所述的方法,其特征在于,还包括经由该代码重写工具包将该Java代理参数传递给安卓开发环境的dx程序。
5.如权利要求1所述的方法,其特征在于,该一个或多个网络请求的其中之一使用Http客户端(Httpclient)访问网络。
6.如权利要求5所述的方法,其特征在于,各第二字节码包括:替换该第一字节码中的第一执行函数的第二执行函数、将Http客户端实例以及第二执行函数的参数传递给该第二执行函数的指令。
7.如权利要求1所述的方法,其特征在于,该一个或多个网络请求的其中之一使用URL访问网络。
8.如权利要求7所述的方法,其特征在于,各第二字节码包括:替换该第一字节码中的第一连接函数的第二连接函数、将URL实例及第二连接函数的参数传递给该第二连接函数的指令。
9.如权利要求1所述的方法,其特征在于,该一个或多个网络请求的其中之一使用套接字(Socket)访问网络。
10.如权利要求9所述的方法,其特征在于,各第二字节码包括:替换该第一字节码中的第一连接函数的第二连接函数、将Socket实例及第二连接函数的参数传递给该第二连接函数的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410471861.8A CN105404498B (zh) | 2014-09-16 | 2014-09-16 | 移动智能终端下转发应用程序内流量的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410471861.8A CN105404498B (zh) | 2014-09-16 | 2014-09-16 | 移动智能终端下转发应用程序内流量的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105404498A CN105404498A (zh) | 2016-03-16 |
CN105404498B true CN105404498B (zh) | 2019-03-22 |
Family
ID=55470002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410471861.8A Active CN105404498B (zh) | 2014-09-16 | 2014-09-16 | 移动智能终端下转发应用程序内流量的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105404498B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107395724B (zh) * | 2017-07-24 | 2021-08-17 | 北京小米移动软件有限公司 | 网络请求方法及装置 |
CN108322458B (zh) * | 2018-01-30 | 2020-05-19 | 深圳壹账通智能科技有限公司 | Web应用入侵检测方法、系统、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101566967A (zh) * | 2009-06-03 | 2009-10-28 | 哈尔滨工程大学 | 针对java字节码文件的快速自动修改方法 |
CN102110162A (zh) * | 2011-02-24 | 2011-06-29 | 北京中电普华信息技术有限公司 | 一种实现sql数据库监控的方法和装置 |
CN102122263A (zh) * | 2011-03-23 | 2011-07-13 | 成都勤智数码科技有限公司 | 一种java应用系统运行时监控方法和装置 |
CN102955714A (zh) * | 2011-08-17 | 2013-03-06 | 阿里巴巴集团控股有限公司 | 实现动态模拟远程接口的装置及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11347498B2 (en) * | 2013-02-26 | 2022-05-31 | Red Hat, Inc. | Bytecode modification |
-
2014
- 2014-09-16 CN CN201410471861.8A patent/CN105404498B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101566967A (zh) * | 2009-06-03 | 2009-10-28 | 哈尔滨工程大学 | 针对java字节码文件的快速自动修改方法 |
CN102110162A (zh) * | 2011-02-24 | 2011-06-29 | 北京中电普华信息技术有限公司 | 一种实现sql数据库监控的方法和装置 |
CN102122263A (zh) * | 2011-03-23 | 2011-07-13 | 成都勤智数码科技有限公司 | 一种java应用系统运行时监控方法和装置 |
CN102955714A (zh) * | 2011-08-17 | 2013-03-06 | 阿里巴巴集团控股有限公司 | 实现动态模拟远程接口的装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105404498A (zh) | 2016-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240114076A1 (en) | System and Method for a Unified Interface to Networked Web Services | |
US10419289B2 (en) | System and method for configuration management service | |
US7900214B2 (en) | System and method for adaptable provisioning of generic application content | |
JP4286798B2 (ja) | ハードドライブにドライバファイルをインストールする方法、コンピュータ及びコンピュータ読取可能な記憶媒体 | |
EP2972822B1 (en) | System and method to enable web property access to a native application | |
CN106569856B (zh) | 一种应用视图资源文件的加载方法和装置 | |
AU2013247347A1 (en) | Configuration of third party applications in a sandboxed environment | |
CA2495396A1 (en) | System and method for customized provisioning of application content | |
TW201814509A (zh) | 實現網路頁面與本體應用通信的方法、裝置和電子設備 | |
CN102779244B (zh) | 一种文件操作的执行方法及装置 | |
JP2011107752A (ja) | 情報処理装置、通信システムおよびプログラム | |
WO2013175560A1 (ja) | 情報通信システム及び情報変換方法 | |
CN106933625A (zh) | 一种多源软件更新的方法及系统 | |
CN105491081A (zh) | 移动智能终端下转发应用内流量的方法 | |
CN103281297A (zh) | 企业信息安全管理系统与方法 | |
EP3060987A1 (en) | Emulating test distributed application on server | |
US20090030975A1 (en) | Application generation system and method | |
CN105404498B (zh) | 移动智能终端下转发应用程序内流量的方法 | |
US20090094312A1 (en) | Methods and systems for dynamic code extension | |
JP5765185B2 (ja) | 制御プログラム、クライアント装置、制御システムの制御方法及びクライアント装置の制御方法 | |
JP2012159924A (ja) | インストールシステム | |
KR101437943B1 (ko) | 스마트 플랫폼 장치, 시스템 및 제어 방법 | |
JP2013196310A (ja) | アプリケーション解析装置、アプリケーション解析システム、およびプログラム | |
CN102355486A (zh) | 一种下载数据的方法及装置 | |
Shah | Penetration Testing Android Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |