背景:由于okhttp的响应的string方法调用一次就关闭了,如果说逆向抓到response直接调用string的话会导致程序后面无法再利用response导致执行不正常。

思路:response的数据封装在body里面的source里面的,而source是一个Buffer类,可以提供克隆方法用于复制,我们只要clone一下buffer来给我们自己的逻辑使用,就不会影响其他逻辑对于response的使用。

对应的java代码如下

        Response response = client.newCall(request).execute();
        BufferedSource source = response.body().source();
        source.request(Long.MAX_VALUE);
        Buffer buffer = source.buffer();
        String result1 = buffer.clone().readString(Charset.defaultCharset());
        String result2 = response.body().string();
        System.out.println(result1);
        System.out.println("\n");
        System.out.println(result2);

同样的,在逆向的时候,我们只要拦截到response,并且利用frida调用对应的方法,即可把数据复制出来给我们自己使用。

注意:上述的这些方法,在APP里面可能会被混淆成别的名字,所以还要结合逆向代码来分析

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