PC微信(WeChat)电脑端多开分析+源码

0x00 前言

不知道大家有没有多个微信号,我反正有一两三个。

现在电脑端微信使用频率也比较高,主要用于大文件传输,或者手机电脑文件互传等等,除了不能收红包和看朋友圈,貌似电脑端没其他毛病。

哦,还有个毛病,只能开一个微信,只能开一个,开一个,一个…

不管这些有的没的,今天的主题是,怎么样在电脑上开多个微信客户端!

0x01 分析

了解过单实例的同学,应该都知道大概是怎么实现的单开。

简单说下,大都通过判断Mutex、Event、File等等是否已经存在,存在则退出当前开启进程(说明已经有一个进程了),这样也就是单实例了。

那只要找到微信是通过什么标志来实现单实例的,然后干掉这个标志即可。

然后…基于这个思路,我们上工具。

使用procexp找到微信进程,然后翻了一遍句柄。

找到疑是的一段句柄。

\Sessions\1\BaseNamedObjects\_WeChat_App_Instance_Identity_Mutex_Name
\Sessions\1\BaseNamedObjects\WeChat_GlobalConfig_Multi_Process_Mutex
  • 1
  • 2

感觉这两个都像,不管了,上pchunter,kill掉句柄试一下。

经过尝试,发现_WeChat_App_Instance_Identity_Mutex_Name是单实例标志(kill句柄后可以开第二个客户端),WeChat_GlobalConfig_Multi_Process_Mutex没用。

既然如此,那开始码代码吧。

0x02 代码

可能的方案:

  1. 找微信判断标识的代码位置,然后直接patch掉,或者整个dll进去patch。然后大致去翻了一下,貌似代码在wechatwin.dll,然后加了vmp壳,所以就不折腾这个了。
  2. 直接通过代码kill掉这个Mutex的句柄(类似Pchunter操作),然后就可以开启第二个实例了,貌似明显更有优势啊。
  3. 额,如果觉得无所谓,每次开之前用pchunter关一次句柄也行,下面就不用看了…

这里选择第二个方案,开始代码。

流程: 
1. 枚举句柄,找到_WeChat_App_Instance_Identity_Mutex_Name的mutant 
2. duplicate句柄到本进程,然后close 
3. 启动微信

下面是主要代码:

//步骤1和2的代码
//获取到微信所有进程句柄
DWORD Num = GetProcIds(L"WeChat.exe", Pids);
...

Status = ZwQuerySystemInformation(SystemHandleInformation, pbuffer, 0x1000, &dwSize);

