cxxjackie 发表于 2021-8-30 21:08:24

辅助脚本:查看全局属性

本帖最后由 cxxjackie 于 2022-9-25 21:17 编辑

此脚本主要用于逆向分析,一键查看所有挂载到window上的非原生属性名,并按照类型分类,同时注入一个$searchKey函数,可在全局属性中(包括其子属性)搜索指定属性名。

## 使用方法

在任意网页上点开油猴下拉菜单(请勿隐藏油猴图标),点击“top”即可,结果输出在控制台。当页面中含有iframe时,脚本将插入多条菜单命令,点击对应命令即可查看对应环境下的属性。以下是百度首页的查看效果:
!(https://bbs.tampermonkey.net.cn/forum.php?mod=attachment&aid=MTE1NnxhNzI1NmI1MXwxNjU5NzEwMDA1fDE0MDgyfDkxNg%3D%3D&noupdate=yes)
当通过断点定位到网页的js代码时,你可能想知道某个对象是否存在全局引用,此时就可以尝试用$searchKey函数搜索其属性名。脚本会将全局属性中的对象和函数进一步展开,获取其下所有属性名用于搜索,控制台输入:$searchKey(属性名) 即可查看搜索结果:
!(https://bbs.tampermonkey.net.cn/forum.php?mod=attachment&aid=MTE1N3wzZjRmNzkyYnwxNjU5NzEwMDA1fDE0MDgyfDkxNg%3D%3D&noupdate=yes)
脚本支持搜索Vue和React注入的属性。当搜索结果不是路径字符串而是对象时,说明该属性来自Vue或React。node为属性对应的页面节点,path为以node为起点搜索到的路径。
指定$searchKey的第二个参数为true可支持模糊搜索(不区分大小写)。

## 注意事项

1. 脚本作用于所有页面,但只有点击了菜单命令后才会运行,不必担心性能影响。
2. 脚本代码头部列出了部分常量和注释,可根据需要自行调整。
3. 不同页面注入$searchKey函数所需的时间不同,这是正常现象。若注入时间过长,建议关闭页面并修改最大搜索深度,以免内存占用过高。
4. id为iframe\_for\_test的iframe是脚本创建的,请勿移除。
5. $searchKey函数用于iframe时要点击对应环境的菜单命令注入函数,然后记得切换控制台的作用域。
6. 属性路径可能会随着时间失效,再次点击脚本菜单即可重新注入。

## 更新日志

<details>
<summary>1.0</summary>
<pre>
初始版本
</pre>
</details>
<details>
<summary>1.1</summary>
<pre>
1. 改动$searchKey函数使其支持更多类型,限制了最大搜索深度以提高速度。
2. 不再展开prototype上的属性,因读取其属性问题多多,弊大于利。
</pre>
</details>
<details>
<summary>1.1.1</summary>
<pre>
修复了一个读取Promise时可能导致的错误。
</pre>
</details>
<details>
<summary>1.1.2</summary>
<pre>
再次修复Promise的错误处理,尝试优化性能。
</pre>
</details>
<details>
<summary>1.1.3</summary>
<pre>
1. 修复了一个读取Proxy等特殊对象时可能导致的错误。
2. 新增模糊搜索。
</pre>
</details>
<details>
<summary>1.2.0</summary>
<pre>
1. 修改Proxy和Promise的处理逻辑,优化性能。
2. 新增最大收集数限制,防止页面卡死。
</pre>
</details>
<details>
<summary>2.0.0</summary>
<pre>
1. 船新2.0版本,代码重构,算法优化,属性更多,路径更短。
2. 新增Vue和React的搜索支持。
3. 注入过程改为异步,不再阻塞页面。
4. 去除最大收集数限制,减小最大搜索深度,以适应新算法。
</pre>
</details>
<details>
<summary>2.0.1</summary>
<pre>
1. 修正搜索React和Vue时的node指向错误问题。
2. 增加2个React忽略属性以避免一些临时路径被收集。
</pre>
</details>
<details>
<summary>2.0.2</summary>
<pre>
新增原型链属性的收集。
</pre>
</details>
<details>
<summary>2.0.3</summary>
<pre>
修复某些路径并非最短,而是指向同一引用的问题。
</pre>
</details>
<details open>
<summary>2.0.4</summary>
<pre>
去除Vue和React路径里的prop,将其合并到路径中。
</pre>
</details>

脚本体验师001 发表于 2021-8-30 21:13:29

不要抢,第一个

李恒道 发表于 2021-8-30 22:38:21

哥哥牛逼!

李恒道 发表于 2021-8-30 22:38:23

哥哥牛逼!

陈公子的话 发表于 2021-8-30 23:10:37

试试看                     

maxzhang 发表于 2021-8-31 08:08:01

ggnb


   

王一之 发表于 2021-8-31 16:55:43

没有太明白用法。。。。。。

懂了,是我没看清楚描述

李恒道 发表于 2021-8-31 17:32:26

王一之 发表于 2021-8-31 16:55
没有太明白用法。。。。。。

懂了,是我没看清楚描述

他这个写法感觉好奇特有没有{:4_86:}

王一之 发表于 2021-8-31 18:22:37

李恒道 发表于 2021-8-31 17:32
他这个写法感觉好奇特有没有

学习!

李恒道 发表于 2021-8-31 18:48:12

王一之 发表于 2021-8-31 18:22
学习!

学不动了学不动了,哥哥别骂了
页: [1] 2 3 4
查看完整版本: 辅助脚本:查看全局属性