首页
社区
课程
招聘
[原创]Kugou7 去FLASH广告
发表于: 2012-1-14 14:59 10403

[原创]Kugou7 去FLASH广告

2012-1-14 14:59
10403

用 AheadLib 劫持 msdmo.dll
把原来的 msdmo.dll 改名为 msdmo_org.dll

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 入口函数
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
{
 if (dwReason == DLL_PROCESS_ATTACH)
 {
  DisableThreadLibraryCalls(hModule);
  run_thread();

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

上传的附件:
收藏
免费 6
支持
分享
最新回复 (7)
雪    币: 222
活跃值: (69)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2

#include "stdafx.h"
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 头文件
#include <Windows.h>
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
#pragma comment(linker, "/EXPORT:Detoured=_AheadLib_Detoured,@1")
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 宏定义
#define EXTERNC extern "C"
#define NAKED __declspec(naked)
#define EXPORT __declspec(dllexport)
#define ALCPP EXPORT NAKED
#define ALSTD EXTERNC EXPORT NAKED void __stdcall
#define ALCFAST EXTERNC EXPORT NAKED void __fastcall
#define ALCDECL EXTERNC NAKED void __cdecl
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// AheadLib 命名空间
namespace AheadLib
{
 HMODULE m_hModule = NULL; // 原始模块句柄
 DWORD m_dwReturn[1] = {0}; // 原始函数返回地址

 // 加载原始模块
 inline BOOL WINAPI Load()
 {
  TCHAR tzPath[MAX_PATH];
  TCHAR tzTemp[MAX_PATH * 2];
  lstrcpy(tzPath, TEXT("detouredOrg"));
  m_hModule = LoadLibrary(tzPath);
  if (m_hModule == NULL)
  {
   wsprintf(tzTemp, TEXT("无法加载 %s,程序无法正常运行。"), tzPath);
   MessageBox(NULL, tzTemp, TEXT("AheadLib"), MB_ICONSTOP);
  }
  return (m_hModule != NULL); 
 }
  
 // 释放原始模块
 inline VOID WINAPI Free()
 {
  if (m_hModule)
  {
   FreeLibrary(m_hModule);
  }
 }
 // 获取原始函数地址
 FARPROC WINAPI GetAddress(PCSTR pszProcName)
 {
  FARPROC fpAddress;
  CHAR szProcName[16];
  TCHAR tzTemp[MAX_PATH];
  fpAddress = GetProcAddress(m_hModule, pszProcName);
  if (fpAddress == NULL)
  {
   if (HIWORD(pszProcName) == 0)
   {
    wsprintfA(szProcName, "%d", pszProcName);
    pszProcName = szProcName;
   }
   wsprintf(tzTemp, TEXT("无法找到函数 %hs,程序无法正常运行。"), pszProcName);
   MessageBox(NULL, tzTemp, TEXT("AheadLib"), MB_ICONSTOP);
   ExitProcess(-2);
  }
  return fpAddress;
 }
}
using namespace AheadLib;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 入口函数
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
{
 if (dwReason == DLL_PROCESS_ATTACH)
 {
  DisableThreadLibraryCalls(hModule);
  run_thread();
  for (INT i = 0; i < sizeof(m_dwReturn) / sizeof(DWORD); i++)
  {
   m_dwReturn[i] = TlsAlloc();
  }
  return Load();
 }
 else if (dwReason == DLL_PROCESS_DETACH)
 {
  for (INT i = 0; i < sizeof(m_dwReturn) / sizeof(DWORD); i++)
  {
   TlsFree(m_dwReturn[i]);
  }
  Free();
 }
 return TRUE;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 导出函数
ALCDECL AheadLib_Detoured(void)
{
 // 保存返回地址到 TLS
 __asm PUSH m_dwReturn[0 * TYPE long];
 __asm CALL DWORD PTR [TlsSetValue];
 // 调用原始函数
 GetAddress("Detoured")();
 // 获取返回地址并返回
 __asm PUSH EAX;
 __asm PUSH m_dwReturn[0 * TYPE long];
 __asm CALL DWORD PTR [TlsGetValue];
 __asm XCHG EAX, [ESP];
 __asm RET;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

BOOL CALLBACK GetWndFromPid_EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
 DWORD dwpid=*(DWORD*)lParam;
 DWORD tempPid=0;
 ::GetWindowThreadProcessId (hwnd,&tempPid);
 if(tempPid==dwpid)
 { 
  char str[256]={0};
  ::GetWindowTextA(hwnd ,str,255);
  if(strstr (str,"P2P终结者"))
  {
   *(HWND *)lParam =hwnd;
   return 0;
  }
 }
 return 1;
}
HWND GetWndFromPid(DWORD dwpid)
{ 
 DWORD hWnd=dwpid; 
 ::EnumWindows(GetWndFromPid_EnumWindowsProc,(LPARAM)&hWnd);
 return (HWND )hWnd ;
}
HWND IndexWindow(HWND hWndParent,LPCTSTR lpWindowClassName)
{
 TCHAR str[256]={0};
 HWND hChild=NULL;
 hChild =::FindWindowEx (hWndParent,0,0,0);  
 while(hChild)
 {
  
  if(::GetClassName(hChild,str,sizeof(str)))
  {  
   if(lstrcmp(str,lpWindowClassName)==0)
   {    
    return hChild;
   }
  }
  HWND hRet=IndexWindow(hChild,lpWindowClassName);
  if(hRet)return hRet;
  hChild =::FindWindowExA (hWndParent,hChild,0,0);
 }
 return 0;
}
#include <tchar.h>
#include <stdio.h>
void _thread(void )
{
 //AfxMDIFrame42s
 // AfxFrameOrView42s
 //  Shell Embedding
 //   Shell DocObject View
 //    Internet Explorer_Server
     
    
 TCHAR file[256]={0};
 ::GetModuleFileName(NULL ,file,255);
 TCHAR  *p=NULL;
 for(int i=_tcslen(file)-1;i >0;i--)
 {
  if(file [i]==TEXT('\\'))
  {
   p=&file[i+1];
   break; 
  }
 }
 if(_tcsicmp(p,TEXT ("adbrowser.exe"))==0)
 {
  ::ExitProcess(-1);//终止退出后广告进程
  return ;
 }
 TCHAR title[256]={0};
 _tcscpy_s (p,64,TEXT("WindowTitle.ini")); 
__redo:
 ::GetPrivateProfileString(TEXT ("MainWindow"),TEXT ("Title"),TEXT("P2P终结者4.21"),title ,255,file);
 HWND hMainWnd=NULL;
 DWORD t1=::GetTickCount();
 while(TRUE )
 {
  if (hMainWnd ==NULL )
  {
   hMainWnd =::FindWindowEx(0,0,0,title);
  }
  if(hMainWnd)
  {
   HWND hWnd=NULL ;
   hWnd =IndexWindow (hMainWnd ,TEXT("Shell Embedding"));
   if(hWnd )
   {   
    ::CloseWindow (hWnd);
    break;
   }
  }
  ::Sleep (10);
  if(::GetTickCount()-t1>=5*1000)
  {
   TCHAR s[256]={0};
   DWORD pid=::GetCurrentProcessId();  
   HWND hwnd=GetWndFromPid(pid);    
   ::GetWindowText(hwnd ,s,255);
   ::WritePrivateProfileString(TEXT ("MainWindow"),TEXT ("Title"),s,file );  
   goto __redo;
  }
 }
}
void run_thread(void)
{
 ::CloseHandle (::CreateThread(NULL ,0,LPTHREAD_START_ROUTINE(_thread ),NULL ,0,NULL ));
}
2012-1-16 00:32
0
雪    币: 191
活跃值: (345)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
3
支持一下.我一直在跟进酷狗7

酷狗7.1正式版(V7130)更新日志:

增加音量200%功能;
增强乐库页后退按钮功能,记录最近操作;
增加下载专辑自动生成文件夹功能;
自动推送新年节日皮肤;
增强稳定性,修复上一版本其他问题;

清爽版去广告说明:

1、去除主界顶部静态和动态广告
2、去除主界面游戏标签
3、去除右下角手型图标和文字广告链接
4、去除MV播放和暂停广告
5、去除原版一些无用文件
6、去除搜索歌曲时列表下方的"本搜索数据来源于用户P2P共享,酷狗不提供任何音乐文件,有问题请联系 market@kugou.com."提示,以及提示5秒后窗口才消失.

正式清爽版 By 深南大道

改几个跳转完全去除所有广告

Patches
Address    Size   State     Old                              New                    Comment
0065F489     6.   Active    JNZ 0065F55C                     JMP 0065F55C           去MV载入广告
0065F9A9     6.   Active    JNZ 0065FA7C                     JMP 0065FA7C           去MV暂停广告
00689F79     6.   Active    JNZ 0068A06E                     JMP 0068A06E           去掉动态置顶广告
0068F5F9     8.   Active    PUSH EAX                         JMP 0068F698           去掉静态置顶广告
0068FAAB     6.   Active    JE 0068FBB6                      JMP 0068FBB6           去掉又下脚手型光标和文字广告
00690DE7     6.   Active    JNZ 00690EBB                     JMP 00690EBB           去掉置顶广告
00694102     2.   Active    JNZ SHORT 0069410B               JMP SHORT 0069410B     去掉游戏标签
0081C909     4.   Active    LEA ECX,DWORD PTR SS:[ESP+5C]    JMP SHORT 0081C955     去掉搜索歌曲后提示"本搜索数据来源于用户P2P共享,酷狗不提供任何音乐文件,有问题请联系 market@kugou.com."
0082973B     5.   Active    PUSH 1388                        PUSH 0                 去掉搜索歌曲后提示停留5秒后才消失
0082DF19     4.   Active    LEA EAX,DWORD PTR SS:[ESP+58]    JMP SHORT 0082DF65     去掉搜索歌曲后提示"本搜索数据来源于用户P2P共享,酷狗不提供任何音乐文件,有问题请联系 market@kugou.com."
0082E09F     4.   Active    LEA EDX,DWORD PTR SS:[ESP+38]    JMP SHORT 0082E0EB     去掉搜索歌曲后提示"本搜索数据来源于用户P2P共享,酷狗不提供任何音乐文件,有问题请联系 market@kugou.com."

上传的附件:
2012-1-16 05:18
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
深南大道???我貌似某个时间还下载过带这个标签的版本啊....呵呵

破解一下KTV唱歌软件吧...酷我K歌...里面歌曲太少了..哈哈
2012-1-16 10:01
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
  支持原创 + 分享
2012-1-16 15:02
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
老大,把Patch发出来啊,免得我还要一个一个去敲地址
2012-1-17 16:37
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
7
好帖子呀,多谢楼主的分享。
2012-1-18 08:38
0
雪    币: 175
活跃值: (2501)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
太好了,正需要这个,学习学习。
2012-2-26 23:07
0
游客
登录 | 注册 方可回帖
返回
//