乐易论坛-易语言培训教程火山PC视窗中文编程交流论坛

 找回密码
 立即注册

手机号登录

用手机号号登陆

微信登录

微信扫码,快速开始

QQ登录

用QQ账号登陆

办理VIP,定制软件,报名培训联系QQ[重磅]2024年实地培训高清培训目录火山PC版乐易模块使用教程
有了火山,易语言是否还有必要学习吗?易语言0基础入门课程火山PC视窗0基础入门课程
乐易论坛官方QQ群一览表易语言外挂0基础入门课程火山PC视窗火山HOOK入门课程
易语言误报处理课程QQ空间POST课程2022年火山PC易语言POST系列课程
Android逆向Jeb动态调试0基础课程QQ邮箱网页POST课程WeChat个微Hook实战课程
百日Js加密分析实战课程(无密下载)QQ群POST课程h5游戏WebSocket逆向视频
JavaScript加密特训课程易语言汇编快速入门课程破解实战系列课程
手游模拟器脚本0基础课程易语言加密防破解0基础入门课程广告位招租联系QQ1615457736
查看: 14469|回复: 1

VX(WeChat)电脑端多开分析+源码(翻自看雪)

[复制链接]

VX(WeChat)电脑端多开分析+源码(翻自看雪)

[复制链接]
已绑定手机
已实名认证
揰掵佲
等级头衔

等級:乐易运营组

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分成就
易币
贡献
主题
精华
金钱
积分
33290
注册时间
2014-8-2
最后登录
1970-1-1

勋章墙

2017-7-26 15:27:18 | 显示全部楼层 |阅读模式

据统计90%查看本帖的人,都已经注册本站了哦

您需要 登录 才可以下载或查看,没有账号?立即注册

×
0x00 前言
不知道大家有没有多个VX号,我反正有一两三个。
现在电脑端VX使用频率也比较高,主要用于大文件传输,或者手机电脑文件互传等等,除了不能收红包和看朋友圈,貌似电脑端没其他毛病。
哦,还有个毛病,只能开一个VX,只能开一个,开一个,一个…
不管这些有的没的,今天的主题是,怎么样在电脑上开多个VX客户端!
0x01 分析
了解过单实例的同学,应该都知道大概是怎么实现的单开。
简单说下,大都通过判断Mutex、Event、File等等是否已经存在,存在则退出当前开启进程(说明已经有一个进程了),这样也就是单实例了。
那只要找到VX是通过什么标志来实现单实例的,然后干掉这个标志即可。
然后…基于这个思路,我们上工具。
使用procexp找到VX进程,然后翻了一遍句柄。
找到疑是的一段句柄。


感觉这两个都像,不管了,上pchunter,kill掉句柄试一下。
经过尝试,发现_WeChat_App_Instance_Identity_Mutex_Name是单实例标志(kill句柄后可以开第二个客户端),WeChat_GlobalConfig_Multi_Process_Mutex没用。
既然如此,那开始码代码吧。
0x02 代码
可能的方案:
  • 找VX判断标识的代码位置,然后直接patch掉,或者整个dll进去patch。然后大致去翻了一下,貌似代码在wechatwin.dll,然后加了vmp壳,所以就不折腾这个了。
  • 直接通过代码kill掉这个Mutex的句柄(类似Pchunter操作),然后就可以开启第二个实例了,貌似明显更有优势啊。
  • 额,如果觉得无所谓,每次开之前用pchunter关一次句柄也行,下面就不用看了…
这里选择第二个方案,开始代码。
流程:
  • 枚举句柄,找到_WeChat_App_Instance_Identity_Mutex_Name的mutant
  • duplicate句柄到本进程,然后close
  • 启动VX
下面是主要代码:
//步骤1和2的代码//获取到VX所有进程句柄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中,就是VX进程的句柄信息        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);                                        //找到VX的标志                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);                        }                }        }        }                        }}步骤3的代码//通过注册表找到VX安装目录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");//启动VX客户端ShellExecute(NULL, L"Open", Path, NULL, NULL, SW_SHOW);

代码就这样,有注释,就不再啰嗦。
完整代码,请看后面的地址。
0x03 总结
一个小玩意,供大家一笑。
编译好的可执行文件:
源码地址:
博客原文:

回复

使用道具 举报

E小歪
等级头衔

等級:编程学徒

Rank: 3Rank: 3

积分成就
易币
贡献
主题
精华
金钱
积分
168
注册时间
2016-7-31
最后登录
1970-1-1

勋章墙

2017-8-4 10:38:51 | 显示全部楼层
支持老大,666
回复

使用道具 举报

如果懒得打字,请选择右侧内容快捷回复 提醒:以任何方式进行『恶意灌水』的行为,进行封号处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

热点推荐上一条 /5 下一条

QQ|网站地图|手机版|小黑屋|乐易论坛 | 湘ICP备19007035号

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表乐易立场!

娄底市乐易网络科技有限公司声明:乐易原创培训课程版权均为我公司所有,未经许可,不得擅自翻录,盗版,破解本站课课程,我们将保留法律诉讼的权利

GMT+8, 2024-3-28 18:56 , Processed in 0.048453 second(s), 39 queries .

Powered by Discuz! X3.4

Copyright © Tencent Cloud.

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