登录后更精彩...O(∩_∩)O...
您需要 登录 才可以下载或查看,没有账号?立即注册
×
AST反混淆进阶|动态的混淆js(reese84)还原后如何替换调试?
本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除! 1.需求有个兄弟问静态的混淆js可以还原后替换,但是动态的混淆js还原后就不知道怎么弄了。所以决定写篇文章来探讨一下。
2.目标地址这次要拿捏的网站是这个:https://www.flyscoot.com/en 它加密参数所在的混淆js是动态的,但是url地址是不变的: https://www.flyscoot.com/g-Then-And-meeting-beding-O-Scena-Quarre-allowt-
如何使用 mitmproxy 库和设置本地代理,请参考这篇文章: 调试技巧|如何动态调试经过还原后的某数VM文件
设置好以后,修改main.py 如下: [Python] 纯文本查看 复制代码 import os
import mitmproxy.http
print('脚本初始化成功')
def request(flow: mitmproxy.http.HTTPFlow):
pass
def response(flow: mitmproxy.http.HTTPFlow):
if flow.request.method == "GET" and "g-Then-And" in flow.request.url:
with open("ob.js","w",encoding = "utf-8") as fp:
fp.write(flow.response.text)
os.system("node main.js ob.js ok.js")
with open("ok.js","r",encoding = "utf-8") as fp:
flow.response.text = fp.read();
经过分析后得知,网站其实请求了两次 上面的混淆url,一次GET,一次是POST,因此需要在脚本中进行判断。
代码中的main.js,加了一行代码:
ast.program.body.unshift(types.DebuggerStatement());
即在代码的最开头加一个debugger;这样方便我们查看是否替换成功。 注意,main.js 和 main.py需要放在同一目录内。 3.运行在进行替换前,建议先将该网站的所有 缓存,cookie 清空。打开cmder,输入: mitmdump -q -p 8888 -s main.py
进行监听。再打开该网站,我们发现有替换的操作了:
并且,网站停在了debugger的位置:
这个时候,搜"p",定位到代码位置并打断点:
上面的debugger运行后,停到断点的位置:
可以直接看到 pD 的值,再运行,抓下一个混淆js的包:
这样直接就定位到 加密参数 p 的位置了。
|