跳转至

运行 JS 的推荐方式

前言

V8 是什么?为什么需要它?

v8JavaScript 引擎中的一种。

当在 js 逆向项目中,使用鬼鬼 js 调试,乐易助手,或补环境框架等等工具调试时,会遇到在工具中正常执行,但是在本地运行时:比如用 node 运行或者使用 python 执行 js 的各种第三方库运行时(比如:PyExecjsjs2py)却无法正常得到值,会出现各种莫名其妙的错误。

这些调试工具使用的都是纯净 v8 环境,当我们使用工具调通后其实就算完成了,谁都不想为了 nodepy 第三方库等再修改一遍。网上的 node_vm2 库的解决方法也并非能解决所有问题。PyMiniRacer 目前也是可以完美解决此问题,且更方便。只是直接编译 v8 是彻底杜绝了此问题的发生。

注:如果 python 的各种第三方库运行 js 报错(前提在纯净 v8 中运行正常)的话,是因为其库依赖的 v8 引擎版本过低导致的。

D8 又是什么?

D8 是一个非常有用的调试工具,你可以把它看成是 debug for V8 的缩写。我们可以使用 d8 来查看 V8 在执行 JavaScript 过程中的各种中间数据

运行 js 的推荐方法是什么?请按照场景自行选择

所以,目前我推荐自编译 v8 运行 js,或者 python 场景下可次级选择 PyMiniRacer 来快速实现。

以下是使用 d8 进行调试和运行 js 的说明。

1. 前提条件

PyMiniRacer 的实现方式不再介绍,请查看官方文档。

  • D8 运行的方式:

  • 安装 D8

  • 环境配置:可不用配置

  • 编译 v8 的方式

  • 请查看网上的相关文章说明。

2. 注意事项

Linux 安装 d8 时如果报以下相关的错误信息时:

/lib64/libc.so.6: version `GLIBC_2.18' not found (required by /lib64/libstdc++.so.6)

请安装 glibc-2.18 以上版本解决,参考指令如下:

# 下载 glibc-2.18
curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
# 解压
tar zxf glibc-2.18.tar.gz
cd glibc-2.18/
# 注意:一定要有 build 的名称目录
mkdir build
cd build/ .
../configure --prefix=/usr
make -j2
make install

3. 使用方法

以下给出简单示例:

// test.js
function add(x, y) {
  var z = x + y;
  return z;
}
console.log(add(1, 2));

则对应调用方法为:

./d8 ./test.js

参考文献

评论

回到页面顶部