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

【油猴开发指南】关于Vue3的劫持注入点(二)

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2024-10-16 20:38:00 | 显示全部楼层 | 阅读模式

    除了从createApp的Object.assign劫持外
    通过观察还可以发现use也是开发者常用的API
    其源代码为

              use(plugin, ...options) {
                if (installedPlugins.has(plugin)) {
                  warn$1(`Plugin has already been applied to target app.`);
                } else if (plugin && isFunction(plugin.install)) {
                  installedPlugins.add(plugin);
                  plugin.install(app, ...options);
                } else if (isFunction(plugin)) {
                  installedPlugins.add(plugin);
                  plugin(app, ...options);
                } else {
                  warn$1(
                    `A plugin must either be a function or an object with an "install" function.`
                  );
                }
                return app;
              }

    可以看到使用了installedPlugins而该变量是一个WeakSet

    const installedPlugins = /* @__PURE__ */ new WeakSet();

    可知针对WeakSet进行劫持得到Plugin,对Plugin进行一层包装依然可以实现夺取appContext对象

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

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

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

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

    发表于 2024-10-17 09:37:27 | 显示全部楼层
    ggnb!又突破一个点了
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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