【最新版JS逆向】有道翻译

逆向目标

目标:X道翻译

主页:aHR0cHM6Ly9mYW55aS55b3VkYW8uY29tLw==

接口:aHR0cHM6Ly9kaWN0LnlvdWRhby5jb20vd2VidHJhbnNsYXRl

逆向参数: Form Data中的sign值

逆向过程

抓包分析

       首先,F12打开开发者工具看看我们在翻译的过程中都进行了那些请求,判断哪些请求是我们需要的。多次翻译测试发现每次翻译都会发送这三个请求,根据请求内容可以判断出弟二次请求是我们需要的翻译接口。

请求参数分析

      图片中没有说明的都是多次请求之后发现是固定值

逆向分析

     根据上述分析可以明确我们需要逆向的内容是sign值

  1. 接下来我们对目标接口的请求的调用堆栈进行断点,进入堆栈后对应的行打上断点。

     2. 打完断点后重新输入需要翻译的内容会断在刚刚打上的断点处

        3. 此时我们需要分析堆栈信息向上(代码调用顺序从下往上,我们需要从上往下查看)进行寻找,根据分析我们能定位到sign值生成的地方,我们需要继续在此打下断点进行调试。

        4. 重新打算断点先放行所有断点,等页面渲染完成后,重新输入翻译内荣,发现确实能够在此断住,那就说明这里是生成sign的地方。这里我们需要按F8对断点放行一次,原因需要自己向上跟一次堆栈可以发现第一次生成的sign不是给我们需要的接口生成的,只有第二次生成的才是,并且加密函数S中的参数值俩次都不一样但是每次都是固定的(稍微跟一下堆栈就可以发现),下面图一是第一次生成,我们选择放行,直到图二。

        5. 根据图二中的内容可以分析得出函数S是生成sign的函数,并且参数e是固定值,参数o是时间戳。

        6. 接下来我们把sign生成逻辑扣下来到本地并运行

        7. 上述代码运行后发现函数S未定义,我们需要找到该函数,找到后将代码扣下来后继续运行,发现缺少变量d和u,这时我们需要向上查看代码,在函数S的作用域内查找可以发现来个变量是定值。

        8. 根据上面步骤重复操作直到出现对象i未定义, 这时我们找到定义对象i的位置发现对象i是由o(91565) 生成。

        9. 这时我们发现有很多由函数o调用生成的对象,并且我们把鼠标放上去发现他是一个定值,这显然不是这个函数o,这时当前作用域内是我们刚刚断点的位置不是函数o执行的作用域内,所以我们需要找函数o是哪个,这里我们需要在这打上断点并且刷新页面。

        10. 刷新后会定位在下图所示处,跟进函数o,分析代码结构可以发现这是一个webpack格式,并且函数o是启动函数。

        11. 接下来我们需要开始扣代码,首先我们扣下生成sign值的函数。

        12. 接下来改造webpack,并且出去启动函数,这边导出启动函数赋值为o1,并且在启动函数插个桩,这个主要是用来查看他调用了哪些函数,删除了对象e的内容,这里面存放调用的函数。

        13. 放入ide运行,记得修改函数o为o1,运行后报错且刚刚插桩位置输出调用的函数。

        14. 再回到开发者工具在这俩个文件夹搜索这个函数并补到对象e中。然后继续运行。

        15. 循环步骤14直到出值,这里需要有耐心,新版是真的多补了半个多小时,纯苦力活。

完整代码

        Github

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值