首页
社区
课程
招聘
[原创]联众世界2.8.2.3 去广告 艰辛历程 菜鸟小破
发表于: 2010-5-8 23:45 18828

[原创]联众世界2.8.2.3 去广告 艰辛历程 菜鸟小破

2010-5-8 23:45
18828

首先说一下自己是菜鸟啦~

软件: 联众世界2.8.2.3
目的: 去除凡人的广告。。。。我只完成了一小部分 学习交流啦~~
软件: OD
系统: win7

peid检测 vc写的主程序。

首先 说一下联众的广告

打开联众后 先是登陆 登陆后会出现一个flash弹窗广告。

然后界面的右边 有一大块的 广告界面

软件关闭后 会遗留一个flash广告窗口 几秒

=======================破解过程=========================

首先关闭联众世界 查看其目录文件

发现一个Advert的文件夹。  发现里面全部都是广告文件。  删除以后。 联众会自动从新下载。

查了一些网站的帖子。解决办法其实很简单的。 就是利用NTFS文件夹权限。限制写入



然后启动 联众世界    软件会提示   非法权限



这个我想还是很简单的     。

od载入  下MessageBoxA断点。 启动软件登陆  。  程序被断下。。

这个是被断下后的位置   很明显这个是一个弹窗的代码

00446220  /$  6A 00         PUSH 0
00446222  |.  6A 30         PUSH 30
00446224  |.  68 3CA04E00   PUSH glworld.004EA03C                                 ;  游戏目标路径读写错误,你可能对该路径没有足够的读写权限,请与你的系统管理员联系!
00446229  |.  E8 2AA10100   CALL <JMP.&MFC42.#1200_?AfxMessageBox@@YGHPBDII@Z>    ;  //弹出messagebox窗口
0044622E  \.  C3            RETN

走到retn   返回上一个程序段

00445E25  |.  50            PUSH EAX
00445E26  |.  51            PUSH ECX
00445E27  |.  68 10A04E00   PUSH glworld.004EA010                                 ;  %s\advert_%0d.dat
00445E2C  |.  52            PUSH EDX                                              ;  //广告目录文件写入
00445E2D  |.  E8 2A9E0100   CALL <JMP.&MFC42.#2818_?Format@CString@@QAAXPBDZZ>
00445E32  |.  8B4424 10     MOV EAX,DWORD PTR SS:[ESP+10]
00445E36  |.  83C4 10       ADD ESP,10
00445E39  |.  6A 00         PUSH 0                                                ; /hTemplateFile = NULL
00445E3B  |.  6A 20         PUSH 20                                               ; |Attributes = ARCHIVE
00445E3D  |.  6A 02         PUSH 2                                                ; |Mode = CREATE_ALWAYS
00445E3F  |.  6A 00         PUSH 0                                                ; |pSecurity = NULL
00445E41  |.  6A 01         PUSH 1                                                ; |ShareMode = FILE_SHARE_READ
00445E43  |.  68 00000040   PUSH 40000000                                         ; |Access = GENERIC_WRITE
00445E48  |.  50            PUSH EAX                                              ; |FileName
00445E49  |.  FF15 50B24C00 CALL DWORD PTR DS:[<&KERNEL32.CreateFileA>]           ; \CreateFileA
00445E4F  |.  83F8 FF       CMP EAX,-1                                            ;  // 检测文件 是否创建成功
00445E52  |.  75 35         JNZ SHORT glworld.00445E89                            ;  // 如果成功就跳走
00445E54  |.  E8 C7030000   CALL glworld.00446220                                 ;  //这个call 就是弹出窗口
00445E59  |.  8D4C24 00     LEA ECX,DWORD PTR SS:[ESP]
00445E5D  |.  C64424 10 00  MOV BYTE PTR SS:[ESP+10],0
00445E62  |.  E8 DD9D0100   CALL <JMP.&MFC42.#800_??1CString@@QAE@XZ>
00445E67  |.  8D4C24 04     LEA ECX,DWORD PTR SS:[ESP+4]
00445E6B  |.  C74424 10 FFF>MOV DWORD PTR SS:[ESP+10],-1
00445E73  |.  E8 CC9D0100   CALL <JMP.&MFC42.#800_??1CString@@QAE@XZ>
00445E78  |.  33C0          XOR EAX,EAX
00445E7A  |.  8B4C24 08     MOV ECX,DWORD PTR SS:[ESP+8]
00445E7E  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
00445E85  |.  83C4 14       ADD ESP,14
00445E88  |.  C3            RETN                                                  ;  //关闭软件
00445E89  |>  50            PUSH EAX                                              ; /hObject
00445E8A  |.  FF15 F0B24C00 CALL DWORD PTR DS:[<&KERNEL32.CloseHandle>]           ; \CloseHandle
00445E90  |.  8B4C24 00     MOV ECX,DWORD PTR SS:[ESP]
00445E94  |.  51            PUSH ECX                                              ; /FileName
00445E95  |.  FF15 64B24C00 CALL DWORD PTR DS:[<&KERNEL32.DeleteFileA>]           ; \DeleteFileA
00445E9B  |.  8D4C24 00     LEA ECX,DWORD PTR SS:[ESP]
00445E9F  |.  C64424 10 00  MOV BYTE PTR SS:[ESP+10],0
00445EA4  |.  E8 9B9D0100   CALL <JMP.&MFC42.#800_??1CString@@QAE@XZ>
00445EA9  |.  8D4C24 04     LEA ECX,DWORD PTR SS:[ESP+4]
00445EAD  |.  C74424 10 FFF>MOV DWORD PTR SS:[ESP+10],-1
00445EB5  |.  E8 8A9D0100   CALL <JMP.&MFC42.#800_??1CString@@QAE@XZ>
00445EBA  |.  8B4C24 08     MOV ECX,DWORD PTR SS:[ESP+8]
00445EBE  |.  B8 01000000   MOV EAX,1
00445EC3  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
00445ECA  |.  83C4 14       ADD ESP,14
00445ECD  \.  C3            RETN

我们很容易的发现 只要该走跳转就可以了  
把00445E52的JNZ改成jmp就可以了

软件保存后。不会跳出来窗口了~  广告也没有了。。。。

==================  破解 软件关闭时弹窗的窗口====================

大家可以发现 上面的破解只能破解软件 中的广告

软件关闭时 还会弹出一个烦人的遗留框。。



通过查看 它并不是一个ie窗口  所以不能够用 普通的 ShellExecuteA 来解决

通过查看软件的 字符串

查到了一小段代码



我们可以很容易的看到  这里字符串提醒了我们  exitad 的位置

但我如果 仅仅把它改成空白 那个窗口每次还会出现 只是内容没了。。

所以 我们下断点跟踪代码 看它实现的过程。。。。。

004AFC2E   .  50            PUSH EAX
004AFC2F   .  68 6CCF4E00   PUSH glworld.004ECF6C                    ;  file://%s\warning60.htmfile://%s\default_hzh.htm
004AFC34   .  51            PUSH ECX
004AFC35   .  EB 3D         JMP SHORT glworld.004AFC74
004AFC37   >  8B5424 0C     MOV EDX,DWORD PTR SS:[ESP+C]             ;  Case 3EE of switch 004AFC04
004AFC3B   .  52            PUSH EDX
004AFC3C   .  68 54CF4E00   PUSH glworld.004ECF54                    ;  file://%s\exitad.htm
004AFC41   .  EB 2C         JMP SHORT glworld.004AFC6F
004AFC43   >  8B4C24 0C     MOV ECX,DWORD PTR SS:[ESP+C]             ;  Case 3EF of switch 004AFC04
004AFC47   .  8B5424 08     MOV EDX,DWORD PTR SS:[ESP+8]
004AFC4B   .  51            PUSH ECX
004AFC4C   .  68 3CCF4E00   PUSH glworld.004ECF3C                    ;  file://%s\exdlgad.htm
004AFC51   .  52            PUSH EDX
004AFC52   .  EB 20         JMP SHORT glworld.004AFC74
004AFC54   >  8B4424 0C     MOV EAX,DWORD PTR SS:[ESP+C]             ;  Case 3F1 of switch 004AFC04

断下断点以后 我们点击退出程序 。。。

软件被停在了004AFC3C处。。。  我们F8单步步过   其实发现软件是用MFC写的

走过一个mfc的跳转  
0045FC44   $- FF25 B4BA4C00 JMP DWORD PTR DS:[<&MFC42.#800_??1CString@@QAE@XZ>]                 ;  MFC42.#800_??1CString@@QAE@XZ

我也不知道这个mfc是什么意思 好像mfc还加了密

发现走过跳转 就走进了mfc的领空  按ALT+F9执行到程序领空

回到程序领空 我们发现    联众世界的界面已经被关闭了  但广告还没出来
我们停在了 这2者中间
不难想象 上面这段mfc的代码 可能就是预读取 广告的内容吧。。。

继续跟着走。。。走到一个retn 返回   

00418293  |.  57            PUSH EDI
00418294  |.  51            PUSH ECX
00418295  |.  52            PUSH EDX
00418296  |.  50            PUSH EAX
00418297  |.  E8 147A0900   CALL glworld.004AFCB0
0041829C  |.  8BF8          MOV EDI,EAX
0041829E  |.  83C4 10       ADD ESP,10
004182A1  |.  897C24 08     MOV DWORD PTR SS:[ESP+8],EDI
004182A5  |>  8B8E 6C330000 MOV ECX,DWORD PTR DS:[ESI+336C]
004182AB  |.  57            PUSH EDI
004182AC  |.  E8 1F91FEFF   CALL glworld.004013D0
004182B1  |.  8B8E 6C330000 MOV ECX,DWORD PTR DS:[ESI+336C]
004182B7  |.  8B01          MOV EAX,DWORD PTR DS:[ECX]
004182B9  |.  FF90 C0000000 CALL DWORD PTR DS:[EAX+C0]
004182BF  |.  85FF          TEST EDI,EDI
004182C1  |.  74 09         JE SHORT glworld.004182CC
004182C3  |.  57            PUSH EDI
004182C4  |.  E8 AB790400   CALL <JMP.&MFC42.#825_??3@YAXPAX@Z>
004182C9  |.  83C4 04       ADD ESP,4
004182CC  |>  8B4C24 0C     MOV ECX,DWORD PTR SS:[ESP+C]
004182D0  |.  5F            POP EDI
004182D1  |.  5E            POP ESI
004182D2  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
004182D9  |.  83C4 10       ADD ESP,10
004182DC  \.  C3            RETN

软件停在了0041829C   这时候 广告还没有出来
我们接着往下走

当我们走到004182B9 的时候 od停住了。。  缩小od 我们就可以看到 广告的窗口。
至此  我们很容易的发现 004182B9 就是弹出广告的地方。。。

我们把这句nop掉 就可以了~  保存文件 就ok了~~~

当然 其实这段代码 就是一个预读和现实广告的代码  我们再走一个retn 把上层代码的call nop掉也行

===================== 关于启动时候的 flash广告====================

这是我到现在还没有解决的问题。。。

这个flash广告 读取的是一个在线网页的swf文件。。但在字符串中 找不到相应的位置。。。

下bp CreateWindowExA 断了好多次都没有找到。。。

初来乍到 希望各位高手给我点帮助和意见。。。

谢谢!

                                                               BY:Homily

修改好的附件。。。。
glworld.rar

那位大侠能帮我解答 第一个广告的问题呢~   求教了~~  谢谢


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (20)
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
2
"我也不知道这个mfc是什么意思 好像mfc还加了密"

MFC是应用程序框架,是VC编写界面程序需要使用的
不知道这个解答正确不
在网上搜下MFC就可以知道了
2010-5-8 23:52
0
雪    币: 227
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
哎~  没人顶啊~   大侠们都来帮帮我
2010-5-9 12:29
0
雪    币: 222
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
广告我是大大的不喜欢.把所有file://都x掉
2010-5-9 20:38
0
雪    币: 474
活跃值: (96)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
来学习了!感谢!
2010-5-9 21:00
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
6
虽然爆破在破解界常被人BS,但确实很实用,毕竟自己难免会遇到这种软件的,呵呵……
2010-5-9 22:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我原来也见到过这样的东东~!那时就是简单的把FTTP://。。。。删掉但是还是出现一个空白窗口~!
2010-5-11 11:09
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
8
走过一个mfc的跳转  
0045FC44   $- FF25 B4BA4C00 JMP DWORD PTR DS:[<&MFC42.#800_??1CString@@QAE@XZ>]                 ;  MFC42.#800_??1CString@@QAE@XZ

我也不知道这个mfc是什么意思 好像mfc还加了密

很像定义了CString时的反汇编代码,构造函数的调用。
2010-5-11 12:32
0
雪    币: 261
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
我帮你顶起来,一起等牛人来解第一个广告
2010-5-11 21:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
00445E25  |.  50            PUSH EAX
00445E26  |.  51            PUSH ECX
00445E27  |.  68 10A04E00   PUSH glworld.004EA010                                 ;  %s\advert_%0d.dat
00445E2C  |.  52            PUSH EDX                                              ;  //广告目录文件写入
00445E2D  |.  E8 2A9E0100   CALL <JMP.&MFC42.#2818_?Format@CString@@QAAXPBDZZ>
00445E32  |.  8B4424 10     MOV EAX,DWORD PTR SS:[ESP+10]
00445E36  |.  83C4 10       ADD ESP,10
00445E39  |.  6A 00         PUSH 0                                                ; /hTemplateFile = NULL
00445E3B  |.  6A 20         PUSH 20                                               ; |Attributes = ARCHIVE
00445E3D  |.  6A 02         PUSH 2                                                ; |Mode = CREATE_ALWAYS
00445E3F  |.  6A 00         PUSH 0                                                ; |pSecurity = NULL
00445E41  |.  6A 01         PUSH 1                                                ; |ShareMode = FILE_SHARE_READ
00445E43  |.  68 00000040   PUSH 40000000                                         ; |Access = GENERIC_WRITE
00445E48  |.  50            PUSH EAX                                              ; |FileName
00445E49  |.  FF15 50B24C00 CALL DWORD PTR DS:[<&KERNEL32.CreateFileA>]           ; \CreateFileA
00445E4F  |.  83F8 FF       CMP EAX,-1                                            ;  // 检测文件 是否创建成功
00445E52  |.  75 35         JNZ SHORT glworld.00445E89                            ;  // 如果成功就跳走
00445E54  |.  E8 C7030000   CALL glworld.00446220                                 ;  //这个call 就是弹出窗口

这些垃圾代码你也可以nop了啊  这样就没必要设什么文件 权限了啊!!!!  这样文件也不会写出
2010-5-18 18:35
0
雪    币: 1671
活跃值: (5390)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
不错。。。。。。。。。
2010-5-22 05:16
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
很不错 ,联众广告太烦人。
2010-5-22 21:26
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
净化软件界面,抵制广告。支持去广告版。
2010-5-23 15:20
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
14
不错。。。。。。。
2010-5-24 13:07
0
雪    币: 7325
活跃值: (3803)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
15
LZ和黑米粒有什么关系?
2010-5-24 13:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
NOP不行,就让窗口自己调用销毁CALL,嘻嘻!
联众我也研究过,广告全部去掉了的,有空一起交流!
2010-6-20 19:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
很久以前研究的,好像不只是主程序有广告,还有DLL程序也有哦!
2010-6-20 19:43
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
“目标路径读写错误”的问题,用楼主的方法,

在新版,2.8.5.1版,似乎不能完全成功,确实登录时没有提示了,但会不时的跳出来,只要放在一边不管,也不影响游戏过程。如果关掉,过会儿还会跳出来。
2011-1-23 19:40
0
雪    币: 6525
活跃值: (3575)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
19
感谢楼主分享技术
2011-3-15 18:19
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lja
20
虽不用这个也给支持下啦!能弄个中国游戏中心去广告就好啦!
2011-4-8 23:57
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
没试过不知道,路过进来学习。。。
2011-12-16 17:45
0
游客
登录 | 注册 方可回帖
返回
//