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

微信开发工具 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_x649129_x64
3.9.10.19_x649115_x64
3.9.10.19_x648555_x64
3.9.10.19_x649105_x64
3.9.9.43_x648555_x64
3.9.9.43_x649079_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 RawTextHelpFormatter
from utils.commons import Commons
from utils.banner import generate_banner
from utils.colors import Color
import argparse

def 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,sys
import psutil,subprocess
from utils.colors import Color

class 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安替-AnTi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值