CN109446086A - 一种App内部抓包的方法 - Google Patents

一种App内部抓包的方法 Download PDF

Info

Publication number
CN109446086A
CN109446086A CN201811267960.9A CN201811267960A CN109446086A CN 109446086 A CN109446086 A CN 109446086A CN 201811267960 A CN201811267960 A CN 201811267960A CN 109446086 A CN109446086 A CN 109446086A
Authority
CN
China
Prior art keywords
packet capturing
back door
app
packet
network interface
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.)
Pending
Application number
CN201811267960.9A
Other languages
English (en)
Inventor
邵增光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kuwo Technology Co Ltd
Original Assignee
Beijing Kuwo Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kuwo Technology Co Ltd filed Critical Beijing Kuwo Technology Co Ltd
Priority to CN201811267960.9A priority Critical patent/CN109446086A/zh
Publication of CN109446086A publication Critical patent/CN109446086A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0677Localisation of faults
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种App内部抓包的方法,包括如下步骤:Hook***的网络接口,形成用于替代网络接口的自定义接口,将网络接口替换为自定义接口,在自定义接口内部记录每个步骤的时间点和数据包,然后再转发给***的网络接口继续处理,把记录的数据包保存起来,形成数据记录信息,构建抓包框架,预设后门,通过后门查看数据记录信息。本发明,构建一个iPhone端App内部抓包框架,任何嵌入该抓包框架的App,均可在处于4G环境时,完成网络数据包内容的拦截及捕获,效率高,可靠性好,安全性可控,解决了移动网络无法抓包的问题。

Description

