Получаю адрес модуля и адрес функции main почему они не соответсвуют AddressOfEntryPoint?
int main() {
HMODULE hModule = GetModuleHandle(NULL);
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)hModule;
PIMAGE_NT_HEADERS pNtHeaders = (PIMAGE_NT_HEADERS)((LPBYTE)hModule + pDosHeader->e_lfanew);
printf("hModule: 0x%llx\n", hModule);
//0x7ff6a9790000
printf("main: 0x%llx\n", main);
//0x7ff6a9792ea0
printf("AddressOfEntryPoint: %lx\n", pNtHeaders->OptionalHeader.AddressOfEntryPoint);
//0x41a8
return 0;
}
адрес hModule равен 0x7ff6a9790000, адрес main равен 0x7ff6a9792ea0
0x7ff6a9792ea0 - 0x7ff6a9790000 = 0x2ea0
а AddressOfEntryPoint равен 0x41a8 почему он не равен 0x2ea0?
Так же если делать по формуле EP(File) = AddressOfEntryPoint – BaseOfCode + .text[PointerToRawData] + FileAlignment
int text = 0;
printf("EP File: %x\n", pNtHeaders->OptionalHeader.AddressOfEntryPoint - (pNtHeaders->OptionalHeader.BaseOfCode + pSectHeader[text].PointerToRawData + pNtHeaders->OptionalHeader.FileAlignment)
//AddressOfEntryPoint:41b8
//BaseOfCode:1000
//PointerToRawData:400
//FileAlignment:200
0x41b8 - (0x1000 + 0x400 + 0x200) = 0x2bb8 что тоже не равно 0x2ea0
В чём ошибка? Как правильно посчитать?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Необходимо найти минимальный и максимальный элемент в списке и обеспечитить вывод элементов списка, которые находятся между максимальным...
Пишу функции ввода/ вывода бинарного дерева различными методами Но после ввода элементов(пока не 0) ничего не происходит, помогите разобраться,...
Когда нажимаю на кнопку несколько раз, выполняет за 1 секунду по несколько разВ чем проблема?