=============================
THUNDER SOFTWARE Thunder 4.7.3.53 PEdiy Tutorial
=============================
=============================
程序说明
什么是迅雷?
迅雷是一款新型的基于P2SP技术的下载软件。它使得您的下载更稳定和更迅速。
要进一步了解迅雷,就要了解到什么是P2SP。
我想大多数人对P2P并不陌生,P2P的下载概念,简单点说,
就是下载不再象传统方式那样只能依赖服务器,内容的传递可以在网络上的各个终端机器中进行。
P2SP除了包含P2P以外,P2SP的“S”是指服务器。
P2SP有效地把原本孤立的服务器和其镜像资源以及P2P资源整合到了一起。
也就是说,在下载的稳定性和下载的速度上,都比传统的P2P或P2S有了非常大的提高。
=============================
=============================
破解说明
保护方式:
Freeware+Advertisement
破解目的:
最近迅雷在网上大行其道,其下载速度确实不凡。
不过本人一直使用本本,屏幕太小,Thunder的广告条窗口让俺本来就小小的屏幕变的更小了。
郁闷中,想起以前的FlashGet等下载软件都有人对其进行过修改,去掉了广告条。
我也自己试试,看看能不能来个简单的DIY。
破解结果:
通过修改3个字节,修改掉广告条窗口。
可惜的是,播放广告内容的函数好像和整个软件的功能有关,
不敢随便乱改,就让它在消失的窗口里播放去吧,^_^。
=============================
=============================
破解分析
1. PEiD检测主程序Thunder.exe,无壳,VC6编译。
2. 因为是DIY,与加密解密无关,以往使用的加密算法检测就省略了。
3. 用OllyDbg载入Thunder.exe,搜索当前模块中的名称。
因为要DIY的与窗口有关,搜索MoveWindow API,没有发现,看来程序使用的MFC封装。
在MFC库里寻找,发现MFC42.#4299_CWnd::MoveWindow。
对所有参考设断,共29处。
F9运行,程序中断第一个MFC42.#4299_CWnd::MoveWindow处。
向下查看源码,发现了4个连续的DeferWindowPos
挨个分析MFC42.#4299_CWnd::MoveWindow和DeferWindowPos的参数,
正好与程序开始显示的窗口大小结构相同。
修改第1个DeferWindowPos的参数,使其高度为零。
修改第2个DeferWindowPos的参数,使其高度使原第1、2个DeferWindowPos高度的和(C0+103);
原点位置为原第1个DeferWindowPos的原点(0,0)。
F9,继续运行,,取消其他MFC42.#4299_CWnd::MoveWindow断点。
程序运行,广告条消失,修改成功!
=============================
=============================
源码分析
通过对MFC42.#4299_CWnd::MoveWindow设断,一步跟踪到以下代码:
0041ED4C |. E8 CD9E0800 call <jmp.&MFC42.#4299_CWnd::MoveWindow> ; --->中断在这里
0041ED51 |. 6A 04 push 4 ; /Count = 4
0041ED53 |. FF15 508F5500 call dword ptr ds:[<&USER32.BeginDeferWindowPos>; \BeginDeferWindowPos
0041ED59 |. 8D75 CC lea esi,dword ptr ss:[ebp-34] ; --->开始定义窗口位置,个数为4
0041ED5C |. 8D7D EC lea edi,dword ptr ss:[ebp-14]
0041ED5F |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041ED60 |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041ED61 |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041ED62 |. 8945 FC mov dword ptr ss:[ebp-4],eax
0041ED65 |. 8D83 D0000000 lea eax,dword ptr ds:[ebx+D0]
0041ED6B |. 85C0 test eax,eax
0041ED6D |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041ED6E |. 74 03 je short Thunder.0041ED73
0041ED70 |. 8B40 20 mov eax,dword ptr ds:[eax+20]
0041ED73 |> 6A 04 push 4 ; /Flags = SWP_NOZORDER
0041ED75 |. 6A 3C push 3C ; |
0041ED77 |. 59 pop ecx ; |--->修改为00
0041ED78 |. 2B4D F0 sub ecx,dword ptr ss:[ebp-10] ; |
0041ED7B |. 51 push ecx ; |Height=3C->00
0041ED7C |. 8B4D F4 mov ecx,dword ptr ss:[ebp-C] ; |
0041ED7F |. 2B4D EC sub ecx,dword ptr ss:[ebp-14] ; |
0041ED82 |. 51 push ecx ; |Width
0041ED83 |. FF75 F0 push dword ptr ss:[ebp-10] ; |Y=0
0041ED86 |. FF75 EC push dword ptr ss:[ebp-14] ; |X=0
0041ED89 |. 6A 00 push 0 ; |hAfterWnd = HWND_TOP
0041ED8B |. 50 push eax ; |hWnd
0041ED8C |. FF75 FC push dword ptr ss:[ebp-4] ; |hDefer
0041ED8F |. FF15 4C8F5500 call dword ptr ds:[<&USER32.DeferWindowPos>] ; \DeferWindowPos
0041ED95 |. 8D75 CC lea esi,dword ptr ss:[ebp-34] ; --->广告条窗口
0041ED98 |. 8D7D EC lea edi,dword ptr ss:[ebp-14]
0041ED9B |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041ED9C |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041ED9D |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041ED9E |. 8D83 68010000 lea eax,dword ptr ds:[ebx+168]
0041EDA4 |. 85C0 test eax,eax
0041EDA6 |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041EDA7 |. 74 03 je short Thunder.0041EDAC
0041EDA9 |. 8B40 20 mov eax,dword ptr ds:[eax+20]
0041EDAC |> 8B4D F4 mov ecx,dword ptr ss:[ebp-C]
0041EDAF |. 6A 04 push 4 ; /Flags = SWP_NOZORDER
0041EDB1 |. 2B4D EC sub ecx,dword ptr ss:[ebp-14] ; |
0041EDB4 |. 68 03010000 push 103 ; |Height = 103 (259.)--->修改为13F(103+3C)
0041EDB9 |. 51 push ecx ; |Width
0041EDBA |. 6A 3C push 3C ; |Y = 3C (60.)--->修改为00
0041EDBC |. FF75 EC push dword ptr ss:[ebp-14] ; |X
0041EDBF |. 6A 00 push 0 ; |hAfterWnd = HWND_TOP
0041EDC1 |. 50 push eax ; |hWnd
0041EDC2 |. FF75 FC push dword ptr ss:[ebp-4] ; |hDefer
0041EDC5 |. FF15 4C8F5500 call dword ptr ds:[<&USER32.DeferWindowPos>] ; \DeferWindowPos
0041EDCB |. 8D75 CC lea esi,dword ptr ss:[ebp-34] ; --->下载项目窗口
0041EDCE |. 8D7D EC lea edi,dword ptr ss:[ebp-14]
0041EDD1 |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041EDD2 |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041EDD3 |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041EDD4 |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041EDD5 |. 8B45 F4 mov eax,dword ptr ss:[ebp-C]
0041EDD8 |. 8D8B 3C1C0000 lea ecx,dword ptr ds:[ebx+1C3C]
0041EDDE |. 48 dec eax
0041EDDF |. 85C9 test ecx,ecx
0041EDE1 |. 8945 F4 mov dword ptr ss:[ebp-C],eax
0041EDE4 |. 74 03 je short Thunder.0041EDE9
0041EDE6 |. 8B49 20 mov ecx,dword ptr ds:[ecx+20]
0041EDE9 |> 2B45 EC sub eax,dword ptr ss:[ebp-14]
0041EDEC |. 6A 04 push 4 ; /Flags = SWP_NOZORDER
0041EDEE |. 68 C0000000 push 0C0 ; |Height = C0 (192.)
0041EDF3 |. 50 push eax ; |Width
0041EDF4 |. 68 3F010000 push 13F ; |Y = 13F (319.)
0041EDF9 |. FF75 EC push dword ptr ss:[ebp-14] ; |X
0041EDFC |. 6A 00 push 0 ; |hAfterWnd = HWND_TOP
0041EDFE |. 51 push ecx ; |hWnd
0041EDFF |. FF75 FC push dword ptr ss:[ebp-4] ; |hDefer
0041EE02 |. FF15 4C8F5500 call dword ptr ds:[<&USER32.DeferWindowPos>] ; \DeferWindowPos
0041EE08 |. 8D75 CC lea esi,dword ptr ss:[ebp-34]
0041EE0B |. 8D7D EC lea edi,dword ptr ss:[ebp-14]
0041EE0E |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041EE0F |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041EE10 |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041EE11 |. A5 movs dword ptr es:[edi],dword ptr ds:[esi]
0041EE12 |. 8B45 F4 mov eax,dword ptr ss:[ebp-C]
0041EE15 |. 81C3 A41B0000 add ebx,1BA4
0041EE1B |. 85DB test ebx,ebx
0041EE1D |. 8D48 FF lea ecx,dword ptr ds:[eax-1]
0041EE20 |. 74 03 je short Thunder.0041EE25
0041EE22 |. 8B5B 20 mov ebx,dword ptr ds:[ebx+20]
0041EE25 |> 6A 04 push 4 ; /Flags = SWP_NOZORDER
0041EE27 |. 2BC1 sub eax,ecx ; |
0041EE29 |. 68 C0000000 push 0C0 ; |Height = C0 (192.)
0041EE2E |. 50 push eax ; |Width
0041EE2F |. 68 3F010000 push 13F ; |Y = 13F (319.)
0041EE34 |. 51 push ecx ; |X
0041EE35 |. 6A 00 push 0 ; |hAfterWnd = HWND_TOP
0041EE37 |. 53 push ebx ; |hWnd
0041EE38 |. FF75 FC push dword ptr ss:[ebp-4] ; |hDefer
0041EE3B |. FF15 4C8F5500 call dword ptr ds:[<&USER32.DeferWindowPos>] ; \DeferWindowPos
0041EE41 |. FF75 FC push dword ptr ss:[ebp-4] ; /hDefer
0041EE44 |. FF15 548F5500 call dword ptr ds:[<&USER32.EndDeferWindowPos>] ; \EndDeferWindowPos
0041EE4A |. 5F pop edi
0041EE4B |. 5E pop esi
0041EE4C |. 5B pop ebx
0041EE4D |. C9 leave
0041EE4E \. C3 retn
=============================
=============================
PEdiy
用UltraEdit修改相应代码:
1ED76处3C->00
1EDB5处03->3F
1EDBB处3C->00
=============================
=============================
Greets
感谢PEiD/C32ASM/OllyDbg及其插件的开发、修改者,没有他们的杰出工作也就没有本文。
=============================
=============================
MrBeer[CCG]
19/Jul/2005
=============================
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!