挑战 V 友发的最强前端加密播放器 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
bigha
0.01D
V2EX    程序员

挑战 V 友发的最强前端加密播放器

  •  6
     
  •   bigha 2023-08-22 17:48:59 +08:00 3671 次点击
    这是一个创建于 867 天前的主题,其中的信息可能已经有所发展或是发生改变。

    关联的帖子在这里

    t/967324

    个人有个不太好的习惯,有人发这个解密游戏,非要搞出来不可,否则心里别扭!

    第一个网站真实的播放地址,用的是 wasm 这种解密方式,研究了半天,最后找不到入口函数

    就这样放弃?不,我默默的拿出来自己曾经看到过的 RPC 框架

    具体步骤如下:

    1 、RPC 框架下载地址

    https://pan.baidu.com/s/19TyURN-wpqGUYBy1P025ew?pwd=6mu3

    解压缩后,如果是 windows ,那就 bat 直接启动即可,注意需要 java 环境

    2 、随便打开一个视频网页,F12 ,然后添加 XHR 断点 ,然后去刷新网页,不出意外会被断住

    https://api.yangtu.link/v2/jx1

    然后在控制台 console 输入下面的代码

    (function() { 'use strict'; // Your code here... var _mscript=document.createElement("script") _mscript.src="https://sekiro.iinti.cn/sekiro-doc/assets/sekiro_web_client.js" document.body.appendChild(_mscript); function sek_start(){ function guid() { function S4() { return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); } return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4()); } var client = new SekiroClient("ws://127.0.0.1:5620/business-demo/register?group=test&clientId=" + guid()); client.registerAction("ojbk", async function (request, resolve, reject) { try { var e=request['url'] const s = window.encrypt(`${e}|${Math.floor(Date.now() / 1e3)}`); const n = await Ut(`/v2/jx1`, s, "POST"); if (n.code == 200) { var sss = window.decrypt(n.url); } var jsOnResult= {url:sss} console.log(JSON.stringify(jsonResult)); resolve(JSON.stringify(jsonResult)); } catch (e) { reject("error: " + e); } }); } setTimeout(sek_start,2000) })(); 

    然后把断点取消掉,直接点放行,注意网页别关闭

    3 、直接就拿到真实地址了

    import requests r=requests.Session() pdata={ 'group':'test', 'action':'ojbk', 'url':'https://v.qq.com/x/cover/mzc002003rpvd4j/w0046a3hh1v.html' } respOnse=requests.get("http://127.0.0.1:5620/business-demo/invoke",params=pdata) print(response.text) 

    4 、进阶的玩法

    把框架部署到服务器,那个 F12 别关,就可以一直薅它的 API 接口了,

    上面 js 脚本也可通过别的方式注入,例如油猴之类

    所谓的最强加密播放器也不是没办法破解

    11 条回复    2023-09-04 15:12:38 +08:00
    danbai
        1
    danbai  
    PRO
       2023-08-22 18:01:22 +08:00
    MeMoDiv
        2
    MeMoDiv  
       2023-08-22 18:21:12 +08:00
    围观吃瓜
    hsuehly
        3
    hsuehly  
       2023-08-22 18:32:57 +08:00
    如果上 debugger 断点你怎么办
    kuanat
        4
    kuanat  
       2023-08-22 19:44:39 +08:00
    RPC 对于没有混淆的代码来说很好用。


    @hsuehliuyang 过 debugger 方法太多了,浏览器内的话方法重载、条件断点、源文件 overrride 都行。浏览器之外的话,重编译一个修改了 js 引擎 debugger 方法的版本。
    gzlock
        5
    gzlock  
       2023-08-22 20:08:47 +08:00
    @hsuehliuyang #3 debugger 的断点功能 在开发者工具里可以禁用的
    以 edge 为例,最右的按钮点下去后,debugger 的断点功能就废了
    https://dd.ci/file/69df3e23a66ebaa496ee0.png
    bigha
        6
    bigha  
    OP
       2023-08-22 20:14:44 +08:00
    @hsuehliuyang

    上面两个大佬都说了,过 debugger 的方法确实很多,这里就总结下遇到的各种类型吧

    1 、时间类型,就是判断你打开 F12 时间,如果停留几秒,马上关闭你浏览器

    解决:这种调试时直接修改下时间就能解决

    2 、代码里穿插各种的 debugger ,各种乱入

    解决:js 全局替换掉 debugger 关键字 ,然后源文件 overrride

    3 、打开 F12 就开始疯狂往内存里写东西,然后让你浏览器卡死

    解决:从加载 js 代码就开始调试,慢慢找到相关代码,然后按照上面大佬说的搞掉

    4 、常规的 debugger hook 方法

    ```
    Function.prototype.constructor_ = Function.prototype.constructor;
    Function.prototype.cOnstructor= function (a) {
    if(a == "debugger") {
    return function (){};
    }
    return Function.prototype.constructor_(a);
    };
    ```
    hsuehly
        7
    hsuehly  
       2023-08-22 20:15:27 +08:00 via iPhone
    @gzlock 学到了,但是 op 发的方法好像调用不了几次就不行了
    bigha
        8
    bigha  
    OP
       2023-08-22 22:02:29 +08:00
    @hsuehliuyang

    估计后端有啥限制,目测是请求 10 次就不行了

    用下面这个代码替换掉 [https://img.huxiucdn.com/article/content/202308/19/230935899090.js]

    https://code.ping8.top/KOJuh-yUAZc/raw

    然后随便打开个播放页,用油猴让网页 30 秒自动刷新一次即可
    chancat
        9
    chancat  
       2023-08-23 16:26:59 +08:00 via Android
    看看干嘛的
    PlG5sBkXD1ziLeGB
        10
    PlG5sBkXD1ziLeGB  
       2023-09-02 22:38:07 +08:00 via iPhone
    @hsuehliuyang 这个算法挺复杂的,前 9 个字节是 3 固定6 随机,真正的密文是后面的,
    每 16 个字节一组经过了两次变换,中间各种查表位运算,应该是凯撒密码的变种?
    不得不说 wasm 让前端逆向难度上升了许多,跟汇编差不多,但指令比汇编少
    hsuehly
        11
    hsuehly  
       2023-09-04 15:12:38 +08:00
    @yyf1234 大佬是如何看出前 9 个是随机的呢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3157 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 13:11 PVG 21:11 LAX 05:11 JFK 08:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86