关注它,不迷路。
本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!
1. 目标地址
这篇文章 爬虫神器|这是我过Debugger检测最简单的方法,没有之一 简单的介绍了 Reqable 工具的使用,本文再次介绍下 它的 脚本功能。
需要分析的网站:
https://www.flyscoot.com/en
通过多次抓包分析,发现它的核心js是动态的,至少变量名是经常在变化的,如第一次抓包的js:
而清空缓存后,再次抓包,又变成这样了:
我们知道,混淆的js,调试起来非常的痛苦,能不能给它简单的还原一下,将还原后的代码替换再调试?
2. 准备工作
1.先从星球下载还原的AST文件:
https://t.zsxq.com/12dsy8slw
2.打开 Reqable 工具,确保可以正常抓包,然后打开 它的脚本功能:
3. 编写代码
1.右键点击上面的按钮,选择 新建脚本 :
2.编辑脚本,改写响应 :
3.具体的改写如下:
def onResponse(context, response):
# Update status code
# response.code = 404
# APIs are same as `onRequest`
if "https://www.flyscoot.com/g-Then-And-meeting-beding-O-Scena-Quarre-allowt-" == context.url:
print ("Inject Success!")
# Done
return response
先判断,后打印,看看是否能成功:
成功打印了 "Inject Success!",说明注入成功了。
4.再次编辑脚本,将动态的混淆代码进行还原,然后再替换:
# API Docs: https://reqable.com/docs/capture/addons
from reqable import *
import os
def onRequest(context, request):
# Print url to console
# print('request url ' + context.url)
# Update or add a query parameter
# request.queries['foo'] = 'bar'
# Update or add a http header
# request.headers['foo'] = 'bar'
# Replace http body with a text
# request.body = 'Hello World'
# Map with a local file
# request.body.file('~/Desktop/body.json')
# Convert to dict if the body is a JSON
# request.body.jsonify()
# Update the JSON content
# request.body['foo'] = 'bar'
# Done
return request
def onResponse(context, response):
# Update status code
# response.code = 404
# APIs are same as `onRequest`
if "https://www.flyscoot.com/g-Then-And-meeting-beding-O-Scena-Quarre-allowt-" == context.url:
print ("Inject Success!")
with open("C:\\Users\\admin\\Desktop\\0925\\ob.js","w",encoding = "utf-8") as fp:
fp.write(str(response.body))
os.system("node C:\\Users\\admin\\Desktop\\0925\\main.js C:\\Users\\admin\\Desktop\\0925\\ob.js C:\\Users\\admin\\Desktop\\0925\\ok.js")
response.body.file('C:\\Users\\admin\\Desktop\\0925\\ok.js')
return response
代码说明:
with open("C:\\Users\\admin\\Desktop\\0925\\ob.js","w",encoding = "utf-8") as fp:
fp.write(str(response.body))
这是将响应的混淆js写入到 ob.js 文件中,因为 response.body 是 字节类型,因此需要先转成字符串才可以。
os.system("node C:\\Users\\admin\\Desktop\\0925\\main.js C:\\Users\\admin\\Desktop\\0925\\ob.js C:\\Users\\admin\\Desktop\\0925\\ok.js")
调用 os.system 命令,将其还原,当然,先确保该目录已安装 babel库。
response.body.file('C:\\Users\\admin\\Desktop\\0925\\ok.js')
将响应的结果替换成还原后的文件。我们来看看效果:
从日志窗口可以看到,确实进行了处理,看看网页上的代码:
可以确认,是替换后的js,nice!
基本上后续替换动态的混淆js,也就是这套路。
今天的文章就分享到这里,后续分享更多的技巧,敬请期待。
下面的课程是我和 风佬一起开的,大家有需要的可以咨询我,相比基础课,新增了魔改nodejs,AST反混淆进阶,小程序逆向及部分补环境的内容。现在优惠价 2599元,还送一年AST 入门与实战 知识星球,先到先得。