Code: Select all
Prototype.l OriginalCreateFileA(lpFileName.s, dwDesiredAccess.i, dwShareMode.i, *lpSecurityAttributes.SECURITY_ATTRIBUTES, dwCreationDisposition.i, dwFlagsAndAttributes.i, hTemplateFile.i)
Global o_CreateFileA.OriginalCreateFileA
Procedure.l MyCreateFileA(lpFileName.s, dwDesiredAccess.i, dwShareMode.i, *lpSecurityAttributes.SECURITY_ATTRIBUTES, dwCreationDisposition.i, dwFlagsAndAttributes.i, hTemplateFile.i)
ProcedureReturn o_CreateFileA(lpFileName, dwDesiredAccess, dwShareMode, *lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile)
EndProcedure
Code: Select all
InlineHook("Kernel32.dll", "CreateFileA", @MyCreateFileA(), @o_CreateFileA)
Code: Select all
ProcedureReturn o_CreateFileA(lpFileName, dwDesiredAccess, dwShareMode, *lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile)
Now if I change it up and use a unhook/rehook approach with something like this and importing/calling CreateFileA_() unhooked and rehooking before returning, everything works fine...