首页
社区
课程
招聘
[旧帖] [原创]SKYPE不能远行多个实例分析 0.00雪花
发表于: 2007-10-25 10:14 5293

[旧帖] [原创]SKYPE不能远行多个实例分析 0.00雪花

2007-10-25 10:14
5293
【文章标题】: SKYPE不能远行多个实例分析
【文章作者】: sunsjw
【软件名称】: SKYPE
【下载地址】: http://download.skype.tom.com/Tom-SkypeSetup.exe
【加壳方式】: 无壳
【编写语言】: C++Builder 6.0
【使用工具】: OLLYDBG,PEID
【操作平台】: win2003 r2
【软件介绍】: IM类的软件
【作者声明】: 只是感兴趣,作为学习,由于水平有限错误之处请高手指出。。。。
SKYPE最近搞活动,挂机送话费。我想在一头电脑上多挂几个账号,可是SKYPE只允许一个实例。我申请了5个账号,难道要5台电脑同时开着吗?太浪费国家的电力了。自己动手丰衣足食吧。

PEID查Borland Delphi 6.0 - 7.0 [Overlay],但是我觉得是C++Builder。不管怎么好在程序没加壳比较好办。该程序有反调试功能,不过太弱了只是反ICE和一个什么调试器,对OD根本不起作用。

打开OD载放SKYPE.EXE文件停在入口处 005c9ecc:

005C9ECC > $ /EB 57         jmp     short 005C9F25
005C9ECE   . |BA 04777777   mov     edx, 77777704
005C9ED3   . |52            push    edx
005C9ED4   . |B9 689F5C00   mov     ecx, 005C9F68
005C9ED9   . |B8 ED9E5C00   mov     eax, 005C9EED
005C9EDE   . |29C1          sub     ecx, eax
005C9EE0   . |BB 03777777   mov     ebx, 77777703
005C9EE5   > |301C01        xor     byte ptr [ecx+eax], bl
005C9EE8   . |C1C3 03       rol     ebx, 3
005C9EEB   .^|E2 F8         loopd   short 005C9EE5
005C9EED   . |5A            pop     edx
005C9EEE   . |31C9          xor     ecx, ecx
005C9EF0   . |BB 41403938   mov     ebx, 38394041
005C9EF5   > |81FA CC9E5C00 cmp     edx, <模块入口点>

在命令行下断点:bp CreateMutexA
F9运行程序,然看观察堆栈直到出现下面的字样

0013FEDC   00408987  /CALL 到 CreateMutexA 来自 Skype.00408982
0013FEE0   00000000  |pSecurity = NULL
0013FEE4   00000000  |InitialOwner = FALSE
0013FEE8   025A4F94  \MutexName = "Local\SkypeMutex"
0013FEEC  /0013FF28
0013FEF0  |00D33B2B  返回到 Skype.00D33B2B 来自 Skype.0040896C
0013FEF4  |00000000
0013FEF8  |00000000
0013FEFC  |025A4F94  ASCII "Local\SkypeMutex"
0013FF00  |0013FF30  指向下一个 SEH 记录的指针
0013FF04  |00D33BEB  SE处理程序

好了,现在Alt+F9返回到程序领空

00408987  |.  5D            pop     ebp                              ;  0013FF28
00408988  \.  C2 0C00       retn    0C
0040898B      90            nop

现在按F8一步一步跟吧,按2次F8来到这里

00D33B2B  |.  A3 00FBEE00   mov     dword ptr [EEFB00], eax
00D33B30  |.  E8 C74F6DFF   call    <jmp.&kernel32.GetLastError>     ; [GetLastError
00D33B35  |.  8945 F4       mov     dword ptr [ebp-C], eax
00D33B38  |.  833D 00FBEE00>cmp     dword ptr [EEFB00], 0
00D33B3F  |.  74 54         je      short 00D33B95
00D33B41  |.  A1 00FBEE00   mov     eax, dword ptr [EEFB00]
00D33B46  |.  50            push    eax                              ; /hMutex => 00000160 (window)
00D33B47  |.  E8 A0516DFF   call    <jmp.&kernel32.ReleaseMutex>     ; \ReleaseMutex
00D33B4C  |.  8D4D EC       lea     ecx, dword ptr [ebp-14]
00D33B4F  |.  B2 08         mov     dl, 8
00D33B51  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
00D33B54  |.  E8 C7F775FF   call    00493320
00D33B59  |.  8B4D EC       mov     ecx, dword ptr [ebp-14]
00D33B5C  |.  8D45 F0       lea     eax, dword ptr [ebp-10]
00D33B5F  |.  BA 043CD300   mov     edx, 00D33C04                    ;  ASCII "CreateMutex returned ok, GetLastError="
00D33B64  |.  E8 27226DFF   call    00405D90
00D33B69  |.  8B4D F0       mov     ecx, dword ptr [ebp-10]
00D33B6C  |.  BA 343CD300   mov     edx, 00D33C34                    ;  ASCII "findInstance"
00D33B71  |.  A1 8CA1EA00   mov     eax, dword ptr [EAA18C]
00D33B76  |.  E8 D9CC1700   call    00EB0854

看这里00D33B3F  |.  74 54         je      short 00D33B95
把je改为jmp保存,OK,SKYPE可以运行多个实例了。
没什么技术含量,分析下:
程序调用CreateMutexA建立互斥变量,如果成功了就证明没有实例运行,失败则说明程序已经有一个实例在运行。激活运行的程序,退出本实例。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 8729
活跃值: (5195)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
网速太慢,点了没反应,就多点了几下提交,结果提交了4次。版主把其它的删除了吧。
2007-10-25 10:18
0
雪    币: 218
活跃值: (299)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好东东
值的一看
2007-10-28 20:30
0
雪    币: 199
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
虽说没找到你文中的这些地址,但很多代码都是一样的,被我乱来了一下就搞定了,哈哈
不知道原理,对汇编一点都不懂,
谢谢!
2007-11-2 18:45
0
雪    币: 199
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不知道 CreateMutexA 是什么东西,为什么要在它上面断点
也不知道为什么要到这里
0013FEDC   00408987  /CALL 到 CreateMutexA 来自 Skype.00408982
0013FEE0   00000000  |pSecurity = NULL
0013FEE4   00000000  |InitialOwner = FALSE
0013FEE8   025A4F94  \MutexName = "Local\SkypeMutex"
0013FEEC  /0013FF28
0013FEF0  |00D33B2B  返回到 Skype.00D33B2B 来自 Skype.0040896C
0013FEF4  |00000000
0013FEF8  |00000000
0013FEFC  |025A4F94  ASCII "Local\SkypeMutex"
0013FF00  |0013FF30  指向下一个 SEH 记录的指针
0013FF04  |00D33BEB  SE处理程序

虽然不明白,但居然成功了,再次谢谢
2007-11-2 18:48
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
你說的是Syser嘛?
我掛載Syser
結果 skype 彈出訊息說 偵測到 softice之類的 debugger

請問
如果是 syser
要怎麼躲過 skype 的偵測呢?
我知道 ollydbg 可以
不過我對 syser 還不是很熟
2007-11-2 22:12
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
好文章!楼上问的是skype的antidebug 可以查一下相关文献
2007-11-13 08:04
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
8
虽然我用不着 还是支持下lz
2007-11-13 09:28
0
游客
登录 | 注册 方可回帖
返回
//