赞
踩
在js逆向的过程中,一般来说思路有两种:
读懂js代码,使用python直接改写js代码(这一种方法对javascript具有很高的要求)
不进行js改写,使用python直接调用js代码(一般来说是使用这种方法进行逆向分析)
看了很多文档,我总结出使用python如何调用js的三种方法,现在一一为大家讲解。
当然:必须先安装 execjs 这个模块,当然你本机还需要安装node.js,js代码的执行是依靠node来进行执行的。
pip install execjs
- #导入相应模块
- import execjs
- # 对js代码进行编译
- ctx=execjs.compile(
- """function add(a,b){
- return a+b;}
- """
- #这里说的细一点 如果代码比较长 需要使用 """ """ 例如上面的语句,跨行了
- )
- # 调用call方法 call是js中的一个函数
- # 参数一:"需要执行的函数名字" 参数:如果有函数的输入值,需要写入 。 如果没有只需要传入函数的名字即可
- result = ctx.call("add",1,2)
- print(result)
这个方法适应与js代码比较简短,一般来说逆向分析,不使用这种方法,一般读入js代码,如下!!!
- #导入模块
- import execjs
- # open("./js/01.js","r",encoding='utf-8').read() 读取js文件
- ctx=execjs.compile(open("./js/01.js","r",encoding='utf-8').read())
- result = ctx.call("add",1,2)
- print(result)
js代码;
- function add(a,b){
- return a+b;}
我还是比较推荐使用这种方法的,因为在js文件我们可以进行debug和分析,尝试运行等等。
- #这三行代码尽量要写,之前我使用这个方法执行js代码,一直报编码的问题,大家加上这一行就好啦!
- import subprocess
- from functools import partial
- subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
- ############################
- import execjs
- node = execjs.get() # 首先要实例化一个node对象
- fp = open('./js/01.js','r',encoding='utf-8')
- # 基于node对象进行编译
- ctx = node.compile(fp.read())
- a = int(input('请输入加数:'))
- b=int(input('请输入被加数:'))
- funcName1 = 'add({},{})'.format(a, b)
- # funcName = 'add(%d,%d)' % (a,b)
- # print(funcName1)
- result = ctx.eval(funcName1)
- print('结果为:',result)

今天分享就到这里啦,大家再见!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。