Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Чтение PE/NE-файлов

43K
03 марта 2010 года
InviZible
4 / / 05.12.2008
Ребят, подскажите, пожалуйста, в универе начался курс "Защита информации", проходим способы заражения вирусами и т.п. Задание по лабораторной - прочитать структуру PE-файлов.
Читаю таким способом мой .exe файл:
Код:
char fileName[100];
strcpy(fileName,argv[1]);
long lSize=0;
unsigned char * buffer;
FILE *pFile;
pFile=fopen(fileName,"r");
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);  // размер файла
rewind (pFile);

buffer = (unsigned char*) malloc (sizeof(unsigned char)*lSize);
fread (buffer,1,lSize,pFile);
fclose(pFile);

Побитовая карта, если можно так выразиться, файла содержится у меня в переменной buffer.
Вот в чем проблема:
Не могу считывать данные из буфера в переменные и структуры... :(
К примеру, если я знаю, что по смещению offset=0 у меня заголовок MZ, а по смещению offset=02h у меня находится число байтов в последней странице, то как присвоить именно переменной unsigned short PartPage то, что находится по offset=02h
Пример:
 
Код:
unsigned short *PagePart;
Size=&(buffer+2);  // error C2102: '&' requires l-value
Size=buffer+2;  // rror C2440: '=' : cannot convert from 'unsigned char ** ' to 'unsigned short *'


Помогите, пожалуйста! Как считывать в переменные? И, если возможно, то в структуры, к примеру в такую:
 
Код:
struct my_pe{
unsigned short signature;
unsigned short PartPage;
unsigned short PageCnt;
.....
}my_pe;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог