Article ID: 141203
Article Last Modified on 11/21/2006
pPrevFaultHandler dd ?
mov eax, fault_number
mov esi, offset32 FaultHandler
VMMCall Hook_V86_Fault
mov pPrevFaultHandler, esi
BeginProc FaultHandler
;;;
;;; handler code
;;;
cmp pPrevFaultHandler, 0
jz @F
jmp pPrevFaultHandler
@@: ret
EndProc FaultHandler
pPrevFaultHandler dd 0
mov eax, fault_number
mov esi, offset32 FaultHandler
VMMCall Hook_V86_Fault
; NOTE: No "mov pPrevFaultHandler, esi" instruction
; esi = 0 if this is the first fault handler
; pPrevFaultHandler will *always* be nonzero.
; if esi = 0, pPrevFaultHandler will be the address
; of the default handler.
...
mov eax, fault_number
mov esi, offset32 FaultHandler
VMMCall UnHook_V86_Fault
BeginProc FaultHandler, HOOK_PROC, pPrevFaultHandler
;;;
;;; handler code
;;;
; NOTE: No "cmp pPrevFaultHandler, 0" instruction
jmp pPrevFaultHandler
EndProc FaultHandler
Keywords: kbhowto KB141203