python分析實現微信釘釘等軟件多開分身

目前很多軟件都限制單實例,大多數軟件都是用Mutex來實現的 而這個東西咱們可以用handle去幹掉它,並且不影響使用。 釘釘也是一樣的步驟 不過Mutex的名字不一樣 我測試的釘釘的是:

”\Sessions\1\BaseNamedObjects\{{239B7D43-86D5-4E5C-ADE6-CEC42155B475}}DingTalk“

這裡要借助微軟的兩個軟件 分別是:procexp handle

接下來開始正文:

首先咱們要手動判斷下Mutex是哪個。

這就要用到procexp.exe瞭 以管理員身份運行該程序。

選中微信進程 按Ctrl+L 就會出現圖中下半部分。

在軟件中我們可以找type 是Mutant 的 然後右鍵有個關閉 一個一個試 這裡我已經試過瞭就不演示瞭 直接給大傢

name \Sessions\1\BaseNamedObjects\WeChat_GlobalConfig_Multi_Process_Mutex

到這一步之後 這個工具的使命就完成瞭!接下來該使用handle瞭 在cmd 輸入下面的代碼

handle -a -u -p 12668 "\Sessions\1\BaseNamedObjects\WeChat_GlobalConfig_Multi_Process_Mutex"

然後我們在去關閉下這個句柄就可以瞭

handle -p 12668 -c 460 -y

註意:這句代碼需要管理員權限

然後我們再去打開微信就可以瞭。

下面我們用python去實現下

代碼可能和分析不太一樣 因為

"\Sessions\1\BaseNamedObjects\WeChat_GlobalConfig_Multi_Process_Mutex"

中的1 有時候會變成其他數字,所以我用瞭匹配規則

把代碼和handle.exe 放在一個目錄下

import os
import re
import psutil
 
 
def get_pid(name):
    """
    獲取所有的微信進程
    """
    process_list = psutil.pids()
    pids = []
    for pid in process_list:
        if psutil.Process(pid).name() == name:
            pids.append(pid)
    return pids
 
 
def more_open(path):
    pids = get_pid("WeChat.exe") 
    for pid in pids:
        #遍歷所有微信的pid 把 Mutex都幹掉
        cmd = f"handle -a -u -p {pid}"
        with os.popen(cmd) as f:
            result = f.read()
        search_result = ""
        for i in result.split("\n"):
            if i.strip():
                if i.strip().endswith("_WeChat_App_Instance_Identity_Mutex_Name"):
                    search_result += i
        if not search_result:
            os.startfile(path)
            continue
        re_result = re.findall('(\d+): Mutant', search_result, re.S)
        #上面這個循環是匹配 Mutex的handle
        if re_result:
            for _id in re_result:
                os.system(f'handle -p {pid} -c {_id} -y')
            os.startfile(path)
 
path = "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe"
more_open(path)

到此這篇關於python分析實現微信釘釘等軟件小號多開的文章就介紹到這瞭,更多相關python 微信多開內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: