// patchmodule - Patches all imports listed in the supplied patch table, and // which are imported by the specified module, through to their respective // replacement functions. // // Note: If the specified module does not import any of the functions listed // in the patch table, then nothing is changed for the specified module. // // - importmodule (IN): Handle (base address) of the target module which is to // have its imports patched. // // - patchtable (IN): An array of patchentry_t structures specifying all of the // imports to patch for the specified module. // // - tablesize (IN): Size, in entries, of the specified patch table. // // Return Value: // // Returns TRUE if at least one of the patches listed in the patch table was // installed in the importmodule. Otherwise returns FALSE. // BOOL patchmodule (HMODULE importmodule, moduleentry_t patchtable [], UINT tablesize) { moduleentry_t *entry; UINT index; BOOL patched = FALSE; // Loop through the import patch table, individually patching each import // listed in the table. for (index = 0; index < tablesize; index++) { entry = &patchtable[index]; if (patchimport(importmodule, entry) == TRUE) { patched = TRUE; } } return patched; }
// patchmodule - Patches all imports listed in the supplied patch table, and // which are imported by the specified module, through to their respective // replacement functions. // // Note: If the specified module does not import any of the functions listed // in the patch table, then nothing is changed for the specified module. // // - importmodule (IN): Handle (base address) of the target module which is to // have its imports patched. // // - patchtable (IN): An array of patchentry_t structures specifying all of the // imports to patch for the specified module. // // - tablesize (IN): Size, in entries, of the specified patch table. // // Return Value: // // Returns TRUE if at least one of the patches listed in the patch table was // installed in the importmodule. Otherwise returns FALSE. // BOOL patchmodule (HMODULE importmodule, patchentry_t patchtable [], UINT tablesize) { patchentry_t *entry; UINT index; BOOL patched = FALSE; // Loop through the import patch table, individually patching each import // listed in the table. for (index = 0; index < tablesize; index++) { entry = &patchtable[index]; if (patchimport(importmodule, (HMODULE)entry->modulebase, entry->exportmodulename, entry->importname, entry->replacement) == TRUE) { patched = TRUE; } } return patched; }