首页
社区
课程
招聘
[原创]酷狗2011 去flash广告补丁编写
发表于: 2011-4-14 22:35 26415

[原创]酷狗2011 去flash广告补丁编写

2011-4-14 22:35
26415
酷狗音乐播放器,挺好的一个播放器~~
可是美中不足的是它的flash广告
2011版的KuGoo的flash广告就如下图一样在右上边的一条,闪来闪去~~ 不爽
于是就有了想把它去掉的心思~


开始的时候试过好多方法~~ 包括看看它flash的联网怎么获取的~~ 还有什么
CreateWindow的时候让它返回失败,不让它创建出来这个窗口,可是都不行或找不到,或程序崩溃~

后来找来工具 spy++ 查看这个窗口
Spy++ 果然给力~~ 不过话说查找这个flash窗口还得弄好久~~不容易聚焦到它上面
不过还是可以成功的,找到的,就如下图


看到了flash是个窗口类为 "Internet Explorer_Server" 的窗口,它的上层窗口 有 TfmAdBrowser , TfmSuite, TfrmMain
其中TfrmMain是最上层的主窗口类名,从名称中就可以看出,TfmAdBrowser---很显然是"广告(Ad)浏览(Browser)"类

于是 FindWinowEx 找到Internet Explorer_Server这个flash,调用 ShowWindow 隐藏之!,隐藏是成功了,
可是会出现个空洞,
更加不美观~~~

再看"TfmAdBrowser"是个好东西~~ 专管广告~ 哈,隐藏它试试--- 果然成功了! 广告就这样,没了!
不过广告没了就意味着~~右上方的那块地方成了没图的空地~~~ 虽然没广告 也不算完美 ~~
要不,我们自己在这里绘制个窗口吧~ 用我们喜欢的图片做背景 ~~ 哈哈


嗯~~ 那怎么在酷狗界面上创建窗口呢~~ ,一定得有个消息循环,在酷狗的进程空间内管理这个窗口~~~
好吧 来个dll,自己写个dll,里面写好创建窗口和消息循环的代码~~ ,然后patch  kugoo.exe 让它加载我们的dll
就是这样了~~
这个dll就叫 KuGoo_Ads.dll 吧
关键代码如下:

更新:以前dll的代码用的是FindWindowEx,今天改为EnumChildWindows,更通用些,不依赖窗口排列次序~~ 2011/4/18

int WINAPI DllMain (HANDLE hInstance, DWORD dwReason, LPVOID  lpReserved)
{
	switch (dwReason)
	{
		case DLL_PROCESS_ATTACH:
			hDllInst = hInstance ;
			// 创建工作线程
			CreateThread(NULL, 0, ThreadFunc, NULL, 0, &dwThreadId) ;  
			return TRUE ;
		case DLL_PROCESS_DETACH:

			return TRUE ;
	}
	return TRUE ;
}


// Thread Function
DWORD WINAPI ThreadFunc(LPVOID lParam)
{

		DWORD	dwTimeBegin, dwTimeCurrent, len ;
		HBITMAP hBitmap ;
		char	szExeName[MAX_PATH] , *p ;
		RECT	rcParentWnd ;

		GetModuleFileName(NULL, szExeName, sizeof(szExeName)) ;
		len = strlen(szExeName) ;

		p = &szExeName[len-1] ;
		while(*p != '\\' && p != szExeName) p-- ;
		// 判断是否是KuGoo.exe加载的
		if(lstrcmpi(p+1, szKeyName) != 0)
		{
			FreeLibrary(hDllInst) ;
			return 0 ;
		}
		dwTimeBegin = GetTickCount() ;
		FindAdWindow() ;
		while(!hAdParent || !hAdWnd)
		{
				dwTimeCurrent = GetTickCount() ;
				if(dwTimeCurrent - dwTimeBegin > 60*1000)
					return 0 ;		// 超时就返回
				Sleep(500) ;		// 延时
				FindAdWindow() ;
		}

		
		hBitmap = LoadBitmap(hDllInst, (LPSTR)IDB_BITMAP) ;
		GetClientRect(hAdWnd, &rcParentWnd) ;
    	CreateNewWindow(hAdParent, hBitmap, 0, 0, rcParentWnd.right, rcParentWnd.bottom) ;
		return 1 ;
}


