Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2010, 17:00   #1
wmzvov
Пользователь
 
Аватар для wmzvov
 
Регистрация: 16.03.2010
Сообщений: 12
По умолчанию Ошибка при экспортировании функции из dll

Пытаюсь получить таблицу экспорта kernel32.dll, при попытке вылитает, получилось только секции.
Не знаю правильно ли я спроецировал файл в память.
Вот код:

Цитата:

#include "stdafx.h"
#include <windows.h>
#include <winnt.h>

#define ALIGN_DOWN(x, align) (x & ~(align-1)) // выравнивание вниз
#define ALIGN_UP(x, align) ((x & (align-1))?ALIGN_DOWN(x,align)+align:x) // вверх
#define NTSIGNATURE(a) ((LPVOID)((BYTE *)a + ((PIMAGE_DOS_HEADER)a)->e_lfanew))
#define xNumOfSec(p) (*((WORD*) (p + 0x6))) // p - указатель на PE-заголовок
#define xopt_sz(p) (*((WORD*)(p + 0x14 )))
#define pSectionTable(p) ((BYTE*) (xopt_sz(p) + 0x18 + p))
#define pFirstSection(p) (pSectionTable(p))
#define pLastSection(p) (pSectionTable(p) + (xNumOfSec(p) - 1) * 40)

DWORD RVAtoOffset(DWORD Base,DWORD RVA) {...}
void printSectionsHeader1(char* p){...}
void printSectionsHeader2(char* hMap){...}
void PrintExportTable(char* hMap){...}

int _tmain(int argc, _TCHAR* argv[])
{
char* fname = "C:\\kernel32.dll";
BYTE pb[10];
DWORD dwNumBytes;
HANDLE hFile = CreateFile(
fname,
GENERIC_READ,
FILE_SHARE_READ, // для совместного чтения
NULL, // защита по умолчанию
OPEN_EXISTING, // только существующий файл
FILE_ATTRIBUTE_NORMAL, // обычный файл
NULL);
if (hFile != NULL)
{
printf("CreateFile OK \n");
}
//-------------------------------------------------------------------------------
HANDLE htilemap;
htilemap = CreateFileMapping(
hFile,
NULL, //дескриптор не может быть унаследован
PAGE_READONLY,0,0,NULL);
if (htilemap != NULL)
{
printf("CreateFileMapping OK \n");
} else printf("CreateFileMapping ERROR \n");
//------------------------------------------------------------------------------
char* hMap;
hMap = (char*)MapViewOfFile(htilemap,FILE_ MAP_READ,0,0,0);
if (hMap!=NULL) printf("MapViewOfFile OK \n");
else printf("MapViewOfFile ERROR \n");
printSectionsHeader1(hMap);
printSectionsHeader2(hMap);
PrintExportTable(hMap);
getchar();
}

wmzvov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при работе с DLL _-Re@l-_ Общие вопросы Delphi 1 28.08.2010 20:55
Ошибка при создании DLL drknn Общие вопросы Delphi 5 30.04.2010 11:02
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
Ошибка при загрузке dll nikmay Общие вопросы Delphi 10 25.06.2009 15:42
Ошибка при загрузке DLL dani92 Общие вопросы Delphi 12 24.04.2009 14:54