破解这东西对我来说太难,我也只是不想看广告而已。
至于注册菜单,用vc把它删了就是。
代码如下:
#include <windows.h>
#include <stdio.h>
int set_dir(void)
{
char temp[512];
if(!GetModuleFileName(0,temp,500))
{
MessageBox(0,temp,"GetModuleFileName",0);
return -1;
}
*strrchr(temp,'//')=0;
if(!SetCurrentDirectory(temp))
{
MessageBox(0,"SetCurrentDirectory",0,0);
return -1;
}
return 0;
}
int clear_ad(void)
{
char temp[512];
if(!GetCurrentDirectory(500,temp))
{
MessageBox(0,"GetCurrentDirectory",0,0);
return -1;
}
strcat(temp,"//ads//cache434//*.*");
SHFILEOPSTRUCT op;
op.hwnd=0;
op.wFunc=FO_DELETE;
op.pFrom=temp;
op.pTo=0;
op.fFlags=FOF_SILENT|FOF_NOERRORUI|FOF_NOCONFIRMATION;
op.fAnyOperationsAborted=0;
op.hNameMappings=0;
op.lpszProgressTitle=0;
SHFileOperation(&op);
return 0;
}
int inject_timer(HANDLE proc)
{
void *ra,*rm;
HINSTANCE kern;
char tw[]="flashget.dll";
kern=GetModuleHandle("kernel32");
if(!kern) return -1;
ra=GetProcAddress(kern,"LoadLibraryA");
if(!ra) return -1;
rm=VirtualAllocEx(proc,0,4096,
MEM_COMMIT,
PAGE_EXECUTE_READWRITE);
if(!rm) return -1;
DWORD b;
if(!WriteProcessMemory(proc,rm,tw,sizeof(tw),&b))
{
VirtualFreeEx(proc,ra,0,MEM_RELEASE);
return -1;
}
if(!CreateRemoteThread(proc,0,0,ra,rm,0,&b))
{
VirtualFreeEx(proc,ra,0,MEM_RELEASE);
return -1;
}
VirtualFreeEx(proc,ra,0,MEM_RELEASE);
CloseHandle(proc);
return 0;
}
int exec_flashget(char *cmd)
{
SHELLEXECUTEINFO sei;
memset(&sei,0,sizeof(sei));
sei.cbSize=sizeof(sei);
sei.fMask=SEE_MASK_NOCLOSEPROCESS;
sei.hwnd=0;
sei.lpVerb="open";
sei.lpFile="flashget2.exe";
sei.lpParameters=cmd;
sei.nShow=SW_MINIMIZE;
sei.lpDirectory=0;
if(ShellExecuteEx(&sei))
{
if(sei.hProcess);
inject_timer(sei.hProcess);
return 0;
}
MessageBox(0,"exec flashget",0,0);
return -1;
}
int hide_ad_bar(void)
{
HWND flash_get=NULL;
HWND tool_bar=NULL;
DWORD now=GetTickCount();
while(!flash_get&&((GetTickCount()-now)<100000))
{
flash_get=FindWindow("JetCar Class",0);
}
if(!flash_get)
{
MessageBox(0,"FindWindow JetCar",0,0);
return -1;
}
now=GetTickCount();
while(!tool_bar&&((GetTickCount()-now)<1000))
{
tool_bar=FindWindowEx(flash_get,0,"AfxWnd42s",0);
}
if(!tool_bar)
{
MessageBox(0,"FindWindow toolbar",0,0);
return -1;
}
ShowWindow(tool_bar,SW_HIDE);
Sleep(1000);
ShowWindow(flash_get,SW_RESTORE);
ShowWindow(flash_get,SW_MAXIMIZE);
SetForegroundWindow(flash_get);
return 0;
}
DWORD WINAPI timer(LPVOID p)
{
HWND hwnd,parent;
int b=0;
int i=0;
while(1)
{
if(!(i=(i+1)%120))
clear_ad();
hwnd=parent=0;
parent=FindWindow("Afx:400000:0",0);
if(!parent) b=0;
if(parent) hwnd=FindWindowEx(parent,0,"AfxWnd42s",0);
if(hwnd)
{
if(b==0)
{
ShowWindow(hwnd,SW_HIDE);
ShowWindow(parent,SW_HIDE);
ShowWindow(parent,SW_MAXIMIZE);
b=1;
}
}
Sleep(1000);
}
}
int WINAPI DllMain(HINSTANCE hInst,DWORD reason,void *resv)
{
switch(reason)
{
case DLL_PROCESS_ATTACH:
{
DWORD tid;
if(0!=set_dir())
{
MessageBox(0,"set dir",0,0);
return FALSE;
}
CreateThread(0,0,timer,0,0,&tid);
break;
}
case DLL_PROCESS_DETACH:
{
break;
}
default:
{
break;
}
}
return TRUE;
}
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrev,LPSTR cmd,int show)
{
if(0!=set_dir())
{
MessageBox(0,"set dir",0,0);
return -1;
}
if(0!=clear_ad())
{
MessageBox(0,"clear ad",0,0);
return -1;
}
if(0!=exec_flashget(cmd))
{
MessageBox(0,"exec flashget",0,0);
return -1;
}
if(0!=hide_ad_bar())
{
MessageBox(0,"hide ad bar",0,0);
return -1;
}
return 0;
}
用vc把这个文件编译为flashget.dll, flashget.exe即可,把它们放到flashget的目录下,之前把原来的flashget.exe改为flashget2.exe.