眷恋 发表于 2013-8-24 16:35:00

QQ本地会员补丁汇编源码

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;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 protoC:DWORD,:DWORD    ;使用__cdecl

g_GetSelfUin      typedef ptr   p_GetSelfUin
g_IsFlagValid      typedef ptr    p_IsFlagValid

GetSelfUin      g_GetSelfUin0;判断是否是自己
IsFlagValid      g_IsFlagValid0

.data?
;未初始化的变量
szSysDLL      BYTE MAX_PATHDUP(?)

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
.IF cl==0E9h
      mov ecx,dword ptr
      add ecx,TargetProc
sub ecx,offset g_bak

      mov dword ptr ,ecx
.endif

;写入还原
mov ecx,offset g_bak

    add ecx,5
    mov byte ptr ,0E9h
    inc ecx

    mov eax,TargetProc
sub eax,ecx
    inc eax
    mov dword ptr ,eax

;写入跳转
mov eax,offset g_jmp
    mov byte ptr ,0E9h
    inc eax

    mov ecx,NewProc
sub ecx,TargetProc
sub ecx,5
    mov dword ptr ,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

Sealt 发表于 2013-8-24 17:35:30

虽然看不懂 但也不知道有什么用

836955823 发表于 2013-8-24 20:01:56

11年耍下的源码..还有用?

眷恋 发表于 2013-8-24 20:49:25

836955823 发表于 2013-8-24 20:01 static/image/common/back.gif
11年耍下的源码..还有用?

必须有用,修改下就好





神奇的:Opera/9.80 (Windows NT 6.2; WOW64; U; OperaDot; zh-cn) Presto/2.10.229 Version/11.64(zh-cn)
┈─━ 你的幸福是我的快乐!(+^_^*)
——┃俺为尾巴代言←         

baobaoguai 发表于 2013-8-24 21:45:38

耍X很了不起的

baobaoguai 发表于 2013-8-24 21:58:45

知道怎么改有用也很了不起

亦人の季节 发表于 2013-8-24 23:19:32

围观,不明觉厉

菜鸟求关照 发表于 2013-8-26 11:08:58

有易语言的吗
页: [1]
查看完整版本: QQ本地会员补丁汇编源码