// EnumChildProc可以遍历所有子孙窗口
BOOL CALLBACK EnumChildProc(HWND hWnd,  LPARAM lParam)
{
	char szClassName[MAX_PATH] = {0} ;

	GetClassName(hWnd, szClassName, MAX_PATH) ;
	if(!lstrcmpi(szClassName, "TfmAdBrowser"))
		{
			hAdWnd = hWnd ;
			hAdParent = GetParent(hAdWnd) ;
			ShowWindow(hAdWnd, SW_HIDE) ;
		}
	return TRUE ;
}


// EnumChildWindows
BOOL FindAdWindow()
{
	HWND hWndMain ;
	
	hWndMain = FindWindow("TfrmMain", NULL) ;	
	if(!hWndMain) return 0 ;
	EnumChildWindows(hWndMain, EnumChildProc, 0) ;
	return 1 ;
}


// 创建自定义窗口
BOOL CreateNewWindow(HWND hParent,HBITMAP hBitmap, int x, int y, int cx, int cy)
{
	MSG			msg ;
	HWND		hWnd ;
	WNDCLASS	wcWndClass ;

	memset(&wcWndClass, 0, sizeof(WNDCLASS)) ; 
	wcWndClass.style = 8 ;
	wcWndClass.lpfnWndProc = WndProc ;
	wcWndClass.hInstance = hDllInst ;
	wcWndClass.hbrBackground = (HBRUSH) CreatePatternBrush(hBitmap) ;
	wcWndClass.lpszClassName = szClassName ;
	RegisterClass(&wcWndClass) ;
	hWnd = CreateWindowEx (WS_EX_CONTROLPARENT, szClassName, NULL, WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 
		                   x, y, cx, cy, hParent, NULL, hDllInst, NULL) ;
	ShowWindow(hWnd, SW_NORMAL) ;
	UpdateWindow(hWnd) ;
	
	while(GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg) ;
		DispatchMessage(&msg) ;
	}
	return 0 ;
}


// 新建窗口的窗口过程
LRESULT CALLBACK WndProc(HWND hWnd,	UINT uMsg, WPARAM wParam, LPARAM lParam)
{

	switch(uMsg)
	{

		case WM_CLOSE:
			DestroyWindow(hWnd);
			PostQuitMessage(0);
			return 0;
		default:
			return DefWindowProc(hWnd, uMsg, wParam, lParam);
	}
}


当然这些做完后还要写个外壳就是补丁主程序,来实现修改KuGoo.exe让它加载我们的这个dll,
PEID 查看的值它恰好有导入函数 LoadLibraryA 哈哈~~ 很好

OD载入,LoadLibraryA 下断,断下后就知道了 IAT 表中LoadLibraryA 存储在哪里了~~
直接记录~~
我这里得到的是这样的:

004773E5   .  68 10754700   push KuGoo.00477510                      ; /FileName = "imm32.dll"
004773EA   .  E8 ED12F9FF   call <jmp.&kernel32.LoadLibraryA>        ; \LoadLibraryA
004773EF   .  A3 CCAC7900   mov dword ptr ds:[79ACCC],eax            ;  IMM32.771F0000

此处call是下面这个:
call 004086DC      // LoadLibraryA 的地址的存储单元的地址

那么我们在KuGoo.exe中应该这样做了:
1)修改入口点代码为 jmp XXXXX (XXXXX 是我们的代码,这部分代码我把它安排在了 DOS 块中)
2)XXXXX处代码:
  mov eax,0x004086DC   // LoadLibraryA的地址为[004086DC]
  push YYYYY           // YYYYY是我们的dll名字字符串的地址
  call eax               // Load
  --------
  --------            // 执行刚才入口点由于被修改为jmp而毁坏的指令
  jmp  ZZZZZ          // 调回继续执行原程序

以上这些是我们要WriteFile到KuGoo.exe的.
把外壳写好我们的这个补丁程序也就大功告成了 ~~
弄好后就是这样了:(我用的自定义新窗口背景图片也是酷狗的,所以不要以为它没换实质已经换了)


说明:
    附件中含有Dll源码,和已经编译好的dll还有一个已经做好的补丁,补丁EXE可单独使用了 ~~因为它资源里包含了这个dll
    修改KuGoo.exe时,部分杀软会报威胁~~
    补丁程序会帮您备份一份未补丁时的文件,在KuGoo.exe的同目录,有需要可换回
    您也可以自己备份再来补丁
   
    自创建的新窗口可自定义背景的但是要注意尺寸。我这里用的是kugoo的一个截图来的背景。

~~~ 360 残忍的木马我的附件~~ 唉 -- 为清白 外壳 的代码C文件我也串上来吧 有时间的自己编译去吧 ~~ 唉。。。
要使用附件的EXE,添加一下信任文件吧。。。。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   更新:
由于dll中获得"TfmAdBrowser"类时利用FindWindowEx,过于依赖窗口排列书序,书写不便,不利于通用,于是将核心改良了一下,利用 EnumChildWindows 来遍历子窗口,找到首个 "TfmAdBrowser"类! 这样更通用些~~~
附件第三个就是 更新的dll 文件的 C 工程文件夹~~~  

另:支持正式版 6.2.23 , 其它版本可能不成功, 因为 补丁外壳 Patch 时 用了硬编码 (包括KuGoo.exe的入口点) 因此可能就失败了~~~ 有时间的话 可以自己
    依据源代码,稍稍调试一下 改一下~~ 就应该可以成功的 ~

读者注意啦!
酷狗更新喽~~ 6.2.24都出来啦~~ 对最新版本补丁主程序会失效,原因就是patch时使用了硬编码,dll 文件是有效地~~~ ,你怎么样让kugoo.exe加载这个dll,就看你自己怎么DIY 啦~~

++++++++++++++++++++++++++++++++++++++++++++++++++++
哈哈~~ 有更新了一下~~~ 解决部分硬编码问题~~~ 适用范围更广喽。。。基本不受版本限制了
2011/5/17

Sorry,本附件暂不支持 酷狗 7

Author: Vsbat

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 7
支持
分享
最新回复 (41)
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
膜拜大牛!收藏了。谢谢 !
2011-4-14 23:02
0
雪    币: 2882
活跃值: (1245)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjd
3
此帖收藏,以后去广告能用上。^_^
2011-4-14 23:09
0
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不错。。。前排留坐
2011-4-15 00:16
0
雪    币: 433
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
5
在6.2.17正式版上面测试,只显示一会,接着就又出现广告了……
2011-4-15 00:41
0
雪    币: 62
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
LZ太伟大了绝对支持你!
2011-4-15 08:21
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这就伟大了,彻底败北了
2011-4-15 08:43
0
雪    币: 859
活跃值: (304)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
8
回 泉哥 ~ 见你说不能正常使用 我马上试了一下 去酷狗官网下载了 6.2.23.553 最新版本~~
从论坛下载附件 结果是:360到处拦我--关了360 -- patch --- 成功的 广告遮住了~~
不知你的不成功是什么原因 -- 不知道是不是你的启动慢了,过了dll里面的那个超时时间~~dll没进行遮窗口的动作
-----------
PS:感谢上面回帖的兄弟们的支持~
2011-4-15 08:43
0
雪    币: 433
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
9
开启酷狗后是成功将图片替换掉广告了,但只存在两三秒而已,广告又出现了……
我的是win7系统
2011-4-15 11:01
0
雪    币: 859
活跃值: (304)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
10
应该是窗口类排列不同了~~ EXE入口点可能也有变化~~

所以这个不中了~~

应该说 支持酷狗最新正式版 6.2.23
2011-4-15 12:20
0
雪    币: 211
活跃值: (152)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
这个挺有意思的,
2011-4-16 01:47
0
雪    币: 261
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
好文章,一套完整的流程
2011-4-17 17:12
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
去广告能用上的啊
2011-4-17 18:04
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
支持,辛苦了
2011-4-18 09:10
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
支持楼主...
2011-4-18 09:36
0
雪    币: 826
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
感谢分享,想起了酷我什么的。。。
2011-4-18 11:11
0
雪    币: 12
活跃值: (767)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
相当不错,留名学习
2011-4-18 11:14
0
雪    币: 234
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
太牛了~~学习下去广告方法
2011-4-18 17:38
0
雪    币: 288
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
好文。
思路清晰。
2011-4-18 18:36
0
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
好文章,我觉得这很实用!
2011-4-19 00:21
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
隐藏的话还是会联网
2011-4-19 00:32
0
雪    币: 166
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
挺好的,学习了
2011-4-19 00:35
0
雪    币: 49
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
楼主辛苦了,楼上说的是,隐藏了还会联网,楼主能否给个彻底“阉割”它的思路。。。有点YD了。。
2011-4-20 10:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
看图也要下载。。真残忍
2011-4-21 23:43
0
雪    币: 433
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
25
重启后可用了,由于很少重启,所以现在才回复,呵呵……
2011-4-22 00:06
0
游客
登录 | 注册 方可回帖
返回
//