迅雷5.0.0.72 廣告條移除

Mobidogs發表於2020-04-04

宣告: 以下破解方法,只供個人學習之用.

/////////////////////////////////////////////////

去廣告原理:

這裡當然是用 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   ; /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 
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 
0052F44A                            3E:FF3424        push dword ptr ds:[esp]
0052F44E                            FFD0             call eax
0052F450                            E8 8F83EDFF      call 
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 
#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放在迅雷的安裝目錄下面就可以

 

相關文章