吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8284|回复: 69
收起左侧

[原创] 微信旧版本登入方法

  [复制链接]
doudoudedi 发表于 2025-7-23 15:45
本帖最后由 doudoudedi 于 2025-7-23 15:49 编辑

主要是为了复现微信历史版本的漏洞对微信低版本不让登入的问题进行的解决方案
<font style="color:#DF2A3F;">免责声明:文中所有涉及的内容均不针对任何厂商或个人,同时由于传播、利用文中所发布的脚本、方法或造成的任何直接或者间接的后果及损失,均由使用者本人承担。</font>

整体的方法主要是修改WeChatWin.dll这个模块的内存
由于微信版本的迭代,WeChatWin.dll这个版本的偏移会有变化当前我测试的3.9.0.28如下
0x2E2E354,0x2E6E7C4,0x2E50314,0x2E50FE4,0x2E6B39C,0x2E6FD6C

Version键值 微信版本 关键地址
63090c37 3.9.12.55 Text
6309001c 3.9.0.28 WeChatWin.dll+2E50FE4

上面的键值可以在注册表中找到
1753233579806-3892819a-8f64-4af1-820f-62afc6730bf7.png
用下面脚本会找到Wechat.exe的pid,然后列出WeChatWin的基地址,最后写入,我是将所有关键偏移都写成了微信3.9.12.55版本的Version键值(这个可以在注册表中看到),然后登入后就是显示的3.9.12.55,实际我安装的是3.9.0.28,之后可以愉快的测试漏洞了(ps下面的偏移不同版本需要修改,可以在CE中找到的,搜索内存中的键值就可以了)

import ctypes
import struct
import psutil
import win32api
import win32con

LIST_MODULES_ALL = 0x03

def get_wechat_pid():
    for proc in psutil.process_iter(['pid', 'name']):
        if proc.info['name'] and proc.info['name'].lower() == 'wechat.exe':
            return proc.info['pid']
    raise Exception("WeChat.exe not found.")

def get_module_base_address(pid, dll_keyword):
    h_process = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS, False, pid)

    EnumProcessModulesEx = ctypes.windll.psapi.EnumProcessModulesEx
    GetModuleFileNameExW = ctypes.windll.psapi.GetModuleFileNameExW
    EnumProcessModulesEx.restype = ctypes.c_bool

    module_handles = (ctypes.c_void_p * 1024)()
    needed = ctypes.c_ulong()

    if not EnumProcessModulesEx(h_process.handle, ctypes.byref(module_handles),
                                ctypes.sizeof(module_handles), ctypes.byref(needed), LIST_MODULES_ALL):
        raise ctypes.WinError()

    count = needed.value // ctypes.sizeof(ctypes.c_void_p)

    for i in range(count):
        h_mod = module_handles[i]
        mod_path = ctypes.create_unicode_buffer(260)
        GetModuleFileNameExW(h_process.handle, h_mod, mod_path, ctypes.sizeof(mod_path))

        if dll_keyword.lower() in mod_path.value.lower():
            print(f"[+] 找到模块: {mod_path.value}")
            print(f"[+] 模块基地址: 0x{h_mod:08X}")
            return h_mod

    raise Exception(f"{dll_keyword} not found in process.")

def write_memory(pid, address, data_bytes):
    PROCESS_ALL_ACCESS = 0x1F0FFF
    h_process = win32api.OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    old_protect = ctypes.c_ulong()
    size = len(data_bytes)

    # 修改页面权限
    ctypes.windll.kernel32.VirtualProtectEx(
        int(h_process), ctypes.c_void_p(address), size,
        win32con.PAGE_EXECUTE_READWRITE, ctypes.byref(old_protect)
    )

    # 写入内存
    written = ctypes.c_size_t()
    ctypes.windll.kernel32.WriteProcessMemory(
        int(h_process), ctypes.c_void_p(address),
        data_bytes, size, ctypes.byref(written)
    )

    # 恢复权限
    ctypes.windll.kernel32.VirtualProtectEx(
        int(h_process), ctypes.c_void_p(address), size,
        old_protect.value, ctypes.byref(ctypes.c_ulong())
    )

    if written.value != size:
        raise Exception("WriteProcessMemory did not write all bytes.")

