www.pudn.com > API_VC_HOOK-.rar > Patcher.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 
   DllMain: 
    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 
    MOV      EAX, TRUE 
    RET      12 
 
  ALIGN 4 
  FirstTime    DWORD 1 
 
  OrigValues   BYTE "X" 
  WantedValues BYTE "u" 
  PatchSize    EQU  SIZEOF OrigValues 
  PatchRVA     EQU  103FH 
;------------------------------------------------------------------ 
 BeginHooks      Patcher 
 EndHooks 
;------------------------------------------------------------------ 
 
END DllMain  
 
:TRANSLATE 
@ECHO OFF 
ML    /c /coff  /nologo Patcher.bat 
LINK3 Patcher /nologo /DLL /EXPORT:Patcher,@1,NONAME /SUBSYSTEM:WINDOWS /MERGE:.idata=.text  /MERGE:.rdata=.text /SECTION:.text,WRE /IGNORE:4078,4086 /BASE:0X77100000 
DEL   Patcher.obj 
DEL   Patcher.exp 
DEL   Patcher.lib