<aside> 😀 最近心血来潮,想开发一个通杀框架,尽可能的模拟浏览器最真实的环境来执行加密的js文件,并且可以内置一些快捷api,方便我们查找问题和发现问题。

</aside>

📝 检测点

我们在浏览器中,除了我们自定义的函数或者对象,其实还有自带的函数和对象,都是系统自带的函数,既然他是系统自带的函数,那就会跟我们自己定义的函数会有不同点。有哪些不同点并且我们需要如何来解决这个问题呢?

首先我们先看一下浏览器自带的函数

image.png

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

自己定义的函数

image.png

从这里我们不难看出,其实我们如果在nodejs里去创建浏览器自带的这些函数那其实是会被检查到的,这也就是我们常说的toString检测,那么我们该如何解决这个问题呢?

解决问题的办法

其实也是比较简单,就是我们可以重写这个浏览器的返回值,来达到对方无法判断出是否是自定义或者浏览器自带。

列如我们针对如上代码的情况,做如下的定义和修改。

image.png

那既然我们想到了这个问题来解决这种检查,那浏览器可能有100个函数甚至1000个函数,我们总不能一个一个去写吧,所以我们要想个办法来解决这个问题。

通用方法

首先我们要构造这样的结果,我们需要什么条件?

  1. 函数的名字。
  2. 需要修改函数的toString方法。
  3. 拼接成一个固定值。