> 技术文档 > 微信开发工具 WeChatOpenDevTools-Python 版:开启小程序与内置浏览器 F12 调试功能

微信开发工具 WeChatOpenDevTools-Python 版:开启小程序与内置浏览器 F12 调试功能


文章目录

  • 微信开发工具 WeChatOpenDevTools-Python 版:开启小程序与内置浏览器 F12 调试功能
    • 一、引言
    • 二、项目概述
    • 三、使用方法
      • (一)开启小程序 F12
        • 1. 准备工作
        • 2. 安装依赖
        • 3. 运行程序
    • 四、代码解析
      • (一)main.py
      • (二)utils/wechatutils.py
      • (三)scripts/hook.js
    • 五、总结
      • 参考链接

微信开发工具 WeChatOpenDevTools-Python 版:开启小程序与内置浏览器 F12 调试功能

一、引言

在微信小程序抓包过程中,调试是不可或缺的环节。为了更方便地进行调试,JaveleyQAQ开源了WeChatOpenDevTools - Python项目,它将原本志远大佬用Node实现的功能改用Python 3重写,还简单实现了一些自动化问题,为开发者提供了极大的便利。本文将详细介绍该项目的使用方法,帮助你轻松开启小程序和微信内置浏览器的F12调试功能。

二、项目概述

这个项目主要功能是开启微信小程序和微信内置浏览器的F12调试功能,支持多个微信版本,包括WindowsMac x64版本。项目的核心代码主要包含在main.py、utils目录下的文件以及scripts目录下的hook.js文件中。

支持版本列表

以下是该项目支持的部分版本列表:

  • 注意,如果你的版本如果不符合下列条件,需要使用控制面板卸载之前的微信版本,不要直接覆盖安装
Windows 微信版本 小程序版本 是否为最新版 11275_x64 ✅ 11253_x64 ✅ 11205_x64 ✅ 11159_x64 ✅ 3.9.10.19_x64 9129_x64 ✅ 3.9.10.19_x64 9115_x64 ✅ 3.9.10.19_x64 8555_x64 ❌ 3.9.10.19_x64 9105_x64 ❌ 3.9.9.43_x64 8555_x64 ❌ 3.9.9.43_x64 9079_x64 ❌

对于Mac x64微信版本:

Mac x64 微信版本 是否为最新版 运行方式 MacWechat/3.8.8(0x13080811) ✅ 源码运行 MacWechat/3.8.8(0x13080812) ✅ 源码运行

三、使用方法

(一)开启小程序 F12

1. 准备工作
  • 安装 Python 3:确保你的系统已经安装了Python 3版本。
  • 下载项目:可以从WeChatOpenDevTools - Python下载项目源码,或者直接下载编译好的exe文件WeChatOpenDevTools_64.exe。
  • 个人推荐直接下载编译好的exe即可,下面就都不用看了
2. 安装依赖

打开命令行工具,进入项目目录,执行以下命令安装依赖:

pip3 install -r requirements.txt
3. 运行程序

运行前先启动微信(建议使用小号,避免被封),然后在命令行中执行以下命令:

python main.py -x

四、代码解析

(一)main.py

main.py是项目的入口文件,主要负责解析命令行参数,并根据不同的参数调用相应的功能函数。以下是部分代码示例:

from argparse import RawTextHelpFormatterfrom utils.commons import Commonsfrom utils.banner import generate_bannerfrom utils.colors import Colorimport argparsedef print_colored_message(message, color): print(color + message + Color.END)def main(): HELPALL = \"\"\" 请选择要执行的方法:  [+] python main.py -h 查看帮助 [+] python main.py -x 开启小程序F12 [+] python main.py -c 开启内置浏览器F12 [+] python main.py -all 开启内置浏览器F12与小程序F12  \"\"\" parser = argparse.ArgumentParser(description=HELPALL, formatter_class=RawTextHelpFormatter) parser.add_argument(\'-x\', action=\'store_true\', help=\'开启小程序F12\') parser.add_argument(\'-c\', action=\'store_true\', help=\'开启内置浏览器F12\') parser.add_argument(\'-all\', action=\'store_true\', help=\'开启内置浏览器F12与小程序F12\') args = parser.parse_args() if args.x: commons.load_wechatEx_configs() elif args.c: commons.load_wechatEXE_configs() elif args.all: commons.load_wechatEXE_and_wechatEx() else: print_colored_message(HELPALL, Color.RED)if __name__ == \"__main__\": generate_banner() commons = Commons() main()

(二)utils/wechatutils.py

该文件主要包含了一些与微信进程相关的工具函数,如获取微信进程的PID和版本号、查找微信安装路径等。以下是部分代码示例:

import os,re,sysimport psutil,subprocessfrom utils.colors import Colorclass WechatUtils: def __init__(self): self.configs_path = self.get_configs_path() self.version_list = self.get_version_list() def get_configs_path(self): current_path = os.path.abspath(__file__) relative_path = \'../configs/\' return os.path.join(os.path.dirname(current_path), relative_path) def get_version_list(self): configs_path = self.configs_path version_list = os.listdir(configs_path) versions_list = [int(file.split(\'_\')[1]) for file in version_list if file.startswith(\'address_\')] return versions_list def is_wechatEx_process(self, cmdline): process_name = \"WeChatAppEx\" return cmdline and process_name in cmdline[0] and \"--type=\" not in \' \'.join(cmdline) def get_wechat_pids_and_versions(self): processes = (proc.info for proc in psutil.process_iter([\'pid\', \'cmdline\'])) wechatEx_processes = (p for p in processes if self.is_wechatEx_process(p[\'cmdline\'])) wechat_instances = [] for process in wechatEx_processes: pid = process[\'pid\'] version = self.extract_version_number(process[\'cmdline\']) if version in self.version_list: wechat_instances.append((pid, version)) return wechat_instances

(三)scripts/hook.js

该文件是Frida的脚本文件,主要用于注入微信进程,实现对小程序和内置浏览器的F12调试功能的开启。以下是部分代码示例:

//获取WeChatAppEx.exe的基址var module = Process.findModuleByName(\"WeChatAppEx.exe\") || Process.findModuleByName(\'WeChatAppEx Framework\')var base = module.base;Object.keys(address).forEach(key => { key != \"Version\" ? address[key] = base.add(address[key]) : false});send(\"[+] WeChatAppEx 注入成功!\");send(\"[+] 当前小程序版本: \" + address.Version);send(\"[+] 等待小程序加载...\");function readStdString(s) { var flag = s.add(23).readU8() if (flag == 0x80) { // 从堆中读取 var size = s.add(8).readUInt() return s.readPointer().readUtf8String(size) } else { // 从栈中读取 return s.readUtf8String(flag) }}

五、总结

WeChatOpenDevTools - Python项目为微信开发者提供了一种简单、便捷的方式来开启小程序和微信内置浏览器的F12调试功能。通过本文的介绍,你可以轻松掌握该项目的使用方法,并深入了解其代码实现原理。希望这个项目能帮助你在微信开发过程中更加高效地进行调试。

参考链接

WeChatOpenDevTools - Python