微信电脑端多开有妙招,批处理文件轻松搞定

2025-04-05
来源:网络整理

您也可以打开更多微信计算机

最近,我不小心从我的好朋友那里学到,他的计算机实际上可以同时访问两个微信帐户。

我知道,华为和小米等手机已经支持了这一点,但是如何在运行系统的计算机上启动两个微信?这引起了我的好奇心。

告诉我他这样做并写了一批:

start D:\WeChat\WeChat.exe
start D:\WeChat\WeChat.exe

然后,双击批处理文件以启动两个微信进程。

我尝试了,事实证明是如此!

然后我添加了另一行,可以再启动3个:

然后我搜索了互联网,发现此举很久以前就使用了。似乎是我在火星上。但是我真的很想知道为什么我可以以这种方式打开更多。

提示:如果您对技术分析部分不感兴趣,则可以跳到直接到后部分的真相部分。

微信的模型

在正常情况下,如果您手动双击微信号开始,则该过程稍后将进行全局模式检查。如果发现已经存在一个微信过程,则将直接激活相应过程的微信窗口,将其定位在桌面的前面,然后独自退出。

但是,为什么我们可以在上述方法中启动其中两个呢?让我们找出答案。

首先,让我们分析上述微信的单个实例如何实现。

正在开发平台应用程序的朋友可能会熟悉这一点。通常,在过程启动后,创建了具有全球唯一名称的静音。如果创建成功,它将正常启动。如果创建失败,它将确定二线是否已经存在。如果已经存在,则意味着相应的程序在启动之前已经启动。

使用此猜想,使用该工具查看由微信过程打开的所有内核对象,并找到静音部分:

微信开店铺怎么开_微信多开2_微信开小号

果然,有一个哑光。从这个名称可以猜测,这绝对与微信的模式有关。

接下来,启动工件,可以帮助您监视指定过程的API调用状态,并检查其两个API功能。当微信已经运行时,请使用此工具开始微信流程并查看功能调用情况:

您可以看到,在使用此名称创建静音后,该函数被调用并返回以查看手册,这意味着:

表明它已经存在。

让我们看一下此通话的堆栈,看看代码在何处创建此全局互斥:

从堆栈中,呼叫来自微信目录中的 .dll。具体位置是偏移量的先前指令。

接下来,我们将在著名的拆卸软件IDA中使用工件。这个人支持对X86,X64,ARM,MIPS和各种系统平台等各种处理器体系结构的计划分析,,,,,,,一种,,,,,,,,,,,,一种,,,

使用IDA打开此.dll文件,并在偏移量中找到它:

如上图所示,创建静音的作用发生在函数中。

上层是调用它的功能:

上图反映了创建静音后的判断逻辑:

问题在于上述判断。装配代码看起来有点引人注目。让我们在F5中还原C代码(仅能完成恢复效果,只需清楚地阅读逻辑):

微信开店铺怎么开_微信多开2_微信开小号

上图中的注释已经解释说,该函数的返回值将确定是启动微信实例过程还是直接退出。

只有一个真理

事实在这一点上已经揭示了,让我们总结一下。

确定是否在微信上开始的两个条件:

使用伪代码来表达它:

if (CreateMutex() == SUCCESS) {
  启动微信
else {
  if (FindWindow() == SUCCESS) {
    将已有窗口置顶
  } else {
    启动微信
  }
}

对于直接从脚本开始的多个过程,尽管操作系统内核级别可确保静音的唯一性,因为启动速度的差异很小,但尚未创建相应的窗口,这导致了上面的第二个启动逻辑,因此可以启动多个实例。

小发现

在分析过程中,发现了一个有趣的事情:

在.dll中,以上创建的以先前的级别函数命名,该功能也由DLL导出为导出函数:

我不知道这是故意的还是在微信上写的。如果是错别字,这位程序员的同学看到了它,然后去秘密修改它。

- eof-

分享