www.pudn.com > API_VC_HOOK-.rar > UnhookDll.asm
;@GOTO TRANSLATE
.586P
.MODEL FLAT, STDCALL
OPTION CASEMAP: NONE
INCLUDE WINDOWS.inc
UNICODE = TRUE
INCLUDE APIMACRO.mac
INCLUDE ApiHooks.inc
INCLUDELIB iKERNEL32.lib
INCLUDELIB iUSER32.lib
;------------------------------------------------------------------
.CODE
UnhookApi PROC USES EBX ESI EDI, UnhStruc: PTR UNHOOK_API
MOV ESI, UnhStruc
ASSUME ESI :PTR API_UNHOOK
MOV EBX, [ESI].CurNoAddr
@@:
DEC EBX
JL UnhookFin
MOV EDI, [ESI].WhereWhat
MOV EDI, (ADDR_CONTENTS PTR [EDI][EBX*SIZEOF ADDR_CONTENTS]).ReturnWhere
PUSH EAX
iWin32 VirtualProtect, EDI, 4, PAGE_READWRITE, ESP
TEST EAX, EAX
POP EDX
JE UnhookNext
MOV EAX, [ESI].WhereWhat
MOV EAX, (ADDR_CONTENTS PTR [EAX][EBX*SIZEOF ADDR_CONTENTS]).ReturnWhat
MOV [EDI], EAX
PUSH EAX
iWin32 VirtualProtect, EDI, 4, EDX, ESP
POP EAX
UnhookNext:
JMP @B
UnhookFin:
RET
UnhookApi ENDP
;------------------------------------------------------------------
NewGetVersion PROC
INC Counter
CMP Counter, 10
JG NotUnh
JL @F
sWin32 UnhookApi, OFFSET UnhookGetVersion
iWin32i MessageBox, NULL, sUnhookMsg, sUnhookTitle, MB_OK
JMP @F
NotUnh:
iWin32i MessageBox, NULL, sNotUnhookMsg, sUnhookTitle, MB_OK
@@:
iWin32j GetVersion
TEXTA GetVersion,
MkUnhook GetVersion, 3
Counter DWORD 0
NewGetVersion ENDP
TEXT UnhookTitle,
TEXT UnhookMsg,
TEXT NotUnhookMsg,
;names-------------------------------------------------------------
TEXTA KERNEL32,
;------------------------------------------------------------------
BeginHooks Unhook
MkHook , , GetVersion, HOOK_IMPORT, NULL
EndHooks
;------------------------------------------------------------------
END
:TRANSLATE
@ECHO OFF
ML /c /coff /nologo UnhookDll.bat
LINK3 UnhookDll /nologo /DLL /NOENTRY /OUT:Unhook.dll /EXPORT:Unhook,@1,NONAME /SUBSYSTEM:WINDOWS /MERGE:.idata=.text /MERGE:.rdata=.text /SECTION:.text,WRE /IGNORE:4078 /BASE:0X77300000
DEL UnhookDll.obj
DEL Unhook.exp
DEL Unhook.lib