李恒道 发表于 2021-10-7 15:23:27

cxxjackie 发表于 2021-10-7 15:16
console.log(document)就可以触发,我debugger跟了一下油猴的代码,他在读取document的时候会执行一些自 ...
我刚才就是用这种方式测试的
并没有复现
邪门....

![图片.png](data/attachment/forum/202110/07/152402du23ejjgeukieti1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "图片.png")

cxxjackie 发表于 2021-10-7 15:46:35

李恒道 发表于 2021-10-7 15:23

我刚才就是用这种方式测试的
并没有复现


@grantunsafeWindow
大概弄清这个问题了,腾讯文档这个页面本身会对addEventListener进行劫持,用了一种事件委托的机制,将所有事件都委托给public-common这个文件中的一个函数来处理,而油猴在沙盒环境中会在读取document时特殊处理,也劫持addEventListener并将unsafeWindow替换为window,这无意中破坏了原有的事件委托,结果把真实的事件给暴露出来了。。。这还真是,有趣的特性。这篇文章有点不太好改了,姑且将错就错吧哈哈。

李恒道 发表于 2021-10-7 16:10:40

cxxjackie 发表于 2021-10-7 15:46
@grantunsafeWindow
大概弄清这个问题了,腾讯文档这个页面本身会对addEventListener进行劫持,用了一 ...
加了沙盒模式之后复现成功了
劫持addEventListener并将unsafeWindow替换为window
这句话是什么意思
我理解的是
油猴在读取document的时候还原了页面的addEventListener函数是么?
好神奇啊...
我还是第一次碰到这种情况
哥哥也一手FBI Warning
哈哈哈哈哈哈

王一之 发表于 2021-10-7 16:21:42

cxxjackie 发表于 2021-10-7 15:46
@grantunsafeWindow
大概弄清这个问题了,腾讯文档这个页面本身会对addEventListener进行劫持,用了一 ...

不知道tm是怎么处理的,ScriptCat的沙盒会记录最开始的addEventListener(也就是还没被腾讯文档劫持时候的addEventListener),然后如果你在沙盒中使用addEventListener,就是最原始的addEventListener。

cxxjackie 发表于 2021-10-7 16:27:09

李恒道 发表于 2021-10-7 16:10
加了沙盒模式之后复现成功了
劫持addEventListener并将unsafeWindow替换为window
这句话是什么意思


就是他保存了window(油猴自己的)和unsafeWindow(页面原有的)的引用,然后将事件中本应指向unsafeWindow的改为指向window,起到一个保护效果,这个逻辑在页面加载后执行没有问题,但是document-start过早执行就造成了这种奇怪现象。

cxxjackie 发表于 2021-10-7 16:35:43

王一之 发表于 2021-10-7 16:21
不知道tm是怎么处理的,ScriptCat的沙盒会记录最开始的addEventListener(也就是还没被腾讯文档劫持时候 ...

脚本猫试了一下,没有复现,tm这些稀奇古怪的操作真是神奇。

李恒道 发表于 2021-10-7 16:39:32

cxxjackie 发表于 2021-10-7 16:27
就是他保存了window(油猴自己的)和unsafeWindow(页面原有的)的引用,然后将事件中本应指向unsafeWind ...

还是不太理解这种操作。
想不通为什么要这样做
等以后有机会再看看吧...
感觉像是一个有用的bug?

cxxjackie 发表于 2021-10-7 16:46:40

李恒道 发表于 2021-10-7 16:39
还是不太理解这种操作。
想不通为什么要这样做
等以后有机会再看看吧...


我也不太理解,他的代码混淆严重我读的很费劲。这也不能算有用吧,只是在特定情况下打开了潘多拉的魔盒,但是在其他情况下也可能造成错误,还是尽量不要在document-start、document-body这些阶段读取document比较好。

李恒道 发表于 2021-10-7 16:54:11

cxxjackie 发表于 2021-10-7 16:46
我也不太理解,他的代码混淆严重我读的很费劲。这也不能算有用吧,只是在特定情况下打开了潘多拉的魔盒, ...

哥哥要不反馈tampermonkey作者玩玩
太硬了
两节课不到干出来个tampermonkey隐藏特性
哈哈哈

cxxjackie 发表于 2021-10-7 17:00:41

李恒道 发表于 2021-10-7 16:54
哥哥要不反馈tampermonkey作者玩玩
太硬了
两节课不到干出来个tampermonkey隐藏特性


我没有github账号啊,刚好搜到这个issue:
https://github.com/Tampermonkey/tampermonkey/issues/290
我甚至怀疑他是为了解决问题制造出了更多问题哈哈哈。
页: 1 [2] 3 4
查看完整版本: [逆向分析实战]三句话,让腾讯文档为我放下戒备