中年微信pc端居然能多开,我探究了一波多开的秘密( 二 )
问题就出在上面这个判断中 , 汇编代码看起来有点辣眼睛 , 咱们F5来还原一下C代码(还原效果只能凑合看 , 能看清楚逻辑就行):
本文插图
上面图片的注解已经说明了 , 函数sub_108e2660的返回值将决定是否启动微信实例进程 , 还是直接退出 。
真相只有一个 事情到这里就真相大白了 , 来总结一下 。
微信判断是否启动的2个条件:
- 如果能成功创建互斥体对象 , 则启动微信
- 如果不能创建互斥体:
- 如果找到对应窗口 , 则置顶之 , 自己退出
- 如果没有找到 , 则启动微信
if(CreateMutex() == SUCCESS) {启动微信} else {if(FindWindow() == SUCCESS) {将已有窗口置顶} else {启动微信}}
而直接使用脚本启动的多个进程 , 虽然操作系统内核层面保证了互斥体的唯一 , 但由于启动速度相差不大 , 相应的窗口还没有来得及创建出来 , 导致走入上面的第二个启动逻辑 , 从而可以启动多个实例 。
小发现 在分析的过程中 , 发现了一个有趣的事情:
在WeChatWin.dll中 , 上面的创建互斥体再上一级函数名字叫StartWaChat , 也是作为导出函数被该DLL导出:
本文插图
【来源:Java识堂】
声明:转载此文是出于传递更多信息之目的 。 若有来源标注错误或侵犯了您的合法权益 , 请作者持权属证明与本网联系 , 我们将及时更正、删除 , 谢谢 。邮箱地址:newmedia@xxcb.cn
【中年微信pc端居然能多开,我探究了一波多开的秘密】
推荐阅读
- 中年美国寸土寸金,为何要在纽约建立林则徐广场?原因很简单
- 中年北斗系统发言人答封面新闻:北斗定位精度最好可达1点几米
- 中年检测设备行业政策及环境
- 中年元春回府省亲为何会在夜晚进行?原来其中大有文章
- 中年北斗三号全球服务可用性达99%以上,全球范围定位精度优于10米
- 呼吸的鱼|我真担心她的裤子,搞笑GIF:妹子居然能做出这个姿势
- 封面新闻|离奇!男子溺水失踪后,微信却被陆续提现…家属:确定不是本人!
- 锁定|起底电信诈骗“杀猪盘”:锁定中年女性,先培养感情再骗钱
- 央视财经微信|用户规模超4亿!这个行业,或迎来“黄金十年”!
- 中年做了几道硬菜,孩子们的胃口很大,可以无限量地吃