一、项目概述
本文基于 Wechaty 生态系统的 wechaty-puppet-xp
项目进行分析。这是一个基于 Windows 平台的微信机器人实现,通过模拟微信 PC 客户端的操作来实现自动化功能。
二、核心技术栈
2.1 底层技术
-
内存注入技术
- 使用 Frida 框架进行动态二进制插桩
- 通过内存偏移定位关键函数和数据结构
- 实现对微信进程的实时监控和操作
-
消息拦截技术
- Hook 系统API调用
- 内存数据结构解析
- 消息数据包解密和重组
2.2 架构设计
项目采用了分层架构设计:
- Puppet 层:负责与微信客户端的直接交互
- Sidecar 层:处理底层消息拦截和注入
- API 层:提供友好的编程接口
三、技术实现细节
3.1 关键偏移地址
const wxOffsets = {
chatMgr: {
WX_CHAT_MGR_OFFSET: 0x792700,
},
sendMessageMgr: {
WX_SEND_MESSAGE_MGR_OFFSET: 0x768140,
},
setChatMsgValue: {
WX_INIT_CHAT_MSG_OFFSET: 0xf59e40,
}
}
3.2 消息处理系统
class PuppetXp extends PUPPET.Puppet {
private messageStore: {
[k: string]: PUPPET.payloads.Message }
private roomStore: {
[k: string]: PUPPET.payloads.Room }
private contactStore: {
[k: string]: PUPPET.payloads.Contact }
}
3.3 版本适配机制
class XpSidecar {
private supportedVersions = {
v330115:'3.3.0.115',
v360000:'3.6.0.18',
v39223:'3.9.2.23',
}
constructor (options?:WeChatVersion) {
if (options?.wechatVersion) {
XpSidecar.currentVersion = options