1 Star 11 Fork 9

Ben/WeChatDecodeDB

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
wechat.py 2.06 KB
一键复制 编辑 原始数据 按行查看 历史
Ben 提交于 2024-01-11 19:54 . 最新支持微信版本3.9.8.25
import os
import struct
from pymem import Pymem, pattern, process
from win32api import HIWORD, LOWORD, GetFileVersionInfo
from wechat_aes_key import WechatAesKey
class Wechat:
def __init__(self):
self.pm = self.get_wechat_process()
def wecat_process_exist(self) -> bool:
"""微信进程是否存在"""
return self.pm is not None
def get_wechat_process(self) -> Pymem:
"""获取微信进程基址"""
try:
return Pymem("WeChat.exe")
except Exception as e:
return None
def wechat_init(self) -> WechatAesKey:
"""当前微信初始化"""
if self.wecat_process_exist():
WeChatWindll_base = 0
WeChatWindll_path = ""
for m in list(self.pm.list_modules()):
path = m.filename
if path.endswith("WeChatWin.dll"):
WeChatWindll_base = m.lpBaseOfDll
WeChatWindll_path = path
break
if not WeChatWindll_path:
raise ValueError("获取版本失败,请确认本系统是否成功安装了微信!")
version = GetFileVersionInfo(WeChatWindll_path, "\\")
msv = version["FileVersionMS"]
lsv = version["FileVersionLS"]
version = f"{str(HIWORD(msv))}.{str(LOWORD(msv))}.{str(HIWORD(lsv))}.{str(LOWORD(lsv))}"
self.version = version
self.base = WeChatWindll_base
return WechatAesKey(self.pm, self.version, self.base)
else:
raise ValueError("微信进程不存在,请确认微信是否已经启动!")
def get_wechat_version(self):
"""当前微信版本号"""
if not self.version:
raise ValueError("微信版本号获取失败,请先调用 wechat_init 方法初始化!")
return self.version
def get_wechat_base(self):
"""当前微信基址"""
if not self.base:
raise ValueError("微信基址获取失败,请先调用 wechat_init 方法初始化!")
return self.base
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/BenLi19999/we-chat-decode-db.git
git@gitee.com:BenLi19999/we-chat-decode-db.git
BenLi19999
we-chat-decode-db
WeChatDecodeDB
master

搜索帮助