美文网首页
ios逆向监听网络请求 AFHTTPSessionManager

ios逆向监听网络请求 AFHTTPSessionManager

作者: Faith_K | 来源:发表于2019-07-29 10:18 被阅读0次

前言

第一步

首先需要一个砸过壳子的ipa包。获取砸过壳子ipa一种是通过PP助手下载,另一种则是用一台越狱手机把里面的ipa给拿出来。网上相关资料有很多。

2. 安装MonkeyDev

其实为什么安装MonkeyDev呢?MonkeyDev是集成与OpenDev的,但是OpenDev在13年就不在更新了,所以AloneMonkey就在此基础上做了进一步的更新,而且更加简单,更加傻瓜式.具体安装步骤可以查看原文博客.

MonkeyDev原文安装链接

安装完成之后,在新建项目的时候就会有如下的模块.

image.png
使用MonkeyDev创建动态调试工程
具体 使用 MonkeyDev 方法请参照 http://www.alonemonkey.com/2017/06/28/monkeydev/

3 编写代码

CHDeclareClass(AFHTTPSessionManager)
CHMethod5(NSURLSessionDataTask *, AFHTTPSessionManager, POST, NSString *, arg1, parameters, id, arg2, progress, id, arg3, success, id, arg4, failure, id, arg5){
    
    NSLog(@"-------POST---当前请求地址-%@-----当前请求参数--%@",arg1,arg2);
    
    return CHSuper5(AFHTTPSessionManager, POST, arg1, parameters, arg2, progress, arg3, success, arg4, failure, arg5);
}


CHMethod5(NSURLSessionDataTask *, AFHTTPSessionManager, GET, NSString *, arg1, parameters, id, arg2, progress, id, arg3, success, id, arg4, failure, id, arg5){
    
    NSLog(@"----GET------当前请求地址-%@-----当前请求参数--%@",arg1,arg2);
    
    return CHSuper5(AFHTTPSessionManager, GET, arg1, parameters, arg2, progress, arg3, success, arg4, failure, arg5);
}




CHConstructor{
    CHLoadLateClass(AFHTTPSessionManager);
    CHClassHook5(AFHTTPSessionManager, POST, parameters, progress, success, failure);
    CHClassHook5(AFHTTPSessionManager, GET, parameters, progress, success, failure);

    
}

可以看到当前请求的URL 跟参数 我们当前 Hook 的的是 AFHTTPSessionManager 里面的 POST 请求与GET请求方法,很清楚的可以看到APP发送的网络请求以及参数。


image.png
image.png

5 如果二进制文件里 有集成 AFNetworking 怎么调用呢

   
typedef void (^afNSuccess) (NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject);
typedef void (^afNError) (NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error);      
    
 Class classAf = NSClassFromString(@"AFHTTPSessionManager");
        //获取 AFHTTPSessionManager单利
        NSObject *sessionManager =  ((NSObject * (*)(id,SEL))objc_msgSend)((id)classAf,@selector(manager));
        
  NSDictionary *dicSuccess = @{
                                      };              
  NSString *url = @"";

             
   ((void(*)(id, SEL,NSString*,NSDictionary*, id,afNSuccess,afNError)) objc_msgSend)(sessionManager, @selector(POST:parameters:progress:success:failure:),url,dicSuccess,nil,^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject){
                   
     NSLog(@"--afNSuccess---%@",responseObject);
    
              
  },^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error){
                    NSLog(@"--afNError---%@",error);

                
});

以上只是抛砖引玉,当然了也可以分析其他方法。

相关文章

网友评论

      本文标题:ios逆向监听网络请求 AFHTTPSessionManager

      本文链接:https://www.haomeiwen.com/subject/ffyvrctx.html