0x00 前言

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

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

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

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

0x01 分析

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

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

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

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

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

找到疑是的一段句柄。

12
\Sessions\1\BaseNamedObjects\_WeChat_App_Instance_Identity_Mutex_Name\Sessions\1\BaseNamedObjects\WeChat_GlobalConfig_Multi_Process_Mutex

感觉这两个都像,不管了,上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. 启动微信

下面是主要代码:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
//步骤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);                 }             }         }     }

  }}
1234567891011121314151617181920
步骤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);

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

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

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

微信(WeChat)电脑端多开相关推荐

  1. bat脚本中如何多次键盘输入并判断_电脑上如何多开微信?PC端多开微信的方法

    相信很多人都有多个微信,尤其是那些工作和生活分的比较开的人士,大家都知道一个电脑和可以登录多个QQ的,但是对于微信却不是这样.当你已经登录一个微信时,再打开微信时会自动弹出当前已经登录的微信窗口.本文 ...

  2. 苹果微信多开_简易版!微信电脑端多开方法!!!

    点击上方"GitHub指南",星标公众号优秀文章,第一时间送达hello,大家好,这里是GitHub指南.有点好奇大家有几个微信号?不少小伙伴应该都有两个甚至多个微信号吧,为了避免 ...

  3. 电脑端多开微信及其原理分析

    文章目录 电脑端多开微信及其原理分析 相关内容:Python 实用内容 1.如何实现 - CMD 代码版本 2.如何实现 - python 代码版本 3.启动原理 电脑端多开微信及其原理分析 相关内容 ...

  4. 微信电脑端多开操作 要开多少台就有多少台(电脑小白都会)

    微信电脑端多开操作 要开多少台就有多少台 [电脑小白都会] 步骤一 步骤二 步骤三 步骤四 步骤五 步骤一 在桌面找到微信图标 步骤二 复制下面红色圈圈的路径 步骤三 在桌面新建一个txt文件,把刚刚 ...

  5. Python itchat模块报错:为了你的帐号安全,此微信号不能登录网页微信。你可以使用Windows微信或Mac微信在电脑端登录。

    有谁知道Python itchat模块的问题? 我就写了两行代码: itchat.auto_login(True) friends = itchat.get_friends(update=True)[ ...

  6. 电脑微信多开方法_微信电脑端多开方法

    白菜哥每天都能收到很多网友留言其中比较多的是微信怎么多开今天白菜哥就给大家展示一下手机版白菜哥没有很好的方法,现在很多安卓手机都支持应用双开,所以直接用双开就好,苹果手机的话不建议使用多开软件,会出现 ...

  7. 【微信】PC端多开设置

    文章目录 背景 步骤 查找微信安装路径 编写.bat启动脚本 自定你快捷键图标 创建快捷方式 修改图标 背景 个人喜欢工作和生活分离,包括手机号和微信都是生活号和工作号两个. 快速区分生活还是工作信息 ...

  8. 微信分享 电脑端正常,手机端不行

  9. delphi 微信(WeChat)多开源代码

    在网上看到一个C++代码示例: 原文地址:http://bbs.pediy.com/thread-217610.htm 觉得这是一个很好的调用 windows api 的示例,故将其转换成了 delp ...

最新文章

  1. eclipse字体大小设置_Java 设置Excel单元格格式—基于Spire.Cloud.SDK for Java
  2. Ecplise中tomcat上运行HTML文件自动加载
  3. 跟踪算法基准--Tracking the Trackers: An Analysis of the State of the Art in Multiple Object Tracking
  4. 【转载】用开源软件搭建企业内部协作平台, Kill QQ MSN
  5. Ubuntu 下Mysql常用命令
  6. nginx反向代理https站点
  7. c++读取图片_Pytorch读取,加载图像数据(一)
  8. 洛谷P2483 Bzoj1975 [SDOI2010]魔法猪学院
  9. java面试核心知识点,详解系列文章
  10. 食饵捕食者模matlab,几类食饵-捕食者模型的定性分析和数值模拟
  11. 怎么用java跟数据库建立关系,java – 关系和构建数据库
  12. Fragment学习笔记
  13. Android4.0源码编译方法以及错误解决方案
  14. kotlin_Kotlin弦
  15. poj 2503 Babelfish
  16. 计算机的主要元器件介绍,计算机基础电子元器件介绍.ppt
  17. html textbox控制内容,textbox只能输入数字
  18. html自动聊天机器人源代码,QQ全自动聊天机器人
  19. I3D【Inflated 3D ConvNet】——膨胀卷积网络用于行为识别
  20. 清明时节雨纷纷,路上行人欲断魂; 清明,请为逝去的亲人捎去祝福!

热门文章

  1. es5 温故而知新 创建私有成员、私有变量、特权变量的方法
  2. SpringBoot实践:更换启动Logo字样
  3. Oracle加入Eclipse MicroProfile项目
  4. 请汇编高手注释的CompareText
  5. 第一次来写博客,这里可以记录很多故事。
  6. 原子操作之sync/atomic
  7. VB6+Winsock编写的websocket服务端
  8. KMP算法的理解,伪代码,c代码实现
  9. 微软一站式示例代码浏览器 v5.1 更新
  10. 找工作壹個月以来的感受