Github地址:https://github.com/suruixin/w...
效果图
背景
hi!大家好,今天给大家带来我的小工具锦集第二季,关于微信助手的话题,大约在2019年6月份左右,看到了一个非常有意思的项目微信每日说,当时整好入手了树莓派,想要部署一版,用来做每日天气推送(原谅我穷,还经常被雨淋)后来在使用的过程中发现web版微信不支持2017年后注册的微信号登陆(现在可能更多的微信号),在经过了漫长的查找过程,最终发现了赵庆明老师关于微信hook的课程(目前已下架),决定已这个为突破口,开发一版微信助手工具,目前项目已经收尾
奈何自己能力有限,自己写的dll惨不忍睹,正好有位大佬开源了自己的项目(wechat-bot),于是,我就非常开心的利用electron
制作了我的微信助手工具
下面来对我的项目进行一个简单的介绍
技术栈
vue-cli3
vuetify
sass
electron-builder
electron-update
node-ffi-napi
关于node-ffi-napi
大家可以参考我的node-ffi从入门到放弃(安装篇)来进行安装
版本要求
node: 12.16.0-x86
node-gyp: 7.0.0
ffi-napi: 2.4.5
微信版本: 2.9.0.123
微信: 2.9.0.123
提取码:j4m0
注入器及hook文件地址
目录
./
├ public // 公共文件存放地址
├ src
│ ├ config // 配置文件存放地址
│ │ ├ config.ts // 系统中需要用到的不对外公开的配置信息
│ │ ├ index.ts // 系统中需要用到的初始化配置信息
│ │ └ yaml.ts // 将初始化配置存放到用户电脑上,并生成yarm文件
│ ├ enum // 数据类型文件存放地址
│ │ ├ ipc.ts // 主进程和渲染进程通信
│ │ ├ mainEnum.ts // 主进程中用到的数据类型
│ │ └ weChat.ts // 调用微信hook进行数据传输的数据类型
│ ├ interface // 接口存放地址
│ │ ├ api.ts // 数据请求接口
│ │ ├ config.ts // 初始化配置信息接口
│ │ ├ mainInterface.ts // 主进程中用到的接口
│ │ ├ views.ts // 渲染进程中用到的接口
│ │ ├ vuexInterface.ts // vuex用到的接口
│ │ └ weChatParams.ts // 微信hook用到的接口
│ ├ mainProcess // 主进程存放地址
│ │ ├ BrowserWindow // 主进程配置文件
│ │ │ └ index.ts
│ │ ├ Inject // 注入文件
│ │ │ ├ Inject.ts // 注入文件封装
│ │ │ └ manage.ts // 注入文件使用
│ │ ├ ipc // 主进程与渲染进程通讯
│ │ │ └ index.ts
│ │ ├ tray // 托盘
│ │ │ └ index.ts
│ │ ├ update // 升级
│ │ │ └ index.ts
│ │ └ index.ts // 主进程输出文件
│ ├ render // 渲染进程存放地址
│ │ ├ api // 数据请求
│ │ │ ├ index.ts // 数据请求出口文件
│ │ │ ├ turing.ts // 图灵机器人数据请求
│ │ │ └ weChat.ts // 微信hook数据请求
│ │ ├ assets // 渲染进程静态文件
│ │ │ ├ icon // icon
│ │ │ ├ images // 图片
│ │ │ └ sass // 全局sass文件
│ │ ├ components // 组件
│ │ │ ├ Common
│ │ │ │ └ Snackbar.vue // 错误提醒
│ │ │ ├ Main // 通用主页面
│ │ │ │ ├ components
│ │ │ │ │ ├ content.vue // 内容区域
│ │ │ │ │ ├ footer.vue // 底部
│ │ │ │ │ ├ navigation.vue // 左侧边栏
│ │ │ │ │ └ title.vue // 头部
│ │ │ │ └ index.vue // 通用主页面入口文件
│ │ │ └ Socket
│ │ │ └ Socket
│ │ │ └ WeChat.ts // 微信hook websocket监听
│ │ ├ mixins // 混入
│ │ │ └ index.ts
│ │ ├ plugins // 插件
│ │ │ ├ tool
│ │ │ │ ├ api.ts // api文件输出
│ │ │ │ └ index.ts // 输出本目录下所有文件
│ │ │ ├ common.ts // 通用方法
│ │ │ ├ main.ts // vue全局注入
│ │ │ └ vuetify.ts // vuetify配置
│ │ ├ router // 路由
│ │ │ ├ index.ts
│ │ │ └ routes.ts
│ │ ├ store // vuex
│ │ │ ├ modules
│ │ │ │ ├ index.ts
│ │ │ │ ├ main.ts
│ │ │ │ └ userList.ts
│ │ │ ├ actions.ts
│ │ │ ├ getters.ts
│ │ │ ├ index.ts
│ │ │ ├ mutations.ts
│ │ │ └ mutations.ts
│ │ ├ utils // 工具封装
│ │ │ ├ axios.ts // axios封装
│ │ │ ├ ipc.ts // 通用主进程通讯分装
│ │ │ └ require.ts // get post等请求封装
│ │ └ views // 页面
│ │ ├ About // 关于页面
│ │ │ └ AboutPage.vue // 关于页面
│ │ ├ Home // 首页(未想好做什么样的)
│ │ ├ SendMsg // 发送消息页面
│ │ │ ├ SendMsgPage // 发送消息页面相关信息
│ │ │ │ ├ userList // 好友列表相关
│ │ │ │ │ ├ listItem.vue // 单好友页面
│ │ │ │ │ └ listWrapper.vue // 好友组页面
│ │ │ │ ├ setParams.vue // 右侧发送消息
│ │ │ │ └ userList.vue // 好友列表
│ │ │ └ SendMsgPage.vue // 发送消息页面入口
│ │ └ Tool // 配置页面(未想好做什么样的)
│ ├ type // 类型别名文件存放地址
│ ├ App.vue
│ ├ background.ts // 主进程入口
│ ├ main.ts
│ ├ registerServiceWorker.ts
│ ├ shims-node.d.ts
│ ├ shims-tsx.d.ts
│ └ shims-vue.d.ts
├ static
│ ├ dll // 动态链接库(hook和注入)存放地址
│ └ icon // 打包icon存放地址
├ package.json
├ tsconfig.json
└ vue.config.js
electron简介
electron
是 GitHub
发布的跨平台桌面应用开发工具,使用 JavaScript
,HTML
和 CSS
构建跨平台的桌面应用程序,其本身是基于 C++
开发的
官网: https://www.electronjs.org/
文档: https://www.electronjs.org/docs
主进程
向微信进程注入dll
import ffi from "ffi-napi";
import { DllInject } from "@/interface/mainInterface";
import { join } from "path";
export default class Inject {
private Handel: DllInject;
public constructor(dllPath: string) {
this.Handel = ffi.Library(dllPath, {
Inject: ['int', ["string", "string"]]
})
}
public Inject(dllPath: string, exePath: string): number {
return this.Handel.Inject(dllPath, exePath);
}
public StatusCode(code: number): string {
const StatusCode: {
[p: number]: string;
} = {
0: "成功",
1: "没有找到微信进程,请确认微信是否打开",
2: "打开进程失败",
3: "分配内存空间失败",
4: "写入内存失败",
5: "查找LoadLibraryA失败",
6: "启动远程线程失败"
};
return StatusCode[code]
}
}
const InDllPath = join(global.__static, "/dll/demoInject.dll");
const BeInDllPath = join(global.__static, "/dll/version2.9.0.123-4.5.7.69.dll");
const WeChatInject = new Inject(this.InDllPath);
WeChatInject.Inject(BeInDllPath, "WeChat.exe");
渲染进程
后续将api
整理好,提供地址,内容太多,写完后发现不是很好,删除了
致谢
感谢cixingguangming55555大佬提供的wechat-bot
警告
本项目初衷为解决生活中需要被动回复消息/发送文件,严禁用于打广告/推广等行为
微信助手不属于腾讯认可的助手工具,所以用于营销,发广告等行为会导致封号,这也是我说严禁用于打广告/推广的原因,希望大家可以在腾讯允许的范围内进行使用
如二次开发给女朋友查询干湿垃圾,每日天气播报等等,同时欢迎各位it朋友加好友一起研究前端 c++知识(本人前端一枚,会一些简单的c++)