关于某个app网络排查历程

问题

一个日本游戏,用自己的游戏电信宽带进不去,一直卡住, 用邻居家(试了俩三个)的或者用移动网络都能正常进去. 既然不行,那我用代理咯,结果代理设了跟没设一样, 能行的设了代理还是可以,自己的宽带还是不行. 很神奇, 所以问题来了,要找出app卡在哪一步请求

思路1

抓包看所有请求.
由于设置代理无效,所以普通抓包也是无效的
用了 wireshark 来抓,好多东西…过滤出所有的 目标ip,发现这些ip都能请求得通… 没找到期望的那个不通的ip

思路2

基于他的请求是绕过代理的,搜了下站内相关 应该是出于俩种方案

  1. 这位老哥的方案[app开发,如何让请求绕开fiddler、Charles等抓包工具 - #14 由 dingronghui],通过NSURLSessionConfiguration 来设置. 所以打了断点,但是都没生效 (我的断点设置应该有问题)1589362753661

  2. socket 请求. 断点了 send 函数,lldb成功进去断点,但是看不懂那些代码…尴尬

我是不是应该hook某些函数来排查会简单点?

NSURLSessionConfiguration

你hook这个把他的绕过代理的改动patch回去就完了

  1. socket 请求. 断点了 send 函数,lldb成功进去断点,但是看不懂那些代码…尴尬

这里面没东西啊,就是syscall让内核处理

hook 了相关的,断点所有 return %orig 都没有走进去

%hook NSURLSessionConfiguration

-(id)init:(bool) _w
{
    return %orig;
}
+ (id)ephemeralSessionConfiguration
{
    return %orig;
}

- (void)setConnectionProxyDictionary:(id)value
{
    return %orig;
}
%end

看来是用了 socket 了, socket不知道要Hook 啥了:joy:

btw, 请教下,xcode lldb 可以监听某个对象的所有函数调用吗?现在 NSURLSession是有被初始化的,我想监听这个对象后续的所有函数调用.


https://developer.limneos.net/index.php?ios=12.1&framework=CFNetwork.framework&header=NSURLSession.h

2 个赞

牛逼 … 这种自动生成所有也是种方法哈哈哈 我试试~