一种App内部抓包的方法
技术领域
本发明涉及网络数据包内容拦截及捕获技术领域,具体说是一种App内部抓包的方法。
背景技术
现有的抓包工具大致分两种,一种基于网卡,另一种基于手机代理,但是这两种都不能解决手机端App使用运营商4G的网络(4G环境)下抓包。
在App调试时,大部分场合都可以通过程序调试来定位问题,但有些场景使用抓包来定位接口问题更准确、更方便,如以下场景:
场景1:App发送数据给后台,但后台没有收到,可以对接口进行抓包分析,看是后台处理有问题,还是App没有将数据发出去,或是App发送数据格式有误。
场景2:App和后台接口联调测通,但业务数据对不上,有可能是后台问题,也有可能是App发送的问题,可以抓包确认问题所在。
场景3:线上App出现bug需要定位,但不在公司不能通过代码调试分析,可直接抓包分析,快速应急处置。
场景4:App页面渲染缓慢,抓包可分析接口响应时长,判读是不是后台出现性能问题。
现有抓包工具,例如Fiddler、WireShark、tcpdump等,不适合于在4G的网络下抓包(抓包工具通常需要保证手机和安装抓包工具的电脑处于同一个网络环境下,4G网络环境无法达到这一要求),有些抓包工具还需收费,也不便于公司使用。
iOS 5后,apple引入了RVI remote virtual interface的特性,它只需要将iOS设备使用USB数据线连接到mac上,然后使用rvictl工具以iOS设备的UDID为参数在Mac中建立一个虚拟网络接口rvi,就可以在mac设备上使用tcpdump,wireshark等工具对创建的接口进行抓包分析。但不适用于没有USB数据线和mac的情况下抓包。
抓包的工作原理简单示例如下:
当客户端(浏览器、App等)访问服务器会形成一个请求,请求和响应的整个过程在客户端和服务器间存在若干次数据交互。对数据交互过程中的网络数据包内容进行拦截及捕获,即本发明所称的抓包的主要任务。
以HTTP协议为例,其是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。
HTTP协议的主要特点如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP请求由三部分组成,分别是:请求行、消息报头、请求正文。
请求方法有多种,各个方法的解释如下:
GET请求获取Request-URI所标识的资源,
POST在Request-URI所标识的资源后附加新的数据,
HEAD请求获取由Request-URI所标识的资源的响应消息报头,
PUT请求服务器存储一个资源,并用Request-URI作为其标识,
DELETE请求服务器删除Request-URI所标识的资源,
TRACE请求服务器回送收到的请求信息,主要用于测试或诊断,
CONNECT保留将来使用,
OPTIONS请求查询服务器的性能,或者查询与资源相关的选项和需求。
在接收和解释请求消息后,服务器返回一个HTTP响应消息。
HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理,
2xx:成功--表示请求已被成功接收、理解、接受,
3xx:重定向--要完成请求必须进行更进一步的操作,
4xx:客户端错误--请求有语法错误或请求无法实现,
5xx:服务器端错误--服务器未能实现合法的请求。
抓包后可解析网络数据包内容,分析HTTP请求和响应的以下信息:
顺序号# :HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增。
Result : HTTP响应的状态 Protocol:请求使用的协议(如HTTP/HTTPS)
HOST:请求地址的域名 URL:请求的服务器路径和文件名,也包含GET参数
BODY:请求的大小,以byte为单位
Content-Type:请求响应的类型
Caching:请求的缓存过期时间或缓存控制header的值
Process:发出此请求的Windows进程及进程ID
Comments :用户通过脚本或者菜单给此session增加的备注
custom:用户可以通过脚本设置的自定义值。
抓包实现方式简述:
以手机中的App为例,要实现对App的网络数据抓包,需要监控App与服务器交互之间的网络节点,监控其中任意一个网络节点,例如网卡,获取所有经过网卡中的数据,对这些数据按照网络协议进行解析,这就是抓包的基本原理。
但是各个网络节点不受我们控制,所以基本无法实现抓包的,只能在客户端和服务端进行抓包。
在WiFi环境下,网络数据传输经过以下路径:手机、本地路由(本地网络)、网络节点、接入设备、服务器。则:
一般理解,手机、本地网络属于客户端侧的抓包,接入设备、服务器属于后台侧的抓包,两者没有什么不同。
本地网络指的是提供WiFi服务的路由器,如果直接抓路由器的包还是比较麻烦的,因此我们会在手机和本地路由之间加一层代理服务,这样只要抓代理服务的网络数据即可。
如果处于4G环境,网络数据传输经过以下路径:手机、移动基站、网络节点、接入设备、服务器。则此种情况下必须在手机端抓包。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种App内部抓包的方法,构建一个iPhone端App内部抓包框架,任何嵌入该抓包框架的App,均可在处于4G环境时,完成网络数据包内容的拦截及捕获,效率高,可靠性好,安全性可控,解决了移动网络无法抓包的问题。
为达到以上目的,本发明采取的技术方案是:
一种App内部抓包的方法,其特征在于,包括如下步骤:
Hook***的网络接口,形成用于替代网络接口的自定义接口,
将网络接口替换为自定义接口,
在自定义接口内部记录每个步骤的时间点和数据包,然后再转发给***的网络接口继续处理,
把记录的数据包保存起来,形成数据记录信息,
构建抓包框架,预设后门,通过后门查看数据记录信息。
在上述技术方案的基础上,利用方法变换Method Swizzling实现Hook***的网络接口,动态改变方法编号SEL和方法实现IMP的对应关系。
在上述技术方案的基础上,所述方法实现IMP,包括创建连接、打开连接、读取数据/写数据、关闭连接和释放连接。
在上述技术方案的基础上,仅针对预设的协议记录每个步骤的时间点和数据包。
在上述技术方案的基础上,所述预设的协议为http协议。
在上述技术方案的基础上,记录的数据包默认保留在内存中,形成数据记录信息。
在上述技术方案的基础上,预设后门,在hook的回调函数里实现。
在上述技术方案的基础上,预设具有访问并使用后门的账户名称,仅该账户名称对应的账号正常登陆后,通过后门查看数据记录信息;
或:预设具有访问并使用后门的账户名称,仅该账户名称对应的账号完全匹配后,通过后门查看数据记录信息;
或:在App内预设后门访问口令,任意用户正确输入口令即启动后门。
本发明所述的App内部抓包的方法,构建一个iPhone端App内部抓包框架,任何嵌入该抓包框架的App,均可在处于4G环境时,完成网络数据包内容的拦截及捕获,效率高,可靠性好,安全性可控,解决了移动网络无法抓包的问题。
本发明所述的App内部抓包的方法,可在酷我音乐盒iOS应用中使用,当安装有酷我音乐盒的设备工作于4G网络状态下,在出现网络相关问题时,为分析、解决问题可采用本发明的方案进行抓包,以便定位网络问题。
抓包获取的内容可以供以下需求使用:
1. 定位网络接口问题,
2. 分析App数据接口,
3. 分析网络协议,分析网络数据。
例如:曾发现酷我音乐盒仅在移动网络环境下无法正常登录,我们可以抓包看下服务端接口的返回结果。即这一类问题是在遇到App只有移动网络时才出现问题,即:某些问题只有在使用流量(联通流量包,电信流量包等等)的情况下才能暴露出来,在WiFi环境下调试没有意义,无法再现故障、定位故障。
附图说明
本发明有如下附图:
图1 本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的App内部抓包的方法,包括如下步骤:
Hook***的网络接口,形成用于替代网络接口的自定义接口,
将网络接口替换为自定义接口,
在自定义接口内部记录每个步骤的时间点和数据包,然后再转发给***的网络接口继续处理,
把记录的数据包保存起来,形成数据记录信息,
构建抓包框架,预设后门,通过后门查看数据记录信息。
所述***指iOS***,默认指iOS7.0以上的***,所述网络接口指NSURLSession和 CFNetwork,默认为CFNetwork。
以NSURLSession为例,如果使用NSURLSession需要hook的方法列表如下:
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)taskwillPerformHTTPRedirection:(NSHTTPURLResponse *)response newRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLRequest *))completionHandler delegate:(id <NSURLSessionDelegate>)delegate;
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask*)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandlerdelegate:(id <NSURLSessionDelegate>)delegate;
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask*)dataTask didReceiveData:(NSData *)data delegate:(id <NSURLSessionDelegate>)delegate;
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask*)dataTask
didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSURLSessionDelegate>)delegate;
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)taskdidCompleteWithError:(NSError *)error delegate:(id <NSURLSessionDelegate>)delegate;
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWrittentotalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite delegate:(id <NSURLSessionDelegate>)delegate;
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionDownloadTask*)downloadTask didFinishDownloadingToURL:(NSURL *)location data:(NSData *)data delegate:(id <NSURLSessionDelegate>)delegate;
- (void)URLSessionTaskWillResume:(NSURLSessionTask *)task;
以CFNetwork为例,如果使用CFNetwork需要hook的方法列表如下:
static CFReadStreamRef (*Orig_CFReadStreamCreateForHTTPRequest)(CFAllocatorRef __nullable, CFHTTPMessageRef);
static Boolean (*Orig_CFReadStreamOpen)(CFReadStreamRef);
static CFIndex (*Orig_CFReadStreamRead)(CFReadStreamRef, UInt8 *,CFIndex);
static void (*Orig_CFReadStreamClose)(CFReadStreamRef stream);
static CFErrorRef (*Orig_CFReadStreamCopyError)(CFReadStreamRef);。
在上述技术方案的基础上,利用方法变换Method Swizzling实现Hook***的网络接口,动态改变方法编号SEL和方法实现IMP的对应关系。
在上述技术方案的基础上,所述方法实现IMP,包括创建连接、打开连接、读取数据/写数据、关闭连接和释放连接。
在上述技术方案的基础上,仅针对预设的协议记录每个步骤的时间点和数据包。
在上述技术方案的基础上,所述预设的协议为http协议。
在上述技术方案的基础上,记录的数据包默认保留在内存中,形成数据记录信息。
如果不需要保存数据包,则默认存储于内存中,下次启动后数据包自动就清除了。
如果需要保存数据包,以供后续使用,则通过指令将内存中的信息转存于抓包设备的本地存储器。
为了数据安全考虑,可对转存出的数据进行加密处理,以避免被人恶意利用。
在上述技术方案的基础上,预设后门,在hook的回调函数里实现。
在上述技术方案的基础上,预设具有访问并使用后门的账户名称,仅该账户名称对应的账号正常登陆后,通过后门查看数据记录信息;
或:预设具有访问并使用后门的账户名称,仅该账户名称对应的账号完全匹配后,通过后门查看数据记录信息;
或:在App内预设后门访问口令,任意用户正确输入口令即启动后门。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (8)

