通杀补环境框架
📙从零到一通杀框架构造(一)
00 分钟
2024-8-21
2024-9-3
type
status
date
slug
summary
tags
category
icon
password
😀
最近心血来潮,想开发一个通杀框架,尽可能的模拟浏览器最真实的环境来执行加密的js文件,并且可以内置一些快捷api,方便我们查找问题和发现问题。
 

📝 检测点

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

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

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

自己定义的函数

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

解决问题的办法

其实也是比较简单,就是我们可以重写这个浏览器的返回值,来达到对方无法判断出是否是自定义或者浏览器自带。
列如我们针对如上代码的情况,做如下的定义和修改。
notion image
那既然我们想到了这个问题来解决这种检查,那浏览器可能有100个函数甚至1000个函数,我们总不能一个一个去写吧,所以我们要想个办法来解决这个问题。

通用方法

首先我们要构造这样的结果,我们需要什么条件?
  1. 函数的名字。
  1. 需要修改函数的toString方法。
  1. 拼接成一个固定值。
所以我们需要对这些条件一一找到。

函数名字获取

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

修改函数toString方法

notion image
其实也比较简单,只要把函数下的.toString就可以对其进行修改了。

拼接结果

这里我们其实可以用模板语法进行拼接,以得到正确的结果或者用+拼接也可以。

效果

notion image
我们可以看到,我们定义一个通用的函数,然后把创建的方法每一个都传入到函数里,以得到被我们修改后完善的toString函数在加以返回。

🤗 总结归纳

今天我们主要是针对toString补环境的处理,并且针对如何做一个通用处理这个问题的函数,以便后续的调用和处理。
 
💡
今天的通杀补环境框架第一章到这里就结束了,后续我会继续更新框架的细节。
上一篇
WebAssembly(wasm)逆向记录
下一篇
某东token的由来

评论
Loading...