跳转到内容


QQ本地会员补丁汇编源码。


  • 您无法回复此主题
No replies to this topic

#1 黑妖蛇

    实习生

  • 注册用户
  • 点子点子点子
  • 55 帖子数:

发表于 2011/06/05 16:07:25

把msimg32.dll放在bin下面就行了。

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;  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 




瑞气伴君行,冠名扬天下!





目前查看此主题的用户: 1 位

0 位会员, 1 位游客, 0 位隐身会员