美文网首页
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