JS 逆向

Python 调用 JS 代码

配置环境
  • 需要安装 pyexecjs
pip install pyexecjs
  • 需要下载 NodeJS,它是一个 JavaScript 的编译器,内置了 V8 Chrome 引擎

Node.js 官方下载地址:https://nodejs.org/en/(安装过程最后的选项,打个勾)

  • 最终测试(运行结果为 Node.js (V8) 说明环境正常)
import execjs
print(execjs.get().name)
使用指南

首先要准备一个 js 文件,里面有变量和待调用的函数

str = "123456";
function fn(a, b) {
  return a + b;
}

建议先使用 NodeJS 直接运行确保正常(node test.js),再使用 Python 调用它,下面是调用模板

#! /usr/bin/env python
# -*- coding: UTF-8 -*-
# @Author: Xiaotuan

import execjs
import subprocess
from functools import partial

subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')

# 读取 js 文件
f = open("test.js", mode="r", encoding="utf-8")
js = f.read()
f.close()

# 先预编译
# result1 是执行其中的函数
# result2 是获取其中的变量
obj = execjs.compile(js)
result1 = obj.call("fn", 10, 20)
result2 = obj.eval("str")
print(result1, result2)
"""
30 123456
"""

逆向思路

JS 的混淆有:UglifyJS,JScrambler,jsbeautifier.org,JSDetox,obfuscator.io 等
但常见且入门级的就是 OB 混淆,解决方法可以是手撸或者补环境,也可以是 AST

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容