java入参为方法_使用Frida重写Java层方法并打印返回值

在分析同程旅行apk登录协议时,通过Frida Hook一个频繁调用且参数复杂的Java方法。由于方法调用过于频繁,直接Hook无法清晰定位目标参数。因此,采用Frida重写该方法,同时打印入参和返回值以建立对应关系,便于参数分析。文中展示了重写Java方法的Frida脚本和具体操作步骤,最终成功找到关键参数与返回值的对应关系。
摘要由CSDN通过智能技术生成

f95c505a5c9866e9f13b4e90bbd23bf8.png

直接说场景,这个套路适合用于Hook某个调用太频繁的方法时,无法找到相应的入参和返回值对应关系的场景,用本文的套路可以相对轻松的找到目标方法的入参和返回值对应关系。

问题描述:

在研究同程旅行这个apk的登陆协议时,经过一顿操作,我发现发包时在headers内的关键参数只有reqdata,算法很容易,我已经抠出来了,但是呢我需要知道这个方法入参,可是这个方法入参很复杂,回溯起来麻烦的不行,如下:

0a77e70699809b64cf9216ca42fce840.png

入参为某个请求的body和一个字符串拼接,本来想着直接Hook看参数是啥,但是呢,这个方法调用极度频繁,我用Frida进行Hook时候发现:

b40d2b9c5e4f516f9823346bfe0d53a9.png

一页都容不下,满满登登整个屏幕都是字符串,大概有三五页,看的人热血沸腾...这个方法调用的实在是太频繁了,导致我完全不知道哪一个入参是我想要的东西,所以,我的想法是使用Frida重写这个方法,将入参和返回值一起打印出来,这样就有对应关系了,有了对应关系我就可以愉快的分析参数了,抓包如下:

4e312096bf5f1831f456c09794b3a5cf.png

红箭头是我想要的参数,Hook的全部代码如下(为了方便抓包,我把绕过SSL Pinning的脚本也集成进来了):

Java.perform(function () {
        var myHookSxx = Java.use("com.tongcheng.netframe.serv.a.d");    myHookSxx.a.overload('android.content.Context').implementation = function (a) {
            return "";    }    var myHooksecsign = Java.use('com.tongcheng.security.sign.SecuritySign');    myHooksecsign.a.implementation =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值