| 657 | } |
| 658 | |
| 659 | void IATReferenceScan::patchDirectImportInDump32( int patchPreFixBytes, int instructionSize, DWORD patchBytes, BYTE * memory, DWORD memorySize, bool generateReloc, DWORD patchOffset, DWORD sectionRVA ) |
| 660 | { |
| 661 | if (memorySize < (DWORD)(patchOffset + instructionSize)) |
| 662 | { |
| 663 | Scylla::debugLog.log(L"Error - Cannot fix direct import reference RVA: %X", sectionRVA + patchOffset); |
| 664 | } |
| 665 | else |
| 666 | { |
| 667 | memory += patchOffset + patchPreFixBytes; |
| 668 | if (generateReloc) |
| 669 | { |
| 670 | DWORD relocOffset = sectionRVA + patchOffset+ patchPreFixBytes; |
| 671 | directImportLog.log(L"Relocation direct imports fix: Base RVA %08X Type HIGHLOW Offset %04X RelocTableEntry %04X", relocOffset & 0xFFFFF000, relocOffset & 0x00000FFF, (IMAGE_REL_BASED_HIGHLOW << 12) + (relocOffset & 0x00000FFF)); |
| 672 | } |
| 673 | |
| 674 | *((DWORD *)memory) = patchBytes; |
| 675 | } |
| 676 | } |
| 677 | |
| 678 | void IATReferenceScan::patchDirectImportInDump64( int patchPreFixBytes, int instructionSize, DWORD_PTR patchBytes, BYTE * memory, DWORD memorySize, bool generateReloc, DWORD patchOffset, DWORD sectionRVA ) |
| 679 | { |