Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Приведенный ниже демонстрационный пример сканирует всю таблицу экспорта, отображая ее на экране в удобно читаемом виде. Обратите внимание, что обработка ordinal BASE несколько изменена на идеологически более правильную:
Листинг 9. Простейший разбор таблицы экспорта
// получаем указатель на PE
p = *(DWORD*)(pBaseAddress + 0x3C /*e_lfanew */) + pBaseAddress;
// получаем указатель на DATA_DIRECTORY
pDATA_DIRECTORY = (DWORD*)(p + 0x78);
// получаем указатель на экспорт
pExport = pDATA_DIRECTORY[0] + pBaseAddress;
// берем размер, но не проверяем
xExport = pDATA_DIRECTORY[1];
// извлекаем сведения об основных структурах
nameRVA = *(DWORD*) (pExport + 0xC) + pBaseAddress;
ordinalBASE = *(DWORD*) (pExport + 0x10);
addressTableEntries = *(DWORD*) (pExport + 0x14);
numberOfNamePointers = *(DWORD*) (pExport + 0x18);
exportAddressTableRVA = (DWORD*) (*(DWORD*) (pExport + 0x1C) + pBaseAddress);
namePointerRVA = (DWORD*) (*(DWORD*) (pExport + 0x20) + pBaseAddress);