PSYSTEM_HANDLE_INFORMATION1 pHandleInfo = (PSYSTEM_HANDLE_INFORMATION1)pbuffer;

    for(nIndex = 0; nIndex < pHandleInfo->NumberOfHandles; nIndex++)
    {
        //句柄在Pids中,就是微信进程的句柄信息
        if(IsTargetPid(pHandleInfo->Handles[nIndex].UniqueProcessId, Pids, Num))
        {
            HANDLE hHandle = DuplicateHandleEx(pHandleInfo->Handles[nIndex].UniqueProcessId,
                        (HANDLE)pHandleInfo->Handles[nIndex].HandleValue,
                        DUPLICATE_SAME_ACCESS
                        );

            //对象名
            Status = NtQueryObject(hHandle, ObjectNameInformation, szName, 512, &dwFlags);
            //对象类型名
            Status = NtQueryObject(hHandle,  ObjectTypeInformation, szType, 128, &dwFlags);

            //找到微信的标志
            if (0 == wcscmp(TypName, L"Mutant"))
            {
                if (wcsstr(Name, L"_WeChat_App_Instance_Identity_Mutex_Name"))
                {

                    //DUPLICATE_CLOSE_SOURCE标志很重要,不明白的查一查
                    hHandle = DuplicateHandleEx(pHandleInfo->Handles[nIndex].UniqueProcessId,
                        (HANDLE)pHandleInfo->Handles[nIndex].HandleValue,
                        DUPLICATE_CLOSE_SOURCE
                        );
                    if(hHandle)
                    {
                        printf("+ Patch wechat success!\n");
                        CloseHandle(hHandle);
                    }
                }
            }
        }

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
步骤3的代码

//通过注册表找到微信安装目录
if(ERROR_SUCCESS != RegOpenKey(HKEY_CURRENT_USER, L"Software\\Tencent\\WeChat", &hKey))
{
    return;
}

DWORD Type = REG_SZ;
WCHAR Path[MAX_PATH] = {0};
DWORD cbData = MAX_PATH*sizeof(WCHAR);
if(ERROR_SUCCESS != RegQueryValueEx(hKey, L"InstallPath", 0, &Type, (LPBYTE)Path, &cbData))
{
    goto __exit;
}

PathAppend(Path, L"WeChat.exe");

//启动微信客户端
ShellExecute(NULL, L"Open", Path, NULL, NULL, SW_SHOW);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

代码就这样,有注释,就不再啰嗦。

完整代码,请看后面的地址。

0x03 总结

一个小玩意,供大家一笑。

编译好的可执行文件:

https://github.com/anhkgg/multi_wechat_pc/raw/master/WeChat%E5%A4%9A%E5%BC%80.exe

源码地址:

https://github.com/anhkgg/multi_wechat_pc

原文地址:https://www.cnblogs.com/ChiYue/p/8964891.html

时间: 2024-08-09 11:27:23

PC微信(WeChat)电脑端多开分析+源码的相关文章

微信公众账号第三方平台全网发布源码(java)- 实战测试通过

(更多资料,关注论坛:www.jeecg.org) package org.jeecgframework.web.rest.controller; import java.io.BufferedReader; import java.io.IOException; import java.io.PrintWriter; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import

微信小程序_微信小程序开发,小程序源码、案例、教程

原文地址:http://whosmall.com/?post=448 本文标签: 微信小程序 小程序源码案例 小程序项目 小程序源码 微信小程序教程 什么是微信小程序? 微信小程序是微信基于微信平台的一个应用发布平台,微信小程序app开发属于原生app组件提供js接口的开发方式,比混合是app的用户体验更好,仅次于原生应用. 不过微信小程序定位于小,要符合轻量易用无需下载,所以从体积上也是有限制,整个小程序应用体积不能超过1M. 微信小程序的应用场景? 微信小程序的应用场景适用于轻量应用,非强交

微信小程序-整理各种小程序源码和资料免费下载

微信小程序整理下载 [小程序源码]微信小程序-车源宝微信版 [小程序源码]小程序-微赞社区(论坛demo) [小程序源码]微信小程序-收支账单 [小程序工具]微信小程序-日历 [小程序源码]小程序-在线聊天功能 [小程序源码]微信小程序-大好商城(新增功能天气查询和2048游戏) [小程序源码]微信小程序-查询号码归属地 [小程序源码]微信小程序-备忘录2 [小程序源码]微信小程序-QQ音乐 [小程序源码]小程序-货币汇率 [小程序源码]微信小程序-大学图书馆 [小程序源码]小程序-积分商城 [

微信公众号H5游戏平台完整源码下载(几十款游戏和应用)

点击打开链接微信公众号H5游戏平台完整源码下载(几十款游戏和应用)完整打包下载,价值超高. 微信Html5游戏平台源码,包括40款h5小游戏和21款有趣的测试,大家可以直接打开浏览器本地测试. 下面展示部分效果图 11.png (149.71 KB, 下载次数: 0) 下载附件 H5游戏平台完整源码下载 3 分钟前 上传 22.png (45.41 KB, 下载次数: 0) 下载附件 H5游戏平台完整源码下载 3 分钟前 上传 33.png (115.83 KB, 下载次数: 0) 下载附件 H

信用卡空卡代还APP平台垫资系统开发送源码

信用卡空卡代还APP平台垫资系统开发送源码请致电王经理-153-1555-9232微信号同号你是否有用过信用卡低还款,结果每月支付的高利息,让你难以承受?你是否有过因为要还大额信用卡,找朋友借,发现钱真不是那么好借?你是否有过为还信用卡拆了东墙补西墙,多张信用卡互还,让你焦头烂额?稍不留心逾期了,导致被降额度.上征信名单,简直欲哭无泪.该怎么办?此时如果有一款产品可以让你可以轻松还款,解决还款和逾期难题是不是很好呢?垫付app智能信用卡管家软件.正是你需要的信用卡还款神器,具备如下几大特性:低费

Java微信公众平台开发模式+自定义按钮源码

首先,想用开放模式需要先成为开发者.成为开发者有两种写法. 一是:通过jsp页面,用out.print("echostr")//SHA1加密的字符串: 二是:通过Servlet.doGet返回exhostr,给微信平台. 这里我只写第二种方式的请求(这里的请求是以get方式请求),代码如下: import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.ut

easyloader [easyui_1.4.2] 分析源码,妙手偶得之

用easyui很久了,但是很少去看源码. 有解决不了的问题就去百度... 今日发现,easyui的源码不难懂. 而且结合 easyloader 可以非常方便的逐个研究easyui的组件. 但是, easyloader 的官方API介绍非常简略. easyloader.base = '../'; // 设置 easyui 基础目录 easyloader.load('messager', function(){ // 加载指定模块 $.messager.alert('Title', 'load ok

java分析源码-ReentrantLock

一.前言 ReentrantLock表示下面具体分析ReentrantLock源码. 二.ReentrantLock数据结构 ReentrantLock的底层是借助AbstractQueuedSynchronizer实现,所以其数据结构依附于AbstractQueuedSynchronizer的数据结构,关于AQS的数据结构,在前一篇已经介绍过,不再累赘. 三.ReentrantLock源码分析 3.1 类的继承关系 public class ReentrantLock implements L

tensorflow运行原理分析(源码)

tensorflow运行原理分析(源码)  https://pan.baidu.com/s/1GJzQg0QgS93rfsqtIMURSA 原文地址:https://www.cnblogs.com/liuzhongfeng/p/8778422.html