首页
论坛
专栏
课程

[原创]一次初级的PEdiy之旅――迅雷广告条移除

2005-7-19 15:01 20879

[原创]一次初级的PEdiy之旅――迅雷广告条移除

2005-7-19 15:01
20879
=============================
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
=============================

[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (48)
yuqli 2 2005-7-19 21:31
2
0
赞..
崇拜的五体投地
仙剑太郎 2 2005-7-20 00:44
3
0
不错呵..
Saver 2005-7-20 11:52
4
0
我用ResHack改的时候.无法完全去除,就是在主界面上留下一块黑黑的区域.看上去没有广告了,但实际还是存在的..只要眼不见为净就可以了~活活
就是把广告区域的那个大小改成0就OK了
然后用w32找到相应的地方,就可以改成无线程限制的了~顺大便说说吧..
pendan2001 4 2005-7-20 11:55
5
0
dyk158 2005-7-20 12:50
6
0
这个得支持,学习一下。
baby2008 28 2005-7-20 13:09
7
0
有效,界面看起来干净多了,感谢ing……
ljxkoh 2005-7-20 16:54
8
0
问几个菜鸟问题:

怎么在OD里面搜索MoveWindwo API?是搜索什么的?

另外,怎么在MFC库里面找出CWnd:MoveWindow()?

大侠们见笑了!
middlebeer 5 2005-7-20 17:05
9
0
在CPU窗口右键 搜索->当前模块中的名称
所有OD分析出的API都会列出来;

要显示MFC库里的函数名,需要在 调试->选择导入库中加入MFC42.lib
xsy3660 4 2005-7-20 22:26
10
0
支持一下,俺也改改看
roby 2005-7-20 22:53
11
0
good
已经修改完毕
呵呵
眼镜 2005-7-21 07:16
12
0
一行字:“知识改变命运!”
眼镜 2005-7-21 07:17
13
0
知识改变命运!!!!!!!!!!!!!
computersfan 2005-7-21 08:05
14
0
大家有没有什么教程呀,关于各种编程语言的函数都 是什么有什么作用,看人家,一看就知道基本上是哪个函数,没有系统的学习过编程,望各位不要见笑。
middlebeer 5 2005-7-21 09:16
15
0
最初由 computersfan 发布
大家有没有什么教程呀,关于各种编程语言的函数都 是什么有什么作用,看人家,一看就知道基本上是哪个函数,没有系统的学习过编程,望各位不要见笑。


这个基本上。。。靠猜的。
我也没学过
ljxkoh 2005-7-21 09:53
16
0
谢谢指教!

另外,为什么我用的OD在运行程序的时候,老是出现access violation,然后就停下来?
本来改用ollydgb_fix版已经好了很多,但是在调试这个程序的时候,还是没到断点的时候就终止代码,请问下大侠们用的是哪个版本的,怎么才可以消除那些异常?
闪电狼 2005-7-21 12:05
17
0
最初由 ljxkoh 发布
谢谢指教!

另外,为什么我用的OD在运行程序的时候,老是出现access violation,然后就停下来?
本来改用ollydgb_fix版已经好了很多,但是在调试这个程序的时候,还是没到断点的时候就终止代码,请问下大侠们用的是哪个版本的,怎么才可以消除那些异常?


请用原版试试
ljxkoh 2005-7-21 16:09
18
0
你的版本是在哪下的呢?我在网站上的三个版本都下过了,就觉得FIX版本是比较好一些的了。

老是在右下角的那个窗口里出现ASCII "Access violation - no RTTI data!"
出现了好多异常,提示要按CTRL+F7/F8/F9的,然后再多按几个就进程终止,这到底是什么问题的,我快疯了!

另外,怎么才能运行到自己写的EIP处,
我在命令行里面输入 * 00452362怎么显示Extra characters on line:00452362
天杀 2005-7-22 09:35
19
0
根本没有必要花那么多时间去改PE文件.看看他的配置文件.非常有规律.仔细看看.其实就是Base64编码.把它的广告条等配置改了就完事了
ljxkoh 2005-7-22 11:56
20
0
终于知道为什么会有那么多异常了! 只要把设置那里的忽略内存问题经打勾就行了!
xy2000 1 2005-7-22 14:58
21
0
最喜欢看PEDIY的文章,只是最早在看雪发PEDIY的老妖现在不知道在忙什么?
csjwaman 24 2005-7-22 15:49
22
0
楼主还能不能把“免费影视下载”和“迅雷精彩合作”两页屏蔽掉?
peaceclub 6 2005-7-22 16:28
23
0
楼主能不能做个无广告(广告窗口隐藏,也不去访问广告页面的)的安装程序出来给俺们用?
excuseser 2005-7-22 21:49
24
0
迅雷4.x 有个WebBrowserEx.dll,里面有个函数好像是navigate***url只要把这个稍微改下就不会去浏览网页了,不过现在5.0 出来了,干干净净,把gui.cfg 自己配制一下就ok 了。
阿杰 2005-7-22 23:14
25
0
不错
学习中 !
DecoderEx 2009-8-5 10:15
26
0
貌似新版迅雷改配置文件也可以达到同样效果
风信紫 2009-8-5 10:29
27
0
mark。。学习。。。
大头和尚 2009-8-8 14:24
28
0
牛人,要能知道这种思路也需要深厚功力呀。
liuyes 2009-8-8 20:38
29
0
这个实用啊,一开迅雷真的很慢
sanxa 2009-8-9 01:00
30
0
迅雷去广告其实可以不用改软件代码的,他的广告调用全在XML里,只有一个在主体窗里的广告需要修改代码
theendone 2009-8-9 15:01
31
0
支持,需要这样的扎实文章,嘿嘿
过路人glr 2009-8-10 08:54
32
0
不会吧靠猜的神人啊
lzdfkwdz 2009-8-14 11:09
33
0
我喜欢清洁界面的迅雷。。。谢谢楼主啊!
miclin 2009-8-14 11:24
34
0
学习一下,感谢经验分享
antlove 2009-8-17 12:49
35
0
不错,自己也去试试
bbadsl 2009-8-20 11:52
36
0
思路太好了,谢谢
lqwjkx 2009-8-20 14:20
37
0
感谢分享哈。。。
logical 2009-8-25 09:22
38
0
确实 不过感觉外面视频教程也很多的
foresee 2 2009-8-28 08:40
39
0
这么早发的,我怎么没看过
cjteam 2009-9-9 14:24
40
0
修改方法很巧妙,有编程功底
cxlll 2009-9-17 14:49
41
0
楼主牛人啊,谢谢
无奈无赖 2009-9-22 11:39
42
0
我晕...怎么最近流行挖坟啊.
狼行wolf 2009-9-22 12:32
43
0
05年的帖子就这么被挖了。。。 囧。
makeme 3 2009-9-24 15:35
44
0
太强大了.估计楼主没事做了~ 嘻嘻哈哈
firewind 2009-9-25 22:38
45
0
不错嘛!值得一试!
loway 2009-9-26 00:00
46
0
不用去除窗口,直接把窗口的高度该为0。这样的方法还是第一次看到,楼主实在是太有才了
刘志阳 2009-9-26 21:47
47
0
我也没有学过编程呢 要慢慢看看了呢
灰狐 2009-9-27 17:59
48
0
推荐小伟的补丁包,直接搞成本地VIP,啥广告都没了,顺带会员皮肤也能用了。
有图有真相
上传的附件:
luoyahu 2009-9-28 11:58
49
0
跟楼主学习了,不过好象有个Mini讯雷,不知道合不合楼主的口味..
游客
登录 | 注册 方可回帖
返回