我面临着读/写访问冲突的问题。有人可以帮我吗?我已经阅读了很多论坛以找到解决方案,但没有成功。
这是我的代码中的函数。
void configureLoaderIMP(IMAGE_SECTION_HEADER* loaderSecHeader, BYTE* loaderBaseAddress) {
DWORD offsetIMP = 0;
getLoaderIMP(NULL, &offsetIMP);
DWORD rvaBaseAddress = loaderSecHeader->VirtualAddress + offsetIMP;
IMAGE_IMPORT_DESCRIPTOR* imageImpDescriptor = (IMAGE_IMPORT_DESCRIPTOR*)(loaderBaseAddress + offsetIMP);
while (imageImpDescriptor->Name != 0) {
if (imageImpDescriptor->OriginalFirstThunk != 0) {
imageImpDescriptor->OriginalFirstThunk += rvaBaseAddress;
}
imageImpDescriptor->Name += rvaBaseAddress;
IMAGE_THUNK_DATA* thunkData = (IMAGE_THUNK_DATA*)(loaderBaseAddress + offsetIMP + imageImpDescriptor->FirstThunk);
imageImpDescriptor->FirstThunk += rvaBaseAddress;
while (thunkData->u1.AddressOfData != 0) {
thunkData->u1.AddressOfData += rvaBaseAddress;
++thunkData;
}
++imageImpDescriptor;
}
}
问题出现在“while”块
while (thunkData->u1.AddressOfData != 0)..
我试图使“thunkData”变量成为全局变量,通过 VirtualAlloc 为其分配内存,但没有任何效果。
提前谢谢你。