# chatlog_alpha 原 [chatlog](https://github.com/sjzar/chatlog) 项目的二开版本,导入自 [xiaofeng2042 的分支](https://github.com/xiaofeng2042/chatlog),以防止上游删库后分支被自动删除。 未经修改的源代码在 [main 分支](https://github.com/CJYKK/chatlog_backup/tree/main),本人不对代码中的任何内容负责。 ## 项目概述 这是一个微信聊天记录解密工具,支持Windows和macOS平台。工具通过注入DLL或内存扫描的方式获取微信数据库密钥,然后解密微信聊天数据库文件。 ## 主要功能 - **密钥获取**:支持DLL注入和内存扫描两种方式获取微信数据库密钥 - **数据库解密**:解密微信加密的SQLite数据库文件 - **图片解密**:解密微信加密的图片文件(需要图片密钥) - **自动监控**:监控微信数据目录,自动解密新增数据 - **HTTP服务**:提供本地HTTP服务,支持MCP协议 - **多平台支持**:支持Windows和macOS - **多版本支持**:支持微信3.x和4.x版本 ## 快速开始 ### 1. 获取密钥DLL 获取key请前往 https://github.com/ycccccccy/wx_key 将 `wx_key.dll` 文件放置在 `lib/windows_x64/` 目录下。 ### 2. 编译项目 ```bash go build -o chatlog_alpha.exe main.go ``` ### 3. 运行程序 ```bash ./chatlog_alpha.exe ``` ### 4. 完整使用逻辑 #### 1.启动chatlog #### 2.启动微信(不要点击登录) #### 3.等待chatlog获取到pid信息时,再点击登录 #### 4.30s后返回key,注意获取图片key还未适配,欢迎大佬提交 ## 使用说明 ### 界面操作 程序启动后会出现TUI界面,主要功能包括: 1. **获取密钥**:从微信进程获取数据库密钥和图片密钥 2. **解密数据**:解密微信数据文件 3. **启动HTTP服务**:启动本地HTTP & MCP服务器 4. **开启自动解密**:监控数据目录,自动解密新增数据 5. **设置**:配置应用程序选项 6. **切换账号**:切换当前操作的账号 7. **退出**:退出程序 ### 密钥获取流程 1. **DLL方式(推荐)**: - 程序会尝试加载 `wx_key.dll` - 初始化DLL Hook到微信进程 - 轮询获取密钥(需要用户登录微信并查看聊天记录触发数据库读取) - 获取成功后自动清理Hook 2. **原生方式(备用)**: - 如果DLL不可用,使用内存扫描方式 - 在微信进程内存中搜索密钥模式 - 需要微信已登录状态 ### 临时账户管理 程序支持临时账户管理,当微信未登录或重启时: - **临时账户名称**:格式为 `未登录微信_PID`,会跟随PID变化自动更新 - **状态监控**:实时监控微信进程状态变化 - **自动切换**:微信登录后自动切换为真实账户名称 - **数据清理**:微信退出后自动清理相关数据 ## 配置说明 ### 重要配置项 1. **HTTP服务地址**:默认 `127.0.0.1:5030` 2. **工作目录**:解密后文件的存储目录 3. **数据目录**:微信数据文件所在目录 4. **数据密钥**:微信数据库解密密钥 5. **图片密钥**:微信图片解密密钥 ### 配置文件 配置文件位于用户目录下的 `.chatlog/config.json`,包含: - 历史账号信息 - 最后使用的账号 - HTTP服务配置 - 工作目录设置 ## 重要提示 ### 1. ffmpeg依赖 对dat转换一定要安装ffmpeg,并且在系统变量设置bin目录的path,否则会显式报错。 ### 2. 图片密钥格式 图片解密aes key请转为hex,如:16位aes key → `34000000386000006538323730000000` ### 3. 使用注意事项 - 获取密钥时微信会短暂卡顿,这是正常现象 - 请确保微信已登录并打开聊天窗口查看历史消息 - 对于微信V4,图片密钥可能不是必需的 - 程序需要管理员/root权限来访问进程内存 ## 更新日志 ### 2025年12月14日 - 优化临时账户名称管理,跟随PID变化自动更新 - 改进微信进程状态监控逻辑 - 修复微信重启后PID不更新的问题 - 增强错误处理和用户提示 ### 2025年12月13日 - 同步了wx_key项目相关图片解密处理逻辑 - http://127.0.0.1:5030/默认页面增加了清除图片缓存功能,方便测试 - 对ffmpeg未安装导致的dat转换失败进行显示提示 ### 早期版本 - 实现DLL密钥获取方式 - 添加DLL日志记录功能 - 支持微信未登录状态获取PID - 实现自动监控和解密功能 - 添加HTTP服务支持 ## 文件结构 ``` chatlog_alpha/ ├── main.go # 程序入口 ├── internal/ │ ├── chatlog/ # 聊天记录处理核心 │ │ ├── app.go # TUI应用程序 │ │ ├── ctx/ # 上下文管理 │ │ └── manager.go # 管理器 │ ├── wechat/ # 微信相关功能 │ │ ├── wechat.go # 微信账号管理 │ │ ├── key/ # 密钥提取器 │ │ ├── decrypt/ # 解密器 │ │ └── process/ # 进程检测 │ └── ui/ # 用户界面组件 ├── pkg/ │ ├── util/ # 工具函数 │ └── config/ # 配置管理 ├── lib/ │ └── windows_x64/ # Windows DLL文件 └── dll调用指南.md # DLL使用指南 ``` ## 技术实现 ### 密钥获取机制 1. **DLL注入方式**: - 使用 `wx_key.dll` 注入Shellcode到微信进程 - 通过共享内存传递密钥数据 - 支持微信4.x版本 2. **内存扫描方式**: - 读取微信进程内存 - 搜索特定的密钥模式 - 支持微信3.x和4.x版本 ### 进程监控 - 实时检测微信进程状态 - 支持多实例微信 - 自动处理进程重启 - 状态变化时更新UI ### 日志系统 - DLL操作日志保存到程序运行目录 - 详细的错误信息和调试信息 - 支持日志级别控制 ## 常见问题 ### Q: 获取密钥超时怎么办? A: 请确保: 1. 微信已登录(不能停留在登录界面) 2. 打开任意聊天窗口 3. 向上滚动查看历史消息(触发数据库读取) 4. 或者发送/接收一条新消息 ### Q: DLL加载失败怎么办? A: 请检查: 1. `wx_key.dll` 文件是否在 `lib/windows_x64/` 目录 2. 系统架构是否匹配(需要64位系统) 3. 杀毒软件是否拦截了DLL加载 ### Q: 图片解密失败怎么办? A: 请检查: 1. 图片密钥是否正确(需要16字节的HEX字符串) 2. 微信版本是否支持图片解密 3. 图片文件是否完整 ### Q: 程序无法检测到微信进程? A: 请检查: 1. 微信是否正在运行 2. 程序是否有足够的权限 3. 防病毒软件是否阻止了进程访问 ## 许可证 本项目基于原chatlog项目,具体许可证信息请参考原项目。 ## 免责声明 本项目仅供学习和研究使用,请勿用于非法用途。使用本工具产生的任何后果由使用者自行承担。 **重要**:请遵守当地法律法规,尊重他人隐私,合法使用本工具。