首页
社区
课程
招聘
迅雷5.0.0.72 广告条移除教程
发表于: 2005-9-6 20:10 14030

迅雷5.0.0.72 广告条移除教程

2005-9-6 20:10
14030

去广告原理:

这里当然是用 middlebeer 的方法 MoveWindow(hwndChild,0,0,0,0,true);
广告条的类名为 TGradualPanel

去广告分析
1. PEiD检测主程序Thunder.exe,无壳,Borland Delphi 6.0 - 7.0 编译。

2. 用ollydbg载入 Thunder.exe 然后下断点bpx ShowWindow

00495474                     .  50               push eax
00495475                     .  8B45 FC          mov eax,dword ptr ss:[ebp-4]
00495478                     .  E8 F38DFEFF      call Thunder1.0047E270
0049547D                     .  50               push eax          ; |hWnd   在这下面断下
0049547E                     .  E8 6123F7FF      call <jmp.&user32.ShowWindow>  ; \ShowWindow
00495483                     .  E9 05010000      jmp Thunder1.0049558D
00495488                     >  33C0             xor eax,eax

将上面代码改为
00495478                     .  E8 F38DFEFF      call Thunder.0047E270
0049547D                     .  50               push eax      
0049547E                        E9 AD9F0900      jmp Thunder.0052F430--->这里面没有代码
00495483                     .  E9 05010000      jmp Thunder.0049558D

在52f430 加入我们的代码
---------------
这里要注意了,在调用函数时,不能在ollydbg 里面直接汇编,这样的话在不同的操作系统里面就会出问题了
这里我们按Ctrl+N 在打开的窗体里面找到我们要调用的函数,(如果没有找到那么我们就要用lordpe在原程序
添加要调用的函数的输入表),找到之后我们再选择它之后再回车,找到如下面