if __name__ == "__main__":
    pid = get_wechat_pid()
    print(f"[+] WeChat PID: {pid}")

    base_addr = get_module_base_address(pid, "WeChatWin.dll")

    offset_list = [0x2E2E354,0x2E6E7C4,0x2E50314,0x2E50FE4,0x2E6B39C,0x2E6FD6C]

    for i in offset_list:
        target_addr = base_addr + i
        print(f"[+] 目标地址: 0x{target_addr:X}")

        value = 0x63090c37
        data_bytes = struct.pack("<I", value)

        write_memory(pid, target_addr, data_bytes)
        print(f"[+] 成功写入 0x{value:08X} 到 0x{target_addr:X}")

1753177228668-d09cd50c-5d3b-4544-8158-45e11f0c8e98.png
Snipaste_2025-07-23_15-49-16.png

免费评分

参与人数 11吾爱币 +9 热心值 +8 收起 理由
AlphaQing + 1 我很赞同!
keaidelly + 1 + 1 我很赞同!
cp2nq + 1 + 1 我很赞同!
tianmiao + 1 + 1 我很赞同!
Rzxnat + 1 热心回复!
tetrahedro + 1 + 1 谢谢@Thanks!
jiukou + 1 + 1 热心回复!
yCENzh + 1 大佬就是大佬,学会了,困扰我这么久的问题解决了
咑菿尐鈤夲 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
leeoff + 1 谢谢@Thanks!
莫奇 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Anna007 发表于 2025-11-21 20:59
1. 先去微信官网下载widnows微信4.1版本安装到比如 D:\WeChat4 路径(注意不要用默认带Tencent的默认路径,最好用C:或者D:的根目录 3.9的同理)

2. 再去微信官网下载3.9.12版本微信,安装到与4.1不同的路径 比如D:\WeChat3.9

3. 把桌面的微信图标的快捷方式全删了

4. 到微信4.1的安装路径找到Weixin.exe右键创建快捷方式,将这个快捷方式改名为【微信4】然后复制到桌面

5. 到微信3.9的安装路径找到WeChat.exe右键创建快捷方式,将这个快捷方式改名为【微信3.9】然后复制到桌面

6. 双击打开【微信4】,使用不能登录微信3.9.12的账号扫码登录,登录完成进入成功后退出微信4

7. 此时再双击打开【微信3.9】,使用刚刚的账号扫码登录,发现原来不能登录微信3.9.12的账号成功登录进入微信3.9

有部分账号可能用此方案也无法登录3.9, 全部卸载重装, 如果多次重试就是不行, 就没办法了, 换账号吧
time2024 发表于 2025-7-23 21:42
登录后,会发生各种奇葩问题,少群,少人,变成一个人的群,哈哈
zhanhun02 发表于 2026-2-5 13:44
同时安装微信4和3的版本方法没有用,不用尝试了
moliy 发表于 2025-7-24 08:34
说到新版微信..真不好用啊 看着好看  我的nvdia即时回放总是会录微信窗口... 不录我的游戏窗口了 语音的时候 别人也会反映我的声音很小.. 用旧版就正常了
phxi 发表于 2025-7-23 22:18
我也试过换版本号,用了一段时间确实会出现一些问题。果断放弃
莫奇 发表于 2025-7-23 22:20
新版的微信是真垃圾啊,聊天窗口不能直接单独拖拽出来,软件的整个页面也好大,好占地方
莫奇 发表于 2025-7-23 22:21
现在用391251的也正常登录   可能之前一直没更新过
lwj1367 发表于 2025-7-23 22:40
time2024 发表于 2025-7-23 21:42
登录后,会发生各种奇葩问题,少群,少人,变成一个人的群,哈哈

毕竟是旧版本,可能会与服务器上下载的一些数据不兼容
生如上善若水 发表于 2025-7-23 23:17
正需要,谢谢分享
PACold 发表于 2025-7-23 23:22
乐色微信你真该多看齐你大哥QQ,多友好
hanynt 发表于 2025-7-23 23:43
登入旧版以后,感觉和现在的新版存在接口不兼容问题。就像不在同一个服务器一样。
咑菿尐鈤夲 发表于 2025-7-24 00:03
新版的微信就间路边坨
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-8-7 06:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表