[C#/Python] AoB Scan(内存扫描)方式获取微信小程序Token/Cookies

正文索引 [隐藏]

🚀前言


之前羊了个羊大火的时候写了一个羊了个羊辅助--GitHub - SwaggyMacro/YangLeGeYang,可以免抓包一键获取Token。

后面随着热度退去也没有再更新,其中获取微信小程序Token的逻辑还在,只不过经过微信的更新原来的AoB Scan (Array of Bytes)方式已经失效,主要原因是微信小程序已经更新至x64,原有的AoB Scan仅支持扫描32 bit程序。

本文仅讲述原理以及实现方式并提供实现代码,具体项目实现请自行尝试。
通过本文实现的任何违法、犯罪等程序,本人概不负责,本文仅供技术探讨以及研究。

💻准备工作


  1. mitmproxy 抓包工具 (你要获取 Token / Cookies 总要先知道有什么吧)

  2. Cheat Engine (你总要知道该搜索什么内容吧 借助CE实现)

    • 官方下载地址: Cheat Engine

    • 顺带一提,似乎AoB Scan就是因为CE才有这个叫法的,具体我也不清楚,说错勿怪。

  3. C#Python 总得会一个

    • 本文将提供C# 与 Python代码,但你既然能在读这篇文章肯定多少会一个并且有这个需求。
  4. 对抓包以及CE多少需要了解一点点点点,如果继续往下看发现看不明白的话请你Google Or Bing/Baidu 搜索一下相关知识内容。

📖正文开始


  1. 双击打开mitmweb.exe,如果8080或8081端口占用的话可以使用cmd指定端口运行。

    • --listen-port 8081 指定8081端口

  2. 设置系统代理为127.0.0.1:8080(端口为你指定的端口 8080是默认端口

  3. 从PC端微信搜索你要抓包的小程序,在这以羊了个羊为例,打开游戏后可以发现mitmproxy的web页面出现了羊了个羊的数据加载,在其中找寻一下有用的请求,发现其中一个请求附带了t协议头,该协议头为羊了个羊的鉴权信息,本次就以获取该信息为例。

    • 将这段信息进行base64解码可以发现在"."前面的数据为数据说明字段,即算法为HS256,类型为JWT。那么也就是说这一段是固定的。

  4. 尝试在Cheat Engine中搜索eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

    • 在搜索结果中出现了很多,先选择一部分到下方地址栏,然后右键选中下方任何一个地址->Browse this memory region(浏览该内存区域)

    • 之后在该内存区域我们可以完整的看到整个token(鉴权信息),那说明直接搜索该字段(eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9)是可行的。)

  5. 在C#程序中填入进程名(WechatAppEx 微信小程序进程名)、窗口标题(羊了个羊 羊了个羊窗口标题 避免遍历所有微信小程序进程耗时)、扫描内容(eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9),点击Scan可以发现在下方ListView中已经有了结果。

  6. 在Python代码中填入窗口标题(羊了个羊)以及扫描内容(eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9)后运行即可,下方会输出搜索到的内容。

实际开发中可能不会这么顺利,以上只是例子,具体需要扫描的内容需要自己一步步去抓包以及CE扫描获取,最后再通过程序获取。

⚠️注意事项


  • 使用C#代码时因为是扫描64bit程序,所以请选择x64平台,另外需要以管理员身份运行。
  • 使用Python代码时请以管理员身份运行。

📚所需工具以及源代码


🌟源代码: Github项目地址 GitHub - SwaggyMacro/AoBScanExample (可以尝试留下Star 那么我会非常感谢你🌹)

⚒️Cheat Engine 官方: Cheat Engine

🔨mitmproxy 官方: https://mitmproxy.org/

🧰CE和mitmproxy整合包(无法访问官方网站可从以下链接下载)