上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

JS混淆分析实战超星video.js加密

[复制链接]
  • TA的每日心情
    擦汗
    4 天前
  • 签到天数: 194 天

    [LV.7]常住居民III

    719

    主题

    6070

    回帖

    6847

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6847

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-10-19 23:57:56 | 显示全部楼层 | 阅读模式

    郑重声明

    此处超星指代的是本人独立开发的自主单机游戏-》超级星星V0.1版
    并非通俗意义的超星!请勿进行过度联想
    本文全程为自攻自破
    如有雷同纯属巧合

    预览

    图片.png

    开始

    通过观察代码以及动态运行可以发现_0xdd65b4是解密函数
    图片.png
    点进去直接下个断
    图片.png
    然后字符串化一下拷贝出去字符数组
    图片.png
    在nodejs里写出来解密函数,并且parse一下拷贝的字符串
    图片.png
    观察代码发现是一个CallExpression节点
    图片.png
    然后我们直接写一下代码

    traverse(ast, {
      CallExpression(path) {
        if (path.node.callee.name === "_0xdd65b4") {
          let loc = path.node.arguments[0].value;
          let str_node = types.stringLiteral(crp_str(loc));
          path.replaceInline(str_node);
        }
      },
    });

    可以发现已经解开一大堆字符串了
    图片.png
    然后搜索一下,发现还有很多加密的函数调用
    原来是在函数头上做了一下赋值,然后由函数的引用来做加密
    图片.png
    我们丢到Ast看一下,可以发现是一个VariableDeclarator对象
    id是赋值的名字,init是加密的字符串,那我们继续写VariableDeclarator的AST解析吧
    图片.png
    但是根据测试发现一个比较头疼的问题
    他对函数进行了多次赋值,所以我们必须写一个递归遍历的东西
    图片.png
    直接上代码

    function find_and_fuck_crp(path, func_name) {
      let bind = path.scope.getBinding(func_name);
      let refer_list = bind.referencePaths;
      refer_list.forEach((item) => {
        let parent_path = item.parentPath;
        if (parent_path.node.type === "CallExpression") {
          let loc = parent_path.node.arguments[0].value;
          let str_node = types.stringLiteral(crp_str(loc));
          parent_path.replaceInline(str_node);
        } else {
          if (parent_path.node.type === "VariableDeclarator") {
            find_and_fuck_crp(parent_path, parent_path.node.id.name);
          }
        }
      });
      path.remove()
    }
    traverse(ast, {
      VariableDeclarator(path) {
        let func_name = path.node.id.name;
        let init_name = path.node.init?.name;
        if (init_name === "_0xdd65b4") {
          find_and_fuck_crp(path, func_name);
        }
      },
    });

    经过递归遍历我们已经具备了一定的可读性了
    图片.png
    然后发现还有一个加密的函数引用a0_0x1f3a,直接还按刚才的方法
    图片.png
    处理之后删除加密的函数
    再看一下,可以发现已经有了初步的样子
    图片.png
    但是部分字符串里还有混淆
    图片.png
    配置一下generator函数

    let code = generator(ast, {
      minified: true,
      jsescOption: { minimal: true },
    }).code;

    到这里已经具备基本的调试条件了
    剩下的大家也可以根据这个思路进行微妙

    结语

    撒花~

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
  • TA的每日心情
    慵懒
    2023-5-5 13:37
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    117

    主题

    405

    回帖

    711

    积分

    版主

    积分
    711

    油中2周年油中3周年

    发表于 2022-10-20 08:54:02 | 显示全部楼层
    哥哥是懂巧合的
    提及少年一词,应与平庸相斥!
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-11-7 12:01
  • 签到天数: 276 天

    [LV.8]以坛为家I

    18

    主题

    71

    回帖

    204

    积分

    高级工程师

    积分
    204

    油中2周年

    发表于 2022-10-20 09:00:58 | 显示全部楼层
    被超星骗过来的不止我一个人吧
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-8-19 08:16
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    28

    主题

    69

    回帖

    124

    积分

    中级工程师

    积分
    124
    发表于 2022-10-20 09:30:09 | 显示全部楼层
    为什么不叫超级明星??super idol
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-6-12 15:07
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    7

    主题

    91

    回帖

    156

    积分

    荣誉开发者

    积分
    156

    荣誉开发者油中2周年生态建设者喜迎中秋

    发表于 2022-10-20 10:04:37 | 显示全部楼层
    哥哥真刑啊
    回复

    使用道具 举报

  • TA的每日心情

    2022-11-20 10:13
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    1

    主题

    23

    回帖

    45

    积分

    初级工程师

    积分
    45

    新人报道油中2周年

    发表于 2022-10-20 17:59:03 | 显示全部楼层
    ggnb!!!
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-7-25 23:04
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    3

    主题

    58

    回帖

    52

    积分

    初级工程师

    积分
    52

    新人报道

    发表于 2022-11-15 10:15:33 | 显示全部楼层
    ggnb!   YYDS
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-11-27 20:18
  • 签到天数: 52 天

    [LV.5]常住居民I

    0

    主题

    5

    回帖

    26

    积分

    助理工程师

    积分
    26

    新人报道油中2周年

    发表于 2022-11-22 11:27:54 | 显示全部楼层

    ggnb
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-7-25 23:04
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    3

    主题

    58

    回帖

    52

    积分

    初级工程师

    积分
    52

    新人报道

    发表于 2022-12-22 09:50:57 | 显示全部楼层
    ggnb啊
    回复

    使用道具 举报

    发表回复

    本版积分规则

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