1.一种App内部抓包的方法,其特征在于,包括如下步骤:
Hook***的网络接口,形成用于替代网络接口的自定义接口,
将网络接口替换为自定义接口,
在自定义接口内部记录每个步骤的时间点和数据包,然后再转发给***的网络接口继续处理,
把记录的数据包保存起来,形成数据记录信息,
构建抓包框架,预设后门,通过后门查看数据记录信息。
2.如权利要求1所述的App内部抓包的方法,其特征在于:利用方法变换MethodSwizzling实现Hook***的网络接口,动态改变方法编号SEL和方法实现IMP的对应关系。
3.如权利要求2所述的App内部抓包的方法,其特征在于:所述方法实现IMP,包括创建连接、打开连接、读取数据/写数据、关闭连接和释放连接。
4.如权利要求1所述的App内部抓包的方法,其特征在于:仅针对预设的协议记录每个步骤的时间点和数据包。
5.如权利要求4所述的App内部抓包的方法,其特征在于:所述预设的协议为http协议。
6.如权利要求1所述的App内部抓包的方法,其特征在于:记录的数据包默认保留在内存中,形成数据记录信息。
7.如权利要求1所述的App内部抓包的方法,其特征在于:预设后门,在hook的回调函数里实现。
8.如权利要求7所述的App内部抓包的方法,其特征在于:预设具有访问并使用后门的账户名称,仅该账户名称对应的账号正常登陆后,通过后门查看数据记录信息;
或:预设具有访问并使用后门的账户名称,仅该账户名称对应的账号完全匹配后,通过后门查看数据记录信息;
或:在App内预设后门访问口令,任意用户正确输入口令即启动后门。
CN201811267960.9A 2018-10-29 2018-10-29 一种App内部抓包的方法 Pending CN109446086A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811267960.9A CN109446086A (zh) 2018-10-29 2018-10-29 一种App内部抓包的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811267960.9A CN109446086A (zh) 2018-10-29 2018-10-29 一种App内部抓包的方法

