去哪儿网机票服务请求体bella值逆向

本文讲述了如何通过调试追踪,识别并解密JavaScript中的混淆代码,重点关注变量处理、动态JS特性、ob混淆以及关键变量如piccolo和shirley的分析过程。作者强调了找准加密位置、代码修改和引入库的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

一、加密定位

        直接全局搜索bella,在可疑的地方下断,很容易就能断到这个位置。

       

        跟进bella这个方法,发现是混淆代码,在return处下断,发现走try里的return。

 

        继续跟进这个方法在方法内所有return处下断,很容易就来到了真正加密的位置。

二、扣代码

        把该函数内和return变量有关的先扣下来

function get_bella(){
      var _0x24fe7b = _0x318499(_0x481ca8);
                var _0x33dbda = (0x0,
                _0x5b06ff[_0x5a69('0x8a')])();
                var _0x1cf816 = _0x161da4[_0x5a69('0x8a')][_0x5a69('0x9a')](_0x33dbda, {});
                var _0x4051b6 = (0x0,
                _0x38cd63[_0x5a69('0x8a')])(JSON[_0x5a69('0x70')](_0x1cf816), _0x3d0fe0[_0x5a69('0x8a')]);
                var _0x2fa5d6 = (0x0,
                _0xd98ca5[_0x5a69('0x8a')])();
                var _0x15c03b = _0x24fe7b['bParam'] + _0x4051b6 + _0x2fa5d6 + JSON[_0x5a69('0x70')](_0x24fe7b[_0x5a69('0x688')]);
                var _0x5e754e = _0x5625ac[_0x5a69('0x8a')][_0x5a69('0x111')](_0x15c03b);
                var _0x15b51a = window['june_v'] + '##' + _0x5e754e + '##' + _0x4051b6 + '##' + _0x2fa5d6 + '##' + _0x24fe7b[_0x5a69('0x688')];
}

console.log(get_bella());   

        因为是动态js,刷新重新下断,把我们所扣的代码都下上断,开始调试。

2.1 第一个变量

        调用一个函数,传入的是明文数据,就是请求体的数据,对其处理变成键值拼接成一个键,所有键合成一个列表成一个键。直接改写,或者把这个方法扣下来。我们采用扣这个方法。因为比较好扣,只需要扣下这种ob混淆的大数组,偏移自执行函数和调用函数就可以了。而且针对ob混淆,这些一般都是要扣下来的

2.2 第二个变量

        输出发现生成的一个大数组,刷新两次发现只有piccolo和shirley这两个是变化的,这个方法没有传变量,跟进这个方法又发现取了环境变量的东西,扣的话肯定要补环境的,补环境还是比较头疼的,我们先写死,看后面的情况,如果也要补环境就补,不补的话就找piccolo和shirley这两个生成的地方。

2.3 第三个变量

        这个变量发现就是把上一个变量简单的变成来键值的对象

        那就简单了,扣这个函数试试,如果简单就扣下来,麻烦的话就重写。发现补了这个方法后就直接出了结果。

2.4 第四个变量

        调用一个函数,传入两个参数,第一个参数是上一步生成的,第二个参数刷新几次发现是个定值。就剩扣这个函数了。补了两个函数和一个location里href的环境就通过了

2.5 第五个变量

        是调用一个函数,没有传参数,跟进这个函数发现;randon字眼,那就是随机值了,控制台运行几次确实时变化的,看来可以写死了。不想写死就扣下来也很简单。

2.6 第六个变量

        这个变量没有要扣的,都是上几步生成的。

2.7 第七个变量

        是调用一个函数,传入上步生成的变量,进入这个函数,发现是HmacSHA1摘要算法,那就先直接引库,然后验证是否是标准算法。这个算法需要有key,key就是函数上一行生成额,扣下来

        把传入参数写成和服务器一样的,验证发现结果和服务器一样,说明是标准算法,我们写死没有问题。

2.8 第八个变量

        终于到了最终生成的值语句了,就是把上几步生成的变量加载一起,其中第一个window['june_v']是这个jis包开始直接赋值的,

别高兴,我们在扣第二个变量可是写死的,其中piccolo和shirley这个变量可是变化。

三、 piccolo和shirley变量

3.1 piccolo

        发现其是调用一个没有传参的函数。

        跟进这个函数发现是走的else分支。

        直接扣下来,补两个函数发现就完成了。但是要注意,里面取来时间戳,还有个random随机值,这两个都是变化的,影响其他变量的验证。

3.2 shirley

        这个发现是取的window里的属性shirley。

        那就直接hookwindow属性,最终发现是一个请求页面返回的

        那就直接用python请求,然后正则匹配出来吧。

        至此,代码扣完!

        整体来说这个加密还是比较简单的,关键点是找准加密位置,能改写就改写,能引库就引库,代码简单就扣代码。千万别硬钢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值