声明: 以下破解方法,只供个人学习之用.
/
去广告原理:这里当然是用 middlebeer 的方法 MoveWindow(hwndChild,0,0,0,0,true);广告条的类名为 TGradualPanel 去广告分析1. PEiD检测主程序Thunder.exe,无壳,Borland Delphi 6.0 - 7.0 编译。2. 用ollydbg载入 Thunder.exe 然后下断点bpx ShowWindow00495474 . 50 push eax00495475 . 8B45 FC mov eax,dword ptr ss:[ebp-4]00495478 . E8 F38DFEFF call Thunder1.0047E2700049547D . 50 push eax ; |hWnd 在这下面断下0049547E . E8 6123F7FF call ; /ShowWindow00495483 . E9 05010000 jmp Thunder1.0049558D00495488 > 33C0 xor eax,eax将上面代码改为00495478 . E8 F38DFEFF call Thunder.0047E2700049547D . 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,00052F43D 74 11 je short Thunder.0052F4500052F43F 68 60F45200 push Thunder.0052F460 ; ASCII "move"0052F444 50 push eax0052F445 E8 E21EEDFF call 0052F44A 3E:FF3424 push dword ptr ds:[esp]0052F44E FFD0 call eax0052F450 E8 8F83EDFF call 0052F455 ^ E9 2960F6FF jmp Thunder.004954830052F45A 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 D0E8 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.batcl w.cpp w.def /link /subsystem:windows /dll /out:w.dll /base:0x1C000000 /NOLOGO /machine:X86 /release user32.libdel w.objdel w.exppause------------------------下面为w.def-------------------LIBRARY wEXPORTS move @1--------------------------用法:按上面方法改好然后将w.dll放在迅雷的安装目录下面就可以