UltraDebug

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: A C D R G Y M Z X S P
公益项目,接受捐赠
查看: 1597|回复: 0
收起左侧

[Web逆向] 某影视站加密js的还原及自动化获取真实视频地址

[复制链接]
JackStar

主题

0

回帖

UD

新手上路

UID
84
积分
25
注册时间
2022-7-31
最后登录
1970-1-1
2022-8-7 22:27:18 | 显示全部楼层 |阅读模式

地址 : aHR0cHM6Ly93d3cuNWR5NS52aXAvdm9kcGxheS85MTA5Ny02LTEuaHRtbA==

一.分析执行流程🤭

1.干掉debugger反调试

  • 首先打开f12后 进入上面的地址,会出现如下的情况
    某影视站加密js的还原及自动化获取真实视频地址 - JackStar_UltraDebug

  • 这里我采用最简单的方案干掉他,点击这个忽略断点,就不会进入此debug,但是会有另一个问题 ,就是cpu使用率是变高,但是因为我们只分析执行流程,找到关键的js,所以这里就无所谓了
    某影视站加密js的还原及自动化获取真实视频地址 - JackStar_UltraDebug

2.分析谁发起了index.m3u8的调用

  • 我这边因为分析过多次,发现每次再请求.m3u8之前,都会有一次webscoket的请求,那么断定websocket一定是非常重要的
    某影视站加密js的还原及自动化获取真实视频地址 - JackStar_UltraDebug

    其实在这里我们已经拿到了m3u8的视频地址,但是只拿到m3u8的地址不是咱们的目的。

  • 当我们点击上图右边蓝色链接进入这个main.js的这个js文件中发现,他是加密的如下图
    某影视站加密js的还原及自动化获取真实视频地址 - JackStar_UltraDebug

    其实也可以侧面的反应出,我们的推断是没错的。  如果不是非常重要的东西,他基本不可能加密

3.不正常的代码

  • 当我们再网页上格式化之后,会发现很多不太正常的代码,如下图
    某影视站加密js的还原及自动化获取真实视频地址 - JackStar_UltraDebug

    我们发现这个图的很多代码的格式他是不正确的
    例如803行的if语句,如下图
    某影视站加密js的还原及自动化获取真实视频地址 - JackStar_UltraDebug

    • 当我们把光标放到左变括号的时候,他右边的括号高亮的居然也是一个左括号,同时他的最后边没有任何括号。
    • 我们知道再程序开发中,括号都是成对出现的,不可能出现这种所谓的左括号 的右边还是左括号的情况,但是他这里得代码缺没有任何得报错,说明这个代码本身是没有任何问题得。
    • 那么产生这个问题的原因其实很简单,我们知道再ascii中有一个特殊的字符,这个字符的功能就是会将在他之前的各种字符串进行反转,然后加密就使用了这个字符来扰乱我们的分析。

二.还原代码😅

我们将main.js的代码复制下来,然后开始进行还原,我是复制了两份一份是没有格式化的代码,另一分是格式化过的代码。

1.环境问题

  • 需要node环境
  • 安装babel

2.大致分析一下js代码

  • 我们可以看到整个_0x3a74这个函数一共有1041个之多,说明这个函数就是解密字符串的重要函数
    某影视站加密js的还原及自动化获取真实视频地址 - JackStar_UltraDebug

3.抽取解密函数

  • 我们将这个_0x3a71的函数包括他之前的所有代码全部复制出来保存到名叫decrypt.js的文件中。
    某影视站加密js的还原及自动化获取真实视频地址 - JackStar_UltraDebug

  • 然后再decrypt.js文件末尾增加两个导出,以供我们代码调用使用
    某影视站加密js的还原及自动化获取真实视频地址 - JackStar_UltraDebug

4.第一次还原

4.1 还原代码如下

const parser = require("@babel/parser");
const template = require("@babel/template").default;
const traverse = require("@babel/traverse").default;
const t = require("@babel/types");
const generator = require("@babel/generator").default;

const path = require("path");
const fs = require("fs");

const {decryptStr,decryptStrFunName } = require("E:\\desktop\\2\\decrypt.js");
let filepath = "e:/desktop/main.js";

fs.readFile(filepath,{"encoding":"utf-8"},function(err,data) {
        const ast = parser.parse(data);
        step(ast);

        let {code} = generator(ast);
        fs.writeFile("e:/desktop/main1.js",code,err => {
                if(err) throw err;
                console.log("保存成功");

        });
});

function step(ast) {
        traverse(ast,{
                CallExpression: ObjToStr,
        })
}

function ObjToStr(path) {
   let node = path.node;
&nbs
还有更多的精彩内容,作者设置为付费后可见

Extractor.7z

3.96 KB, 下载次数: 2, 下载积分: UD -2

UltraDebug免责声明
✅以上内容均来自网友转发或原创,如存在侵权请发送到站方邮件9003554@qq.com处理。
✅The above content is forwarded or original by netizens. If there is infringement, please send the email to the destination 9003554@qq.com handle.
回复 打印

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|站点地图|UltraDebug ( 滇ICP备2022002049号-2 滇公网安备 53032102000034号)

GMT+8, 2025-6-18 06:23 , Processed in 0.041268 second(s), 12 queries , Redis On.

Powered by Discuz X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表