* hookapi.cc (putmem): Remove query of previous memory protection since we get

that for free the first time we call VirtualProtect.
This commit is contained in:
Christopher Faylor 2005-12-16 18:10:10 +00:00
parent f5778dc7f4
commit fd01d14ab1
2 changed files with 8 additions and 14 deletions

View File

@ -1,3 +1,8 @@
2005-12-16 Christopher Faylor <cgf@timesys.com>
* hookapi.cc (putmem): Remove query of previous memory protection since
we get that for free the first time we call VirtualProtect.
2005-12-15 Corinna Vinschen <corinna@vinschen.de>
* mmap.cc (fhandler_dev_zero::fixup_mmap_after_fork): Use

View File

@ -53,25 +53,14 @@ rvadelta (PIMAGE_NT_HEADERS pnt, DWORD import_rva)
void *
putmem (PIMAGE_THUNK_DATA pi, const void *hookfn)
{
DWORD flOldProtect, flNewProtect, flDontCare;
MEMORY_BASIC_INFORMATION mbi;
/* Get the current protection attributes */
VirtualQuery (pi, &mbi, sizeof (mbi));
/* Remove ReadOnly and ExecuteRead attributes, add on ReadWrite flag */
flNewProtect = mbi.Protect;
flNewProtect &= ~(PAGE_READONLY | PAGE_EXECUTE_READ);
flNewProtect |= PAGE_READWRITE;
if (!VirtualProtect (pi, sizeof (PVOID), flNewProtect, &flOldProtect) )
DWORD ofl;
if (!VirtualProtect (pi, sizeof (PVOID), PAGE_READWRITE, &ofl) )
return NULL;
void *origfn = (void *) pi->u1.Function;
pi->u1.Function = (DWORD) hookfn;
VirtualProtect (pi, sizeof (PVOID), flOldProtect, &flDontCare);
VirtualProtect (pi, sizeof (PVOID), ofl, &ofl);
return origfn;
}