Publications (1)

Publication Number Publication Date
CN109446086A true CN109446086A (zh) 2019-03-08

Family

ID=65549321

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811267960.9A Pending CN109446086A (zh) 2018-10-29 2018-10-29 一种App内部抓包的方法

Country Status (1)

Country Link
CN (1) CN109446086A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110971605A (zh) * 2019-12-05 2020-04-07 福建天晴在线互动科技有限公司 一种通过捕获数据包获取盗版游戏服务器信息的方法
CN114584546A (zh) * 2022-03-07 2022-06-03 南京厚建软件有限责任公司 一种抓取、保存App数据包的方法及***

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102761456A (zh) * 2011-04-29 2012-10-31 腾讯科技(深圳)有限公司 一种获得移动终端浏览器性能参数的方法、装置及***
CN104951375A (zh) * 2015-07-01 2015-09-30 北京博睿宏远科技发展有限公司 基于函数拦截技术的手机app性能数据采集方法
US20160042191A1 (en) * 2014-08-11 2016-02-11 North Carolina State University Programmable interface for extending security of application-based operating system, such as android
CN106845236A (zh) * 2017-01-18 2017-06-13 东南大学 一种针对iOS平台的应用程序多维度隐私泄露检测方法及***
CN108092851A (zh) * 2017-12-22 2018-05-29 北京奇虎科技有限公司 一种用于获取移动终端的网络数据包的方法、设备及***
CN108200026A (zh) * 2017-12-27 2018-06-22 山东华软金盾软件股份有限公司 基于ipv6发送rst阻断包的方法
CN108566358A (zh) * 2017-12-22 2018-09-21 广州赛意信息科技股份有限公司 一种基于iPhone手机下的iOS***网络通信拦截方法及***

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102761456A (zh) * 2011-04-29 2012-10-31 腾讯科技(深圳)有限公司 一种获得移动终端浏览器性能参数的方法、装置及***
US20160042191A1 (en) * 2014-08-11 2016-02-11 North Carolina State University Programmable interface for extending security of application-based operating system, such as android
CN104951375A (zh) * 2015-07-01 2015-09-30 北京博睿宏远科技发展有限公司 基于函数拦截技术的手机app性能数据采集方法
CN106845236A (zh) * 2017-01-18 2017-06-13 东南大学 一种针对iOS平台的应用程序多维度隐私泄露检测方法及***
CN108092851A (zh) * 2017-12-22 2018-05-29 北京奇虎科技有限公司 一种用于获取移动终端的网络数据包的方法、设备及***
CN108566358A (zh) * 2017-12-22 2018-09-21 广州赛意信息科技股份有限公司 一种基于iPhone手机下的iOS***网络通信拦截方法及***
CN108200026A (zh) * 2017-12-27 2018-06-22 山东华软金盾软件股份有限公司 基于ipv6发送rst阻断包的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JOY: "移动端监控体系之技术原理剖析", 《简书》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110971605A (zh) * 2019-12-05 2020-04-07 福建天晴在线互动科技有限公司 一种通过捕获数据包获取盗版游戏服务器信息的方法
CN110971605B (zh) * 2019-12-05 2022-03-08 福建天晴在线互动科技有限公司 一种通过捕获数据包获取盗版游戏服务器信息的方法
CN114584546A (zh) * 2022-03-07 2022-06-03 南京厚建软件有限责任公司 一种抓取、保存App数据包的方法及***

