优秀工具|使用Reqable替换处理过的动态混淆js

关注它,不迷路。       

本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!

1. 目标地址

这篇文章  爬虫神器|这是我过Debugger检测最简单的方法,没有之一  简单的介绍了 Reqable 工具的使用,本文再次介绍下 它的 脚本功能。

需要分析的网站:

https://www.flyscoot.com/en

通过多次抓包分析,发现它的核心js是动态的,至少变量名是经常在变化的,如第一次抓包的js:

优秀工具|使用Reqable替换处理过的动态混淆js_第1张图片

而清空缓存后,再次抓包,又变成这样了:

优秀工具|使用Reqable替换处理过的动态混淆js_第2张图片

我们知道,混淆的js,调试起来非常的痛苦,能不能给它简单的还原一下,将还原后的代码替换再调试?

2. 准备工作

1.先从星球下载还原的AST文件:

https://t.zsxq.com/12dsy8slw

2.打开  Reqable 工具,确保可以正常抓包,然后打开 它的脚本功能:

优秀工具|使用Reqable替换处理过的动态混淆js_第3张图片

3. 编写代码

1.右键点击上面的按钮,选择 新建脚本 : 

优秀工具|使用Reqable替换处理过的动态混淆js_第4张图片

2.编辑脚本,改写响应 :

优秀工具|使用Reqable替换处理过的动态混淆js_第5张图片

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

先判断,后打印,看看是否能成功:

优秀工具|使用Reqable替换处理过的动态混淆js_第6张图片

成功打印了 "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')

将响应的结果替换成还原后的文件。我们来看看效果:

优秀工具|使用Reqable替换处理过的动态混淆js_第7张图片

从日志窗口可以看到,确实进行了处理,看看网页上的代码:

优秀工具|使用Reqable替换处理过的动态混淆js_第8张图片

可以确认,是替换后的js,nice!

基本上后续替换动态的混淆js,也就是这套路。

今天的文章就分享到这里,后续分享更多的技巧,敬请期待。

下面的课程是我和 风佬一起开的,大家有需要的可以咨询我,相比基础课,新增了魔改nodejsAST反混淆进阶小程序逆向及部分补环境的内容。现在优惠价 2599元,还送一年AST 入门与实战 知识星球,先到先得。

优秀工具|使用Reqable替换处理过的动态混淆js_第9张图片

你可能感兴趣的:(javascript,开发语言,ecmascript,前端)