地址       反汇编                                    注释
00406ED4   jmp dword ptr ds:[<&kernel32.LoadLibrary  kernel32.LoadLibraryA-->在这里按回车就到了下面

00406ED4   $- FF25 68535300    jmp dword ptr ds:[<&kernel32.LoadL>;  kernel32.LoadLibraryA
如果我们要调用LoadLibraryA 就call 00406ED4  吧!

----------------------------->
0052F430                            68 68F45200      push Thunder.0052F468              ;  ASCII "w.dll"
0052F435                            E8 9A7AEDFF      call <jmp.&kernel32.LoadLibraryA>
0052F43A                            83F8 00          cmp eax,0
0052F43D                            74 11            je short Thunder.0052F450
0052F43F                            68 60F45200      push Thunder.0052F460              ;  ASCII "move"
0052F444                            50               push eax
0052F445                            E8 E21EEDFF      call <jmp.&kernel32.GetProcAddress>
0052F44A                            3E:FF3424        push dword ptr ds:[esp]
0052F44E                            FFD0             call eax
0052F450                            E8 8F83EDFF      call <jmp.&user32.ShowWindow>
0052F455                          ^ E9 2960F6FF      jmp Thunder.00495483
0052F45A                            90               nop

下面为上面代码的二进制

68 68 F4 52 00 E8 9A 7A ED FF 83 F8 00 74 11 68 60 F4 52 00 50 E8 E2 1E ED FF 3E FF 34 24 FF D0
E8 8F 83 ED FF E9 29 60 F6 FF 90 6C 00 00 00 00 6D 6F 76 65 00 00 00 00 77 2E 64 6C 6C 00 00 00

下面 w.dll 的原代码w.cpp:
----------------------------------------------------------
#include <windows.h>
#pragma comment(linker, "/ENTRY:EntryPoint")
//#pragma comment(linker,"/ALIGN:0x400")
int a=0;
INT APIENTRY move(HWND);
BOOL CALLBACK EnumChildProc(HWND,LPARAM);
BOOL EntryPoint()
{
        return 1;
}
INT APIENTRY move(HWND handle)
{
        char c[100];
        GetClassName(handle,c,100);
        if(strcmp(c,"TfrmMain")==0) //如果传入的句柄为主窗的就列举子窗体
        {
                EnumChildWindows(handle,EnumChildProc,NULL);
        }
        return 0;
}
BOOL CALLBACK EnumChildProc(HWND hwndChild,LPARAM lParam)
{
        static int a=0;
        char cl[100];
        GetClassName(hwndChild,cl,100);
        if(strcmp(cl,"TGradualPanel")==0)//如果子窗体的类名为 TGradualPanel 则
        {
                if(a==0 ||a==11)//子窗体的序列
                MoveWindow(hwndChild,0,0,0,0,true);
                a++;
                if(a==12)
                {
                return 0;//这里是停止列举子窗体
                }
        }
        return 1;
}
-------------------------------

下面为build.bat

cl w.cpp w.def /link /subsystem:windows /dll /out:w.dll /base:0x1C000000 /NOLOGO /machine:X86 /release user32.lib
del w.obj
del w.exp
pause
------------------------
下面为w.def
-------------------
LIBRARY  w

EXPORTS
  move   @1
--------------------------
用法:按上面方法改好
然后将w.dll放在迅雷的安装目录下面就可以了

=============================
ftts[BCG]于
2005-09-6
=============================


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (26)
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
good!
2005-9-6 20:11
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
3
给发个文件或者补丁上来吧。我的是4.7.3.53版本
多谢!
2005-9-6 20:23
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
4
支持学习。请问能不能直接动手术呢?
2005-9-6 20:24
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
5
重新上传的补丁+dll+原代码:
附件:budingd.rar
解决了不同操作系统运行出错的问题.
下面是效果图:


附件重新上传了请管理员删除旧附件:
附件:budingc.rar   
旧附件:buding.rar
2005-9-6 20:30
0
雪    币: 442
活跃值: (1241)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
6
[AppSettings]
BackWnd=thunder_backwnd
ExeName=ThunderShell.exe
去广告,可以修改下一安装目录下的gui.cfg文件:
AutoRunName=Thunder
IsMiniVer=0

[URL]
ExternalURL=     //修改这里就可以了
InnerURL=ad\banner.htm
NewTaskURL=http://biz4.sandai.net/ad/thunder5/newtask/index0.htm
SearchURL=http://biz4.sandai.net/ad/thunder5/search/index0.htm
NavigateTimes=10
TimeSpan=10
ThunderBBS=http://bbs.xunlei.com
2005-9-6 22:02
0
雪    币: 15128
活跃值: (4888)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
用了补丁就出错了.XP-SP2系统

需要添加W.DLL和MOVE这2个字符串不然会罢工!
2005-9-6 22:48
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
8
支持,我喜欢广告。   
2005-9-7 07:26
0
雪    币: 215
活跃值: (82)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
很好
学习一下
2005-9-7 07:31
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
10
最初由 LOCKLOSE 发布
用了补丁就出错了.XP-SP2系统

需要添加W.DLL和MOVE这2个字符串不然会罢工!


修改代码为

0052F430                        68 68F45200      push Thunder.0052F468                   ;  ASCII "w.dll"
0052F435                        E8 D3908E77      call kernel32.LoadLibraryA
0052F43A                        83F8 00          cmp eax,0
0052F43D                        74 11            je short Thunder.0052F450
0052F43F                        68 60F45200      push Thunder.0052F460                   ;  ASCII "move"
0052F444                        50               push eax
0052F445                        E8 B1398E77      call kernel32.GetProcAddress
0052F44A                        3E:FF3424        push dword ptr ds:[esp]
0052F44E                        FFD0             call eax
0052F450                        E8 DF467A77      call user32.ShowWindow
0052F455                      ^ E9 2960F6FF      jmp Thunder.00495483
0052F45A                        90               nop

这样加载w.dll 失败程序也不会终止了
2005-9-7 09:05
0
雪    币: 214
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
一头雾水啊`~
2005-9-7 11:12
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
12
最初由 FlyToTheSpace 发布
己做好的补丁+dll+原代码:
附件:budingc.rar

下面是效果图:

........


还是用不起哦~~~窗口一闪而过~
2005-9-7 11:54
0
雪    币: 136
活跃值: (135)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
13
呵呵顶你了 !!!
2005-9-7 12:08
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
14
最初由 KuNgBiM 发布


还是用不起哦~~~窗口一闪而过~


不会吧!我这可以用的呀!w.dll放在迅雷的安装目录里面没有呀?这个是必需要的。
我的操作系统是windows 2003的....
2005-9-7 12:46
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
15
最初由 FlyToTheSpace 发布



不会吧!我这可以用的呀!w.dll放在迅雷的安装目录里面没有呀?这个是必需要的。
我的操作系统是windows 2003的....


操作完全按照你的进行,但是还是成这样了,我是XPsp2
2005-9-7 13:04
0
雪    币: 15128
活跃值: (4888)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
16
push Thunder.0052F468                   ;  ASCII "w.dll"
push Thunder.0052F460                   ;  ASCII "move"
出错的地方就在这里,如果这2个地方没有W.DLL和MOVE字串,EAX为0,执行下面的CALL EAX当然挂了,(原来的代码)修改后的代码不会有问题,不过加载W.DLL失败以后广告的窗口还是会存在.
附上修改好的~附件:patch.rar
2005-9-7 13:58
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
17
最初由 LOCKLOSE 发布
push Thunder.0052F468 ; ASCII "w.dll"
push Thunder.0052F460 ; ASCII "move"
出错的地方就在这里,如果这2个地方没有W.DLL和MOVE字串,EAX为0,执行下面的CALL EAX当然挂了,(原来的代码)修改后的代码不会有问题,不过加载W.DLL失败以后广告的窗口还是会存在.
附上修改好的~附件:patch.rar


去广告是通过dll里面的 EnumChildWindows 来列举子窗体.
如果找到子窗体的类名为(TGradualPanel)并且序号为广告则
MoveWindow(hwndChild,0,0,0,0,true);从0开始计数则广告的序号为
0跟11(是我经过测试找到的),因为主窗体里面类名为(TGradualPanel)有许多所以只有用序号来区别广告了。
可能吧不同的操作系统 EnumChildWindows 的序号是不同的.这样的话广告就去不掉了。KuNgBiM 可能就是这种情况吧!
我的附件重新上传了,加载dll失败的问题己经解决了。
2005-9-7 19:50
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
18
这次附件又重新上传了,解决了不同操作系统运行出错的问题,我在winXP,win2003 平台下面都测试过了,打上补丁之后都能正常运行
2005-9-8 13:22
0
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
19
我的方法:直接调用程序自身代码 设置广告控件width=0 height=0
2005-9-19 13:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
学习学习!
2005-9-19 13:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
不错不错…………
2005-9-19 17:52
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
22
最初由 okdodo 发布
我的方法:直接调用程序自身代码 设置广告控件width=0 height=0


这个不太好找,这个5.0版本的可能是在把创建控件的class 全放在结构体里面了通过循环来创建窗体
而这些结构体的数据结过了好几次转移,不太好找
我当初发了很长时间用你的这种方法来找width跟height的值,在程序本身的数据段的位置,结果没找出来,最后用了一种最简单的方法,就是我目前用的这种方法了。。
2005-9-19 20:59
0
雪    币: 180
活跃值: (59)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
5.0.1.79出来了
2005-9-24 12:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
支持19楼!
合理,合理
2005-9-26 00:27
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
25
最初由 deadlybugs 发布
5.0.1.79出来了

修改方法基本上与前个版本相同。。
2005-9-26 09:27
0
游客
登录 | 注册 方可回帖
返回
//