| 676 | } |
| 677 | |
| 678 | void IATReferenceScan::patchDirectImportInDump64( int patchPreFixBytes, int instructionSize, DWORD_PTR patchBytes, BYTE * memory, DWORD memorySize, bool generateReloc, DWORD patchOffset, DWORD sectionRVA ) |
| 679 | { |
| 680 | if (memorySize < (DWORD)(patchOffset + instructionSize)) |
| 681 | { |
| 682 | Scylla::debugLog.log(L"Error - Cannot fix direct import reference RVA: %X", sectionRVA + patchOffset); |
| 683 | } |
| 684 | else |
| 685 | { |
| 686 | memory += patchOffset + patchPreFixBytes; |
| 687 | if (generateReloc) |
| 688 | { |
| 689 | DWORD relocOffset = sectionRVA + patchOffset+ patchPreFixBytes; |
| 690 | directImportLog.log(L"Relocation direct imports fix: Base RVA %08X Type DIR64 Offset %04X RelocTableEntry %04X", relocOffset & 0xFFFFF000, relocOffset & 0x00000FFF, (IMAGE_REL_BASED_DIR64 << 12) + (relocOffset & 0x00000FFF)); |
| 691 | } |
| 692 | |
| 693 | *((DWORD_PTR *)memory) = patchBytes; |
| 694 | } |
| 695 | } |
| 696 | |
| 697 | DWORD IATReferenceScan::addAdditionalApisToList() |
| 698 | { |