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);
Чтение PE/NE-файлов
Читаю таким способом мой .exe файл:
Код:
Побитовая карта, если можно так выразиться, файла содержится у меня в переменной 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 *'
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;
unsigned short signature;
unsigned short PartPage;
unsigned short PageCnt;
.....
}my_pe;