type
status
date
slug
summary
tags
category
icon
password
最近心血来潮,想开发一个通杀框架,尽可能的模拟浏览器最真实的环境来执行加密的js文件,并且可以内置一些快捷api,方便我们查找问题和发现问题。
📝 检测点
我们在浏览器中,除了我们自定义的函数或者对象,其实还有自带的函数和对象,都是系统自带的函数,既然他是系统自带的函数,那就会跟我们自己定义的函数会有不同点。有哪些不同点并且我们需要如何来解决这个问题呢?
首先我们先看一下浏览器自带的函数

这里我们不难发现这个函数他是有包含这样的字符串。[native code]
自己定义的函数

从这里我们不难看出,其实我们如果在nodejs里去创建浏览器自带的这些函数那其实是会被检查到的,这也就是我们常说的toString检测,那么我们该如何解决这个问题呢?
解决问题的办法
其实也是比较简单,就是我们可以重写这个浏览器的返回值,来达到对方无法判断出是否是自定义或者浏览器自带。
列如我们针对如上代码的情况,做如下的定义和修改。

那既然我们想到了这个问题来解决这种检查,那浏览器可能有100个函数甚至1000个函数,我们总不能一个一个去写吧,所以我们要想个办法来解决这个问题。
通用方法
首先我们要构造这样的结果,我们需要什么条件?
- 函数的名字。
- 需要修改函数的toString方法。
- 拼接成一个固定值。
所以我们需要对这些条件一一找到。
函数名字获取

我们可以从这里看到函数的名字其实就是这个函数下的name的值。那么我们只要获取这个值就可以了。
修改函数toString方法

其实也比较简单,只要把函数下的.toString就可以对其进行修改了。
拼接结果
这里我们其实可以用模板语法进行拼接,以得到正确的结果或者用+拼接也可以。
效果

我们可以看到,我们定义一个通用的函数,然后把创建的方法每一个都传入到函数里,以得到被我们修改后完善的toString函数在加以返回。
🤗 总结归纳
今天我们主要是针对toString补环境的处理,并且针对如何做一个通用处理这个问题的函数,以便后续的调用和处理。
今天的通杀补环境框架第一章到这里就结束了,后续我会继续更新框架的细节。
- 作者:猿榜编程
- 链接:https://www.yuanbang.lol//article/01fd7baf-f5fc-432b-9a09-172589b0696b
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。