- UID
- 521
- 积分
- 16957
- 回帖
- 0
- 贡献
-
- 金钱
-
- 注册时间
- 2012-7-25
- 最后登录
- 1970-1-1
- 在线时间
- 小时
TA的每日心情 | 奋斗 2024-8-13 08:57 |
---|
签到天数: 415 天 连续签到: 1 天 [LV.9]青行灯
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?创建账号
×
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;
- ; 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
复制代码 |
评分
-
查看全部评分
|