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

[油猴脚本开发指南]油猴的本质以及document的处理(四)

[复制链接]
  • TA的每日心情
    开心
    2 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

    354

    主题

    3128

    帖子

    3129

    积分

    管理员

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

    Rank: 10Rank: 10Rank: 10

    积分
    3129

    猫咪币纪念章国庆纪念章中秋纪念章荣誉开发者家财万贯管理员

    发表于 2022-6-10 23:42:03 | 显示全部楼层 | 阅读模式

    I函数分析

    接下来我们执行到了I函数
    图片.png
    这里太长就不截图了
    s是document
    i是固定值2
    c是fileterEvent函数,具体作用不知道~
    图片.png
    我们一步一步往下走
    首先声明了一个m函数
    图片.png
    然后执行
    图片.png
    其中b是forEach函数
    而T是一个数组
    内包含
    图片.png
    回调则是
    e=>{
    e.object === s && (l = !0)
    }
    这里说实话意义不明,但是我们大概知道了T包含了addeventlistener等函数
    然后我们通过常量l保存了document,以及addEventListener函数以及removeEventListener函数
    图片.png
    然后执行C函数
    图片.png
    根据结果可知
    将油猴的函数和原生函数分别堆到了数组内,代理在前,原生在后
    图片.png
    然后声明了一个数组一个函数
    图片.png
    重头来了,对document的removeEventListener进行了劫持
    图片.png
    然后声明一个w函数
    图片.png
    再对document的addEventListener进行劫持
    图片.png
    这里是劫持后的函数的tostring进行劫持,让其返回native code,装作是原来的函数
    图片.png
    那么我们的I函数就执行完了

    I函数总结

    对addEventListener以及removeEventListener进行了复写

    结语

    太长,继续撒花

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。

    发表回复

    本版积分规则

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