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


    关注它,不迷路。       

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

    1. 目标地址

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

    需要分析的网站:

    https://www.flyscoot.com/en

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

    91159d88c97294223d5cd1d7c3f30e20.png

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

    6fa464577d64b45a86879b1b41fefb3a.png

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

    2. 准备工作

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

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

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

    7db86ddd0e9f804b5f8dcad38db52d7d.png

    3. 编写代码

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

    679664abe5ce2a2e13d82508c106dbd4.png

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

    b481198c8f7e7037d8b10fd749cd3c1f.png

    3.具体的改写如下:

    1. def onResponse(context, response):
    2. # Update status code
    3. # response.code = 404
    4. # APIs are same as `onRequest`
    5. if "https://www.flyscoot.com/g-Then-And-meeting-beding-O-Scena-Quarre-allowt-" == context.url:
    6. print ("Inject Success!")
    7. # Done
    8. return response

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

    79be2505eb9461b23d2f2ae7bd13d13b.png

    成功打印了 "Inject Success!",说明注入成功了。

    4.再次编辑脚本,将动态的混淆代码进行还原,然后再替换:

    1. # API Docs: https://reqable.com/docs/capture/addons
    2. from reqable import *
    3. import os
    4. def onRequest(context, request):
    5. # Print url to console
    6. # print('request url ' + context.url)
    7. # Update or add a query parameter
    8. # request.queries['foo'] = 'bar'
    9. # Update or add a http header
    10. # request.headers['foo'] = 'bar'
    11. # Replace http body with a text
    12. # request.body = 'Hello World'
    13. # Map with a local file
    14. # request.body.file('~/Desktop/body.json')
    15. # Convert to dict if the body is a JSON
    16. # request.body.jsonify()
    17. # Update the JSON content
    18. # request.body['foo'] = 'bar'
    19. # Done
    20. return request
    21. def onResponse(context, response):
    22. # Update status code
    23. # response.code = 404
    24. # APIs are same as `onRequest`
    25. if "https://www.flyscoot.com/g-Then-And-meeting-beding-O-Scena-Quarre-allowt-" == context.url:
    26. print ("Inject Success!")
    27. with open("C:\\Users\\admin\\Desktop\\0925\\ob.js","w",encoding = "utf-8") as fp:
    28. fp.write(str(response.body))
    29. os.system("node C:\\Users\\admin\\Desktop\\0925\\main.js C:\\Users\\admin\\Desktop\\0925\\ob.js C:\\Users\\admin\\Desktop\\0925\\ok.js")
    30. response.body.file('C:\\Users\\admin\\Desktop\\0925\\ok.js')
    31. return response

    代码说明:

    1. with open("C:\\Users\\admin\\Desktop\\0925\\ob.js","w",encoding = "utf-8") as fp:
    2.       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')

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

    797e3be4be1d1db64f4d2929d8680b48.png

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

    578870e9c02207de0a6b4d288cffad1c.png

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

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

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

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

    e65485b3a0348f1645c65b2ada5d29d4.png

  • 相关阅读:
    计算机毕业设计Java酒店预约及管理系统(源码+系统+mysql数据库+lw文档)
    跳房子 I
    怎么压缩图片?图片太大这样压缩变小
    排序——选择排序、归并排序
    一位 sealer maintainer 的心路历程
    可替代角雷达,这款纯固态补盲激光雷达什么来头?
    深分页Scroll
    bootstrap fileinput组件 选择文件自动上传
    Spring Boot+MyBatis+MySQL+Spring MVC之论坛首页开发
    Linux权限管理— 文件特殊权限SetUID
  • 原文地址:https://blog.csdn.net/qq523176585/article/details/133287012