Similar Documents

Publication Publication Date Title
CN106789259B (zh) 一种LoRa核心网***及实现方法
CN103428627B (zh) 物联网***中数据的传送方法、物联网***及相应装置
US9426046B2 (en) Web page download time analysis
CN103368978B (zh) 实现智能移动终端应用漏洞和通信安全检测的方法
CN107133161B (zh) 一种生成客户端性能测试脚本方法及装置
US8116782B2 (en) Communication quality control system
CA2302990A1 (en) Capturing quality of service
CN110995715B (zh) 一种内网https服务的透析访问方法及***
CN109446086A (zh) 一种App内部抓包的方法
US20160204904A1 (en) Service Message Transmitting Method and Device
CN117615043B (zh) 一种边缘网关上服务间通信方法及***
CN114615082A (zh) 一种使用正反向网闸模拟tcp双工安全通讯***和方法
WO2023134312A1 (zh) 内容计费测试方法、管理设备、终端设备及存储介质
CN101465858B (zh) 监控业务中实现私网穿越的方法、网络设备和服务器
CN106302605A (zh) 基于OpenFire服务器的实时消息转发***及实现方法
CN101330664A (zh) 多媒体业务的实现方法、***和装置
KR100427699B1 (ko) Imt-2000시스템에서의 패킷데이터 처리방법
CN109274715A (zh) 车载多通道通信***的平台资源管理***
WO2002047322A2 (en) Management of wap gateway through snmp
CN106533716A (zh) 一种北向接口的管理方法和***
CN100403688C (zh) 一种业务数据包跟踪实现方法
CN113301556B (zh) 用户上网记录保存方法、***和服务器
US11973843B2 (en) On demand end user monitoring for automated help desk support
CN111225389A (zh) 一种移动数据流量处理的方法及装置
CN116669134B (zh) Smf网元与upf网元适配方法、装置、设备及介质

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190308