首页
社区
课程
招聘
[旧帖] [转帖]QQ本地会员补丁汇编源码。 0.00雪花
发表于: 2011-6-5 11:18 3959

[旧帖] [转帖]QQ本地会员补丁汇编源码。 0.00雪花

2011-6-5 11:18
3959
把msimg32.dll放在bin下面就行了。
另外,求高人把源码翻译成 C++

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;  QQ本地会员 源代码 [通过msimg32.dll劫持启动] shuax 2011.05.21
;  msimg32.Asm
;  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.586
.model flat, stdcall
option casemap :none
 
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;  头文件
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
include					windows.inc
include					kernel32.inc
includelib				kernel32.lib
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;  全局变量
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.data
;初始化的变量
szCopyright				db				'QQLocalVIP by shuax',0
 
szMsimg32				db				'\msimg32.dll',0
szKernelUtil			db				'KernelUtil.dll',0
 
szvSetDdrawflag			db				'vSetDdrawflag',0
szDllInitialize			db				'DllInitialize',0
szGradientFill			db				'GradientFill',0
szAlphaBlend			db				'AlphaBlend',0
szTransparentBlt		db				'TransparentBlt',0
 
szGetSelfUin			db				'?GetSelfUin@Contact@Util@@YAKXZ',0
szIsFlagValid			db				'?IsFlagValid@Contact@Util@@YAHKK@Z',0
 
;声明函数指针
p_GetSelfUin			typedef proto 	C					;使用__cdecl
p_IsFlagValid			typedef proto	C:DWORD,:DWORD		;使用__cdecl
 
g_GetSelfUin			typedef ptr 	p_GetSelfUin
g_IsFlagValid			typedef ptr		p_IsFlagValid
 
GetSelfUin				g_GetSelfUin	0					;判断是否是自己
IsFlagValid				g_IsFlagValid	0
 
.data?
;未初始化的变量
szSysDLL				BYTE MAX_PATH	DUP(?)
 
g_msimg32				dd				?
g_kernelutil			dd				?
 
g_vSetDdrawflag			dd				?
g_DllInitialize			dd				?
g_GradientFill			dd				?
g_AlphaBlend			dd				?
g_TransparentBlt		dd				?
 
g_bak					BYTE 10			DUP(?)
g_jmp					BYTE 5			DUP(?)
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;  代码
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.code
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;导出函数
vSetDdrawflag proc
	jmp g_vSetDdrawflag
vSetDdrawflag endp
DllInitialize proc
	jmp g_DllInitialize
DllInitialize endp
GradientFill proc
	jmp g_GradientFill
GradientFill endp
AlphaBlend proc
	jmp g_AlphaBlend
AlphaBlend endp
TransparentBlt proc
	jmp g_TransparentBlt
TransparentBlt endp
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;本地会员
MyIsFlagValid proc C QQUIN:DWORD, Flag:DWORD
	.IF Flag==4	;是否是判断会员
		.IF GetSelfUin!=0
			invoke GetSelfUin
			.IF QQUIN==eax					;判断是否是自己,如果是则返回TRUE
				mov eax, TRUE
				jmp original
			.ENDIF
		.ENDIF
	.ENDIF
 
	.IF IsFlagValid!=0
		invoke IsFlagValid,QQUIN,Flag		;调用原始函数
	.ENDIF
 
;返回
original:	
	mov esp,ebp 	;使用__cdecl
	pop ebp
	retn
MyIsFlagValid endp
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5字节inline hook
HookCode proc TargetProc:DWORD, NewProc:DWORD 
	;参数检查
	.IF TargetProc == 0
		ret
	.endif
 
	;使得g_bak区块可执行
	mov ecx,offset g_bak
	mov IsFlagValid,ecx
	invoke VirtualProtect,IsFlagValid,10,PAGE_EXECUTE_READWRITE,0
 
	;读取前5个字节
	invoke ReadProcessMemory,-1,TargetProc, IsFlagValid, 5, NULL;
	.IF eax!=0
		;如果已经被hook过,则修正JMP偏移
		mov ecx,dword ptr [g_bak]
		.IF cl==0E9h
			mov ecx,dword ptr [g_bak+1]
			add ecx,TargetProc
			sub ecx,offset g_bak
 
			mov dword ptr [g_bak+1],ecx
		.endif
 
		;写入还原
		mov ecx,offset g_bak
 
		add ecx,5
		mov byte ptr [ecx],0E9h
		inc ecx
 
		mov eax,TargetProc
		sub eax,ecx
		inc eax
		mov dword ptr [ecx],eax
 
		;写入跳转
		mov eax,offset g_jmp
		mov byte ptr [eax],0E9h
		inc eax
 
		mov ecx,NewProc
		sub ecx,TargetProc
		sub ecx,5
		mov dword ptr [eax],ecx
 
		invoke WriteProcessMemory,-1,TargetProc, addr g_jmp, 5, NULL
	.endif
	ret
HookCode endp
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DllMain
DllEntry proc hModule:HINSTANCE, dwReason:DWORD, lpReserved:DWORD
	.IF dwReason == DLL_PROCESS_ATTACH
		;获得系统msimg32.dll地址
		invoke GetSystemDirectory,addr szSysDLL, MAX_PATH
		invoke lstrcat,addr szSysDLL, addr szMsimg32
		invoke LoadLibrary,addr szSysDLL
		.IF eax!=0
			;获得各个函数地址
			mov g_msimg32,eax
 
			invoke GetProcAddress,g_msimg32,addr szvSetDdrawflag
			mov g_vSetDdrawflag, eax
 
			invoke GetProcAddress,g_msimg32,addr szDllInitialize
			mov g_DllInitialize, eax
 
			invoke GetProcAddress,g_msimg32,addr szGradientFill
			mov g_GradientFill, eax
 
			invoke GetProcAddress,g_msimg32,addr szAlphaBlend
			mov g_AlphaBlend, eax
 
			invoke GetProcAddress,g_msimg32,addr szTransparentBlt
			mov g_TransparentBlt, eax
 
			;写入本地会员hook
			invoke GetModuleHandle,addr szKernelUtil
			.IF eax!=0
				mov g_kernelutil,eax
 
				invoke GetProcAddress,g_kernelutil,addr szGetSelfUin
				mov GetSelfUin, eax
 
				invoke GetProcAddress,g_kernelutil,addr szIsFlagValid
				invoke HookCode,eax,MyIsFlagValid
 
				;打印版权信息
				invoke OutputDebugString,addr szCopyright
			.ENDIF
		.ENDIF
	.ENDIF
	mov eax, TRUE
	ret
DllEntry Endp
 
End DllEntry 


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;  QQ本地会员 源代码 [采用msimg32.dll劫持] shuax 2011.05.21
;  msimg32.Def
;  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LIBRARY "msimg32.DLL"
EXPORTS
		vSetDdrawflag
		DllInitialize
		GradientFill
		AlphaBlend
		TransparentBlt 


本源码转自耍下博客:http://www.shuax.com/?p=2255

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 3800
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个是通用的,还是有版本限制?
2011-6-5 13:01
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
能不能用啊???
2011-6-5 13:42
0
雪    币: 1644
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
流传的真快。
2011-6-5 14:46
0
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
还是那句话,很快就不能用了!
2011-6-5 15:16
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
2011可以用。
2011-6-6 09:47
0
雪    币: 359
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
新手新手 。。
2011-6-6 19:05
0
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
8
哇赛!!!~~
2011-6-6 19:19
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
怎么用呢?用vc编译完了,直接执行程序?
2011-6-8 11:51
0
雪    币: 1644
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
请问本地会员有什么用?
2011-8-22 20:29
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
难道可以修改数据库资料?还是欺骗服务器?这么大的漏洞?
看错原来是本地会员
2011-8-24 14:34
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
版块分布感觉此论坛好高深啊啊啊  还有那串代码
2011-8-24 19:43
0
雪    币: 297
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
哇 这么好的东西、、、
2011-8-24 22:23
0
雪    币: 69
活跃值: (157)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
14
自我安慰...呵呵
2011-8-24 22:28
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
本地会员貌似没有什么作用啊
2011-8-25 09:24
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
學習下
2011-8-25 10:14
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
能用不,正在试用中。
2011-8-25 11:37
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
18
Hook Call QQ的内部函数,模拟Call
2011-8-25 11:40
0
游客
登录 | 注册 方可回帖
返回
//