www.pudn.com > API_VC_HOOK-.rar > MiscHooks.asm


;@goto translate 
 
 
.586P 
 
.MODEL            FLAT, STDCALL 
 
   OPTION         CASEMAP: NONE 
   INCLUDE        WINDOWS.inc 
   UNICODE        = FALSE 
   INCLUDE        APIMACRO.mac 
 
   INCLUDE        ApiHooks.inc 
 
   INCLUDELIB     iKERNEL32.lib 
   INCLUDELIB     iUSER32.lib 
   INCLUDELIB     iADVAPI32.lib 
 
;------------------------------------------------------------------ 
.DATA? 
   Place           SIGN    80    DUP (?) 
 
.CODE 
 
  ;if DllMain is not required then use /noentry switch on LINK commandline 
 
  DllMain    PROC     DllHandle, Reason, pContext 
    MOV      EAX,     Reason 
    CMP      EAX,     DLL_PROCESS_ATTACH 
    JE       Attach 
    CMP      EAX,     DLL_PROCESS_DETACH 
    JE       Detach 
   Success: 
    MOV      EAX,     TRUE 
    RET 
 
   Attach: 
    CMP      hLog, INVALID_HANDLE_VALUE 
    JNE      Success 
    iWin32i  CreateFile, sLogName, GENERIC_WRITE, FILE_SHARE_READ,\ 
                         NULL, CREATE_ALWAYS, NULL, NULL 
    MOV      hLog, EAX 
    JMP      Success 
 
   Detach: 
    iWin32   CloseHandle, hLog 
    MOV      hLog, INVALID_HANDLE_VALUE 
    JMP      Success 
 
    TEXT     LogName,  
    ALIGN 4 
    hLog     HANDLE   INVALID_HANDLE_VALUE 
  DllMain    ENDP 
;------------------------------------------------------------------ 
  NewGetVersionExW PROC    lpOSVERSIONINFO 
                   iWin32  GetVersionExW, lpOSVERSIONINFO 
                   MOV     ECX, lpOSVERSIONINFO 
        	   ;make Windows 9.0 
                   MOV     (OSVERSIONINFO PTR [ECX]).dwMajorVersion, 9 
                   RET 
                   TEXTA   GetVersionExW,   
  NewGetVersionExW ENDP 
 
  NewGetVersionExA PROC    lpOSVERSIONINFO 
                   iWin32  GetVersionExA, lpOSVERSIONINFO 
                   MOV     ECX, lpOSVERSIONINFO 
        	   ;make Windows 9.0 
                   MOV     (OSVERSIONINFO PTR [ECX]).dwMajorVersion, 9 
                   RET 
                   TEXTA   GetVersionExA,   
  NewGetVersionExA ENDP 
;------------------------------------------------------------------ 
  NewRegOpenKeyExA PROC    hKey, pSubKey, dwReserved, samDesired, phkResult 
                   iWin32  RegOpenKeyExA, hKey, pSubKey, dwReserved, samDesired, phkResult 
                   PUSHp   EBX, EAX 
                   MOV     EBX, OFFSET Place 
                   TEST    EAX, EAX 
                   MOV     EDX, sRegOSucc 
                   JE      @F 
                   MOV     EDX, sRegOFail 
                  @@: 
                   icWin32 wsprintfA, EBX, sRegOTemplate, pSubKey, EDX 
                   iWin32  MessageBoxA, NULL, EBX, sHookTitle, MB_OK 
                   POPc    EBX, EAX 
                   RET 
 
                   TEXTA   RegOpenKeyExA,   
 
                   TEXTA   RegOSucc,     
                   TEXTA   RegOFail,     
                   TEXTA   RegOTemplate, 
                   TEXTA   HookTitle,    
  NewRegOpenKeyExA ENDP 
;------------------------------------------------------------------ 
  NewCreateFileA   PROC    sFile 
                   LOCAL   Written : DWORD 
                   PUSH    EBX  
                   MOV     EBX, OFFSET Place 
                   icWin32 wsprintfA, EBX, sCRFTemplate, sFile 
                   iWin32  lstrlenA, EBX 
                   LEA     ECX, Written 
                   iWin32  WriteFile, hLog, EBX, EAX, ECX, NULL 
                   POP     EBX 
                   LEAVE 
                   iWin32j CreateFileA 
 
                   TEXTA   CreateFileA,  
  
                   TEXTA   CRFTemplate,  
  NewCreateFileA   ENDP 
 
;------------------------------------------------------------------ 
  NewDialogBoxParamA PROC hInstance, lpTemplateName, hWndParent,\ 
                          lpDialogFunc, dwInitParam 
                     CMP  HookFree, 0 
                     JNE  @F 
                     MOV  EAX, lpDialogFunc 
                     INC  HookFree 
                     MOV  OrgDlgProc, EAX 
                     MOV  lpDialogFunc, OFFSET DialogHook 
                    @@: 
                     LEAVE 
                     iWin32j  DialogBoxParamA 
 
                     TEXTA   DialogBoxParamA,   
 
                     ALIGN 4 
                     HookFree   DWORD 0 
                     OrgDlgProc DWORD ? 
 
  NewDialogBoxParamA ENDP 
 
       DialogHook    PROC hWndDlg, uMsg, wParam, lParam 
                     CMP  WORD PTR uMsg, WM_DESTROY 
                     JNE  @F 
                     DEC  HookFree 
                     iWin32i MessageBox, NULL, sDlgDestroyed, sDlgHook, MB_ICONINFORMATION 
                    @@: 
                     LEAVE 
                     JMP  OrgDlgProc 
 
                     TEXT DlgHook,        
                     TEXT DlgDestroyed,   
       DialogHook    ENDP 
;names------------------------------------------------------------- 
                     TEXTA   KERNEL32,   
                     TEXTA   USER32,     
                     TEXTA   ADVAPI32,   
                     TEXTA   SHELL32,    
;------------------------------------------------------------------ 
 BeginHooks ExampleHooks   
   API_HOOK  
   MkHook   ,        , GetVersionExA,,   SHELL32 
   MkHook   ,ADVAPI32, RegOpenKeyExA 
   MkHook   ,        , CreateFileA 
   MkHook   ,USER32  , DialogBoxParamA 
 EndHooks 
;------------------------------------------------------------------ 
 
END  DllMain 
 
:TRANSLATE 
@ECHO OFF 
ML    /c /coff /nologo MiscHooks.bat 
LINK3 MiscHooks /nologo /DLL /EXPORT:ExampleHooks,@1,NONAME /SUBSYSTEM:WINDOWS /MERGE:.idata=.text /MERGE:.rdata=.text /SECTION:.text,WRE /IGNORE:4078 /BASE:0X77FD0000 
DEL   MiscHooks.obj 
DEL   MiscHooks.exp 
DEL   MiscHooks.lib