Should I be doing something different, looking at OEP/Offset?
I think I am working backwards
Код:
for (int i = 0; i < ntHeaders->FileHeader.NumberOfSections; i++) {
name = (char*)sectionHeaders[i]. Name;
printf("Section %d: %s\n", i + 1, name);
if (strcmp(name, ".text") == 0 || strcmp(name, ".rdata") == 0) {
DWORD sectionOffset = sectionHeaders[i]. PointerToRawData;
DWORD sectionSize = sectionHeaders[i]. SizeOfRawData;
char* sectionData = (char*)((uintptr_t)baseAddress + sectionOffset);
Код:
const char* targetSections[] = { ".text", ".rdata", ".rodata" };
size_t numSections = sizeof(targetSections) / sizeof(targetSections[0]);
for (size_t i = 0; i < numSections; i++) {
PIMAGE_SECTION_HEADER sectionHeader = IMAGE_FIRST_SECTION((PIMAGE_NT_HEADERS)baseAddress) + i;
if (strcmp((const char*)sectionHeader->Name, targetSections[i]) == 0) {
char* sectionData = (char*)baseAddress + sectionHeader->VirtualAddress;
size_t sectionSize = sectionHeader->Misc.VirtualSize;
encryptData(sectionData, sectionSize);
DWORD oldProtect;
VirtualProtect(sectionData, sectionSize, PAGE_EXECUTE_READWRITE, &oldProtect);
decryptData(sectionData, sectionSize);
UnmapViewOfFile(baseAddress);
CloseHandle(hMapping);
CloseHandle(hFile);
printf("Binary file successfully processed.\n");
return 0;
}
}
UnmapViewOfFile(baseAddress);
CloseHandle(hMapping);
CloseHandle(hFile);
I think I am working backwards