标题: 同时启动Skype.exe的多个实例
创建: 2006-10-31 17:24
链接:
http://www.opencjk.org/~scz/misc/200610311724.txt
我们修理的Skype.exe属性如下:
--------------------------------------------------------------------------
文件版本 : 2.5.0.91
产品版本 : 2.5
BuildTime : 22.05.2006 13:06:54
文件大小 : 20,440,616字节
语言 : 英语(美国)
--------------------------------------------------------------------------
从1.1.0.79至2.5.0.151版,Skype.exe都不允许多个实例存在,只能启动一个实例。
Skype.exe启动时创建有名互斥锁,检查GetLastError()返回值是否等于
ERROR_ALREADY_EXISTS,以此阻止启动第二个实例。
以2.5.0.91版为例:
--------------------------------------------------------------------------
006D2A22 call sub_734234
006D2A27 cmp [ebp+var_C], 0B7h ; ERROR_ALREADY_EXISTS
006D2A2E jz short loc_6D2A3A
--------------------------------------------------------------------------
如果我们提前恶意创建有名互斥锁,Skype.exe将无法启动,实测无误。
修改二进制文件:
--------------------------------------------------------------------------
006D2A2E /74 0A je short 006D2A3A
--------------------------------------------------------------------------
006D2A2E /74 06 je short 006D2A36
--------------------------------------------------------------------------
这样处理后的Skype_new.exe可以直接启动多个实例。也可以写个loader在内存中动
态patch,参看更新后的skypeloader.exe:
http://www.opencjk.org/~scz/misc/skypeloader.exe
更新后的skypeloader.exe与原skypeloader.c不匹配,放在Skype.exe所在目录,双
击执行,绕过针对SoftICE的检测,允许启动多个实例,适用于1.1.0.79至2.5.0.151
版。
实测表明本机启动的多个Skype.exe实例之间可以即时聊天、语音通信。
同时启动多个Skype.exe实例有一定意义,比如方便同时调试C/S。