断点调试与插桩方法(以某音a_bogus为例)

以接口aweme/v1/web/aweme/post/为例(这是用户作品列表的接口),这个接口是GET请求,我们要找到a_bogus参数的生成位置。

XHR/提取断电

这种断点方式能够在发包上断住,一般是send方法
在这里插入图片描述
添加后发起请求就行在发包位置debugger
在这里插入图片描述
大家可以根据调用堆栈一步一步回调,一般来说接口肯定是在发包前生成好的,当然也可以锁定到bdm.jse这个堆栈,按自己的经验可以进行尝试
在这里插入图片描述

添加断点

双击bdm.js的第一个e就能跳转到它的执行位置,添加断点,让程序执行到这一步
在这里插入图片描述
这里我们要留意一下apply这个函数,它允许你调用一个函数,同时可以为这个函数指定 this 值(函数运行时指向的对象),我们可以简单理解它能进行赋值,这里我们没法直接得到它的结果
在这里插入图片描述

添加日志

从这里开始下面的操作就是所谓的插桩了,利用插桩可以让程序吐出日志信息,按下图方式添加s.apply(b, u)的日志点,运行过程中会自动打印s.apply(b, u)的值
在这里插入图片描述
重新发包后,在控制台就能看到打印出了几种数据格式,其中第一个红框就是aweme/v1/web/aweme/post/接口后面的参数,不过没有a_bogus参数,但是第二红框的数据结构跟a_bogus参数是一样的,所以我们大胆推测这个就是a_bogus的值,只要通过对比请求接口参数就能确定了。
在这里插入图片描述

添加条件断点

上面我们知道了a_bogus的生成位置,但是我们得知道它是哪一个生成的才能知道固定的生成代码,所以我们要把日志断点改成条件断点

在原来的基础上进行修改断点,改成条件断点,然后输出s.apply(b, u) && s.apply(b, u).length == 160
这段代码的用意是,我们知道了a_bogus的长度是160(注意:我调试是160,但是大家可能会不一样,自己计算得到就行),当有生成值且值的长度是160时断住
在这里插入图片描述
重新发包并断住后,可以看到这就是我们想要的
在这里插入图片描述
然后单步调入或者F9进行下一步调试
在这里插入图片描述
这个就是实际的生成位置了,控制台打印一下就能佐证了。
在这里插入图片描述

感谢观看,讲解到此结束~~~

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九月镇灵将

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值