www.pudn.com > API_VC_HOOK-.rar > Patcher1.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 
 
;------------------------------------------------------------------ 
 
.CODE 
   New_wsprintfA: 
    PUSHp    ESI, EDI 
    DEC      FirstTime    ;work one time only 
    JL       @F 
    iWin32i  GetModuleHandle, NULL 
    TEST     EAX, EAX 
    JE       @F 
    MOV      EDI, EAX 
    ADD      EDI, PatchRVA 
    PUSH     ECX 
    iWin32   VirtualProtect, EDI, PatchSize, PAGE_READWRITE, ESP 
    TEST     EAX, EAX 
    POP      EDX 
    JE       @F 
    PUSHp    EDI, EDI 
    MOV      ESI, OFFSET OrigValues 
    MOV      ECX, PatchSize 
    REPE     CMPSB 
    POP      EDI 
    JNE      ReturnPg 
    MOV      ESI, OFFSET WantedValues 
    MOV      ECX, PatchSize 
    REP      MOVSB 
   ReturnPg: 
    POP      EDI 
    PUSH     EAX 
    iWin32   VirtualProtect, EDI, PatchSize, EDX, ESP 
    POP      EAX 
   @@: 
    POPc     ESI, EDI 
    iWin32j  wsprintfA 
 
  ALIGN 4 
  FirstTime    DWORD 1 
 
  OrigValues   LABEL BYTE 
               PUSH  MB_OK 
  WantedValues LABEL BYTE 
               PUSH  MB_YESNO OR MB_ICONQUESTION 
  PatchSize    EQU  $-WantedValues 
  PatchRVA     EQU  1081H 
 
  TEXTA        USER32,     
  TEXTA        _wsprintfA,    ;_ added for avoiding conflicts with WINDOWS.inc 
;------------------------------------------------------------------ 
 BeginHooks      Patcher1 
  MkHook  ,USER32, _wsprintfA, HOOK_IMPORT, NULL 
 EndHooks 
;------------------------------------------------------------------ 
 
END 
 
:TRANSLATE 
@ECHO OFF 
ML    /c /coff  /nologo Patcher1.bat 
LINK3 Patcher1 /nologo /DLL /NOENTRY /EXPORT:Patcher1,@1,NONAME /SUBSYSTEM:WINDOWS /MERGE:.idata=.text /MERGE:.rdata=.text /SECTION:.text,WRE /IGNORE:4108,4078,4086 /BASE:0X77200000 
DEL   Patcher1.obj 
DEL   Patcher1.exp 
DEL   Patcher1.lib