首页
社区
课程
招聘
[原创]一次初级的PEdiy之旅――迅雷广告条移除
2005-7-19 15:01 22279

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

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

[培训]《安卓高级研修班(网课)》月薪三万计划

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

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

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

大侠们见笑了!
雪    币: 235
活跃值: (160)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
middlebeer 5 2005-7-20 17:05
9
0
在CPU窗口右键 搜索->当前模块中的名称
所有OD分析出的API都会列出来;

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


这个基本上。。。靠猜的。
我也没学过
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ljxkoh 2005-7-21 09:53
16
0
谢谢指教!

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

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


请用原版试试
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
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
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
天杀 2005-7-22 09:35
19
0
根本没有必要花那么多时间去改PE文件.看看他的配置文件.非常有规律.仔细看看.其实就是Base64编码.把它的广告条等配置改了就完事了
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ljxkoh 2005-7-22 11:56
20
0
终于知道为什么会有那么多异常了! 只要把设置那里的忽略内存问题经打勾就行了!
雪    币: 107
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
xy2000 1 2005-7-22 14:58
21
0
最喜欢看PEDIY的文章,只是最早在看雪发PEDIY的老妖现在不知道在忙什么?
雪    币: 311
活跃值: (2244)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
csjwaman 24 2005-7-22 15:49
22
0
楼主还能不能把“免费影视下载”和“迅雷精彩合作”两页屏蔽掉?
雪    币: 251
活跃值: (207)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
peaceclub 6 2005-7-22 16:28
23
0
楼主能不能做个无广告(广告窗口隐藏,也不去访问广告页面的)的安装程序出来给俺们用?
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
excuseser 2005-7-22 21:49
24
0
迅雷4.x 有个WebBrowserEx.dll,里面有个函数好像是navigate***url只要把这个稍微改下就不会去浏览网页了,不过现在5.0 出来了,干干净净,把gui.cfg 自己配制一下就ok 了。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
阿杰 2005-7-22 23:14
25
0
不错
学习中 !
游客
登录 | 注册 方可回帖
返回