-
-
[水帖]迅雷去广告条(高手勿进)
-
发表于:
2007-4-4 23:26
11241
-
老长时间没发文了,今天又弄了下迅雷,注:以前的版本弄过,但没有记录,今天有时间,就记录了一下.纯属灌水,高手请飘过。
内容如下(由于是笔记,所有格式很乱,请不要拍砖 ):
分析版本:V5.5.6.274
准备工作:
调试Thunder5时需要加上命令行参数:"/7559ec68"
(开始没注意原来这个参数是会变的,可以先调试Thunder.exe来找到当前的参数。也可以直接调试
Thunder5.exe,然后下断bp GetCommandLineA)
建议采用
直接调试Thunder5.exe,然后下断bp GetCommandLineA的方法
这样中断后返回到:
0040D227 |. FF15 30A14800 call dword ptr ds:[<&KERNEL32.GetC>; [GetCommandLineA
0040D22D |. 50 push eax 《-中断后会返回到这里
0040D22E |. 8D4D A4 lea ecx, dword ptr ss:[ebp-5C]
0040D231 |. E8 F0AC0600 call Thunder5.00477F26
0040D236 |. 8365 FC 00 and dword ptr ss:[ebp-4], 0
0040D23A |. 8D45 E8 lea eax, dword ptr ss:[ebp-18]
0040D23D |. 6A 00 push 0
0040D23F |. 50 push eax
0040D240 |. E8 98290000 call Thunder5.0040FBDD
0040D245 |. 59 pop ecx
0040D246 |. 59 pop ecx
0040D247 |. 68 A4B84A00 push Thunder5.004AB8A4 ; ASCII "download_interface.dll"
0040D24C |. 50 push eax
0040D24D |. 8D45 EC lea eax, dword ptr ss:[ebp-14]
0040D250 |. C645 FC 01 mov byte ptr ss:[ebp-4], 1
0040D254 |. 50 push eax
0040D255 |. E8 04FE0600 call <jmp.&MFC42.#924>
0040D25A |. FF30 push dword ptr ds:[eax]
0040D25C |. 8D45 F0 lea eax, dword ptr ss:[ebp-10]
0040D25F |. C645 FC 02 mov byte ptr ss:[ebp-4], 2
0040D263 |. 50 push eax
0040D264 |. E8 AA920600 call Thunder5.00476513
0040D269 |. 59 pop ecx
0040D26A |. 59 pop ecx
0040D26B |. 8D4D EC lea ecx, dword ptr ss:[ebp-14]
0040D26E |. C645 FC 05 mov byte ptr ss:[ebp-4], 5
0040D272 |. E8 2BFC0600 call <jmp.&MFC42.#800>
0040D277 |. 8D4D E8 lea ecx, dword ptr ss:[ebp-18]
0040D27A |. C645 FC 04 mov byte ptr ss:[ebp-4], 4
0040D27E |. E8 1FFC0600 call <jmp.&MFC42.#800>
0040D283 |. FF75 F0 push dword ptr ss:[ebp-10] ; /Arg1
0040D286 |. 8D4D A4 lea ecx, dword ptr ss:[ebp-5C] ; |
0040D289 |. E8 CBAF0600 call Thunder5.00478259 ; \Thunder5.00478259
0040D28E |. 85C0 test eax, eax
0040D290 |. 7E 05 jle short Thunder5.0040D297 《——只要把这里改成NOP就OK了
这样做就可以直接调试了,很方便
=====================================================================
(可以通过BP LoadLibraryA下断,然后注意堆栈内容,看什么时候调用的"TargetAD.dll",然后就可以定位到下面)
第一步,将jnz 0044FCE3 改成jmp
0044FA91 $ B8 B4584800 mov eax, Thunder5.004858B4
0044FA96 . E8 55E10200 call Thunder5.0047DBF0
0044FA9B . 51 push ecx
0044FA9C . 51 push ecx
0044FA9D . 53 push ebx
0044FA9E . 56 push esi
0044FA9F . 8BF1 mov esi, ecx
0044FAA1 . 33DB xor ebx, ebx
0044FAA3 . 399E 24010000 cmp dword ptr ds:[esi+124], ebx
0044FAA9 0F85 34020000 jnz Thunder5.0044FCE3 ************** ->jmp0044FCE3
0044FAAF . 8D45 EC lea eax, dword ptr ss:[ebp-14]
0044FAB2 . 50 push eax
0044FAB3 . E8 254B0200 call Thunder5.004745DD
0044FAB8 . C70424 C4CF4A00 mov dword ptr ss:[esp], Thunder5.0>; ASCII "iTargetAD.dll"
0044FABF . 50 push eax
0044FAC0 . 8D45 F0 lea eax, dword ptr ss:[ebp-10]
0044FAC3 . 895D FC mov dword ptr ss:[ebp-4], ebx
0044FAC6 . 50 push eax
0044FAC7 . E8 92D50200 call <jmp.&MFC42.#924>
0044FACC . FF30 push dword ptr ds:[eax]
0044FACE . C645 FC 01 mov byte ptr ss:[ebp-4], 1
0044FAD2 . E8 01DA0200 call <jmp.&MFC42.#1193>
0044FAD7 . 8D4D F0 lea ecx, dword ptr ss:[ebp-10]
0044FADA . 8986 24010000 mov dword ptr ds:[esi+124], eax
0044FAE0 . 885D FC mov byte ptr ss:[ebp-4], bl
0044FAE3 . E8 BAD30200 call <jmp.&MFC42.#800>
0044FAE8 . 834D FC FF or dword ptr ss:[ebp-4], FFFFFFFF
0044FAEC . 8D4D EC lea ecx, dword ptr ss:[ebp-14]
0044FAEF . E8 AED30200 call <jmp.&MFC42.#800>
0044FAF4 . 8B86 24010000 mov eax, dword ptr ds:[esi+124]
0044FAFA . 3BC3 cmp eax, ebx
0044FAFC . 0F84 D1010000 je Thunder5.0044FCD3
(现在就已经不会再自动下广告了,但窗口上还有个大白框,下面想办法去掉)
===========================================
第二步,重新载入程序,在0044FAA9设断,F9运行,中断后bp ShowWindow,F9运行
中断在:
77D1D8A4 > B8 2B120000 mov eax, 122B
77D1D8A9 BA 0003FE7F mov edx, 7FFE0300
77D1D8AE FF12 call dword ptr ds:[edx]
77D1D8B0 C2 0800 retn 8
此时堆栈内容为:
0012EE44 5D1844ED /CALL to ShowWindow from COMCTL32.5D1844EB
0012EE48 001103E0 |hWnd = 001103E0 (class='Afx:400000:b:10011:6:0',parent=00130304)
0012EE4C 00000005 \ShowState = SW_SHOW
将这里的SW_SHOW参数改成SW_HIDE即可,即0012EE4C 00000005 -》0012EE4C 00000000
(具体为什么就是这个呢?我也是试出来的,我估计这个shwowinow应该和LoadLibrary "iTargetAD.dll"不远,所以一下子就找到了)
====================================================================
第三步,重新载入程序,在0044FAA9设断,F9运行
中断后bp ShowWindow,F8单步运行当执行到:
00420824 |. /0F84 80000000 je Thunder5.004208AA 《——从这里直接跳到00420842即可,跳过这段调用
0042082A |. |68 01010000 push 101
0042082F |. |53 push ebx
00420830 |. |6A 01 push 1
00420832 |. |6A 0F push 0F
00420834 |. |50 push eax
00420835 |. |8D8E 542D0000 lea ecx, dword ptr ds:[esi+2D54]
0042083B |. |E8 50CF0500 call <jmp.&MFC42.#6564> 《——这里会调用第二步中的ShowWindow语句,所以搞这里
00420840 |. |85C0 test eax, eax
00420842 |. |74 66 je short Thunder5.004208AA
=========================================================================
第四步,现在启动后就已经看不到广告了(当然,后台也已经停止下载了),现在的任务就是用资源编辑工具,去编辑一下新建窗口就好了,因
国那里虽然不显示窗口了,但还有个大框框在那里。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)