能力值:
( LV2,RANK:10 )
|
-
-
2 楼
抱歉,不想看代码,我可以给你我的代码看下 void MoveRelocationTable(LPVOID pFileBuffer,DWORD FOA)
{
//初始化部分
PIMAGE_DOS_HEADER pDosHeader = NULL;
PIMAGE_NT_HEADERS pNTHeader = NULL;
PIMAGE_FILE_HEADER pPEHeader = NULL;
PIMAGE_OPTIONAL_HEADER32 pOptionHeader = NULL;
PIMAGE_DATA_DIRECTORY pDataDirectory = NULL;
PIMAGE_BASE_RELOCATION pBaseRelocation = NULL;
PIMAGE_BASE_RELOCATION pCopyPlace = NULL;
PIMAGE_BASE_RELOCATION pNewExportDirectory = NULL;
PIMAGE_SECTION_HEADER pSectionHeader = NULL;
//初始化地址指针
pDosHeader = (PIMAGE_DOS_HEADER)pFileBuffer;
pNTHeader = (PIMAGE_NT_HEADERS)((DWORD)pFileBuffer+pDosHeader->e_lfanew);
pPEHeader = (PIMAGE_FILE_HEADER)(((DWORD)pNTHeader) + 4);
pOptionHeader = (PIMAGE_OPTIONAL_HEADER32)((DWORD)pPEHeader + IMAGE_SIZEOF_FILE_HEADER);
//获取节表起始地址
pSectionHeader = (PIMAGE_SECTION_HEADER)((DWORD)pOptionHeader + pPEHeader->SizeOfOptionalHeader);
//获取节表数量
DWORD NumberOfSection = pPEHeader->NumberOfSections;
pSectionHeader = pSectionHeader + (NumberOfSection-1);
DWORD VirtualAddress = pSectionHeader->VirtualAddress;
pDataDirectory = pOptionHeader->DataDirectory;
pDataDirectory += 5;
printf("Relocation_Table: %x %x\n", pDataDirectory->VirtualAddress, pDataDirectory->Size);
pBaseRelocation = (PIMAGE_BASE_RELOCATION)((DWORD)pFileBuffer + getFOA(pDataDirectory->VirtualAddress));
pCopyPlace = (PIMAGE_BASE_RELOCATION)((DWORD)pFileBuffer + FOA);
DWORD i = 0;
DWORD length = 0;//记录长度
do{
DWORD SizeOfBlock = pBaseRelocation->SizeOfBlock;
DWORD realAddr = (DWORD)pFileBuffer + getFOA(pBaseRelocation->VirtualAddress);
memcpy((DWORD)pCopyPlace+length, pBaseRelocation, SizeOfBlock);
pBaseRelocation = (DWORD)pBaseRelocation + SizeOfBlock;
length += SizeOfBlock;
}while(pBaseRelocation->VirtualAddress!=0 && pBaseRelocation->SizeOfBlock!=0);
//增加结束标志
memcpy((DWORD)pCopyPlace+length,pBaseRelocation, sizeof(PIMAGE_BASE_RELOCATION));
//新增节的地址
pDataDirectory->VirtualAddress = VirtualAddress;
printf("%x\n", pDataDirectory->VirtualAddress);
printf("%x\n", getFOA(pDataDirectory->VirtualAddress));
}
|
能力值:
( LV8,RANK:130 )
|
-
-
3 楼
感谢
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
TopGreen
抱歉,不想看代码,我可以给你我的代码看下void MoveRelocationTable(LPVOID pFileBuffer,DWORD FOA ...
谢谢
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
你修复重定位了吗?
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
TopGreen
抱歉,不想看代码,我可以给你我的代码看下void MoveRelocationTable(LPVOID pFileBuffer,DWORD FOA ...
你修复重定位了吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
AMask
你修复重定位了吗?
修复了, 9aeK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6F1L8$3!0F1k6g2)9J5k6r3S2#2j5W2)9J5k6h3N6A6N6r3g2W2i4K6u0W2K9h3!0Q4x3V1k6H3L8%4y4@1M7#2)9J5c8U0k6X3k6o6b7@1y4U0M7I4i4K6u0r3i4K6t1$3L8X3u0K6M7q4)9K6b7W2!0q4y4#2)9&6b7#2)9^5b7W2!0q4y4q4!0n7z5q4)9^5b7W2!0q4y4g2)9^5c8q4)9&6b7g2!0q4y4g2!0m8c8g2!0m8x3W2!0q4y4g2)9&6x3q4!0m8y4#2)9J5b7#2!0q4y4g2!0m8c8W2)9^5y4W2!0q4y4#2!0m8x3q4)9^5x3e0p5J5x3K6b7`.
|
|
|