Clean up function resolution a little

This commit is contained in:
Simon Lindholm
2022-07-15 00:45:35 +02:00
parent 11bdc5e8a2
commit ced712df09
3 changed files with 53 additions and 55 deletions

View File

@@ -183,8 +183,8 @@ bool wibo::Executable::loadPE(FILE *file) {
PEImportDirectoryEntry *dir = fromRVA<PEImportDirectoryEntry>(header32.importTable.virtualAddress);
while (dir->name) {
char *name = fromRVA(dir->name);
DEBUG_LOG("DLL Name: %s\n", name);
char *dllName = fromRVA(dir->name);
DEBUG_LOG("DLL Name: %s\n", dllName);
uint32_t *lookupTable = fromRVA(dir->importLookupTable);
uint32_t *addressTable = fromRVA(dir->importAddressTable);
@@ -194,12 +194,12 @@ bool wibo::Executable::loadPE(FILE *file) {
// Import by ordinal
uint16_t ordinal = lookup & 0xFFFF;
DEBUG_LOG(" Ordinal: %d\n", ordinal);
*addressTable = (uint32_t) resolveStubByOrdinal(name, ordinal);
*addressTable = (uint32_t) resolveFuncByOrdinal(dllName, ordinal);
} else {
// Import by name
PEHintNameTableEntry *hintName = fromRVA<PEHintNameTableEntry>(lookup);
DEBUG_LOG(" Name: %s\n", hintName->name);
*addressTable = (uint32_t) resolveStubByName(name, hintName->name);
*addressTable = (uint32_t) resolveFuncByName(dllName, hintName->name);
}
++lookupTable;
++addressTable;