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

【文艺复兴】JS混淆分析实战某大学Mooc(二)解密/合并字符串

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5999

    回帖

    6784

    积分

    管理员

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

    积分
    6784

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

    发表于 2022-10-20 14:52:36 | 显示全部楼层 | 阅读模式

    前文

    上节我们处理了内存爆破问题
    然后直接提取出来解密字符串
    图片.png
    然后写一下解密字符串代码

    traverse(ast, {
      CallExpression(path) {
        if (path.node.callee?.name === "b") {
          if (path.node.arguments.length !== 2) {
            return;
          }
          let first = path.node.arguments[0].value;
          let second = path.node.arguments[1].value;
          let str_node = types.stringLiteral(ob_func.crp_name(first, second));
          path.replaceInline(str_node);
        }
      },
    });

    可以看到已经解开了
    图片.png
    但是字符串还是来回拼接的
    所以我们用ast给组合一下
    这里直接多循环生成几次代码就好了
    之所以反复parse是因为实践多次操作会导致操作乱七八糟的错误问题(不明
    所以我们反复循环解析再设置
    代码很简单,循环一下就ok

      traverse(ast, {
        BinaryExpression(path) {
          if (path.node.operator === "+") {
            let left = path.node.left;
            let right = path.node.right;
            if (left.type === "StringLiteral" && right.type === "StringLiteral") {
              let str_node = types.stringLiteral(left.value + right.value);
              path.replaceInline(str_node);
            }
          }
        },
      });

    图片.png
    可以看到这时候已经具备一定的可读性了
    图片.png

    结语

    撒花~

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

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

    [LV.7]常住居民III

    305

    主题

    4219

    回帖

    4076

    积分

    管理员

    积分
    4076

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-10-21 11:20:40 | 显示全部楼层
    曲高和寡 呜呜呜
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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