# vxhacker **Repository Path**: composer-liu-ming/vxhacker ## Basic Information - **Project Name**: vxhacker - **Description**: vxhacker 是一个用于小程序自动化渗透测试的工具,支持 微信小程序自动化收集 与 小程序自动化解包与接口提取 等功能,输入公司名称即可自动化的收集该公司备案的小程序信息并自动进行小程序反编译获取敏感Key和接口信息。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-06-29 - **Last Updated**: 2025-08-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # vxhacker **vxhacker** 是一个用于小程序自动化渗透测试的工具,支持 **微信小程序自动化收集** 与 **小程序自动化解包与接口提取** 等功能,输入公司名称即可自动化的收集该公司备案的小程序信息并自动进行小程序反编译获取敏感Key和接口信息。 --- ## 📦 项目功能 - ✅ **微信小程序收集器**:根据公司名自动抓取该公司备案的小程序 - ✅ **小程序自动解包分析**:自动打开每个小程序并提取敏感信息和可测试的 API 接口 - ✅ **小程序流量被动收集**:利用mitmproxy+Proxifier监听小程序打开后的流量,分析流量数据并提取 API 接口 --- ## 🚀 快速开始 ### 1. 安装python依赖 本项目依赖部分系统库和 Python 第三方库,推荐使用 Python 3.10+。微信版本必须3.9.12.X ```bash pip install -r requirements.txt ``` ```bash 修改config.yaml中wx-tools:wx-file:| 微信设置-->文件管理-->路径 | ``` 将微信添加到环境变量中。运行add_env.py函数即可自动添加。 ```python from pywechat.WechatTools import Tools Tools.set_wechat_as_environ_path() ``` 尝试收集如下公司的微信小程序信息 ```shell python main.py -n 杭州安恒信息技术股份有限公司 --no-open ``` ### 2. 安装mitmproxy+Proxifier 代理(可选) #### 注意:由于requirements中包版本与mitmproxy冲突,建议新建一个虚拟环境,专门用来启动监听代理 - 正确配置Proxifier,使之能够抓取微信流量(转发8080端口) - 启动mitmproxy代理(请先于main.py启动) ```shell python proxifier.py ``` --- ## 🔧 使用方法 ### 一、基础命令行参数 | 参数 | 说明 | |-------------|----------------| | `-n` | 指定单个公司名称 | | `-f` | 读取 TXT 文件,每行一个公司名称 | | `-c` | 包含公司名列的 CSV 文件(支持列名:公司 / 公司名称) | | `-mn` | 直接输入单个小程序名称 | | `-mf` | 包含多个小程序名的 txt 文件(每行一个) | | `--no-open` | 只收集小程序信息,不打开小程序和监听解包| --- ### 二、示例用法 #### 1. 指定单个公司进行小程序搜集和解包分析 ```bash python main.py -n 杭州安恒信息技术股份有限公司 ``` #### 2. 从 TXT 批量导入公司名并处理 ```bash python main.py -f companies.txt ``` #### 3. 从 CSV 文件导入公司列进行处理 ```bash python main.py -c company_list.csv ``` #### 4. 直接打开 志愿望城 小程序开始自动化渗透 ```bash python main.py -mn 志愿望城 ``` #### 5. 指定含小程序名的列表开始自动批量渗透 ```bash python main.py -mf miniapplist.txt ``` > ⚠️ CSV 文件中必须包含“公司名称”字段,程序会自动去重。 --- ## 📁 输出说明 - `./result/xxx.json`:保存小程序收集结果(名称、归属、描述等) - `./Disassembly_Result/xxx/proess.xlsx`:为每个小程序创建一个文件夹,解包提取源代码、敏感 Key、API 接口信息、fuzz结果 - `./scan_output/`:小程序api fuzz结果以json格式保存 - `./traffic_logs/`:小程序api 被动流量监听结果以json格式保存 --- ## ⚙️ 技术原理说明 ### 1. 小程序信息收集 - 使用 `pywinauto` 实现对 **微信客户端 GUI 的自动化控制(RPA)** - 自动控制微信客户端,搜索输入公司名称,提取当前窗口中可见的小程序信息: - 小程序名称 - 归属公司 - 描述信息 - 标签信息等 - 使用find_peaks寻峰算法进行自适应阈值切分,能够自适应的基于GUI分割出的行数分割每组小程序的有效信息。解决不同分辨率的显示屏导致的GUI行距不同的问题。 --- ### 2. 自动打开与监听反编译 - 使用 `pywinauto` 实现模拟点击打开小程序 - 启动 `multiprocessing` 并行进程中的监听器,监控小程序反编译输出目录(如 `.wxml`, `.js`, `.json` 等文件的生成) - 当监听到新小程序文件出现时,自动触发后续处理流程: - 提取静态资源 - 分析潜在敏感信息 - 收集小程序所请求的 API 接口列表 ### 3. 小程序api fuzz - 使用 `Chkapi` 项目的思路,尝试有参无参三种请求,并检测敏感信息 ## ⚠️ 局限性说明 虽然 vxhacker 自动化能力强大,但由于技术机制限制,仍存在部分边界情况需要注意: - 小程序列表解析有限:当前通过 pywinauto + UI 控件方式提取小程序搜索结果,但 无法自动向下滑动加载更多条目,因此搜索结果仅限 首屏展示内容。 ## TODO - [x] 修改自动解包方法,能够分离出api路径,和参数 - [x] 联动check_api 项目 使之能够进行基于api发包 - [x] 被动监听小程序打开的流量包,进一步收集api信息 - [ ] 联动nuclei dast api 使check_api 发送的带参包能够深度的进行fuzz扫描(SQLi,Xss) ## 🔗 参考项目 本项目参考了以下开源项目的实现思路与技术框架,致谢原作者: - https://github.com/eeeeeeeeee-code/e0e1-wx - https://github.com/Hello-Mr-Crab/pywechat - https://gitee.com/composer-liu-ming/ChkApiPlus ## 📄 License 本项目仅用于安全研究与学习用途,严禁用于非法用途。使用者需自行承担相关责任。