
Untitled
By: a guest on
May 7th, 2012 | syntax:
None | size: 1.78 KB | hits: 11 | expires: Never
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
int main() {
string eingabe,ausgabe;
IMAGE_DOS_HEADER dosheader;
IMAGE_NT_HEADERS peheader;
IMAGE_SECTION_HEADER *sectionheaders;
cout << "Bitte die zu verschlüsselnde Datei eigeben" << endl;
cin >> eingabe;
FILE *eingabedatei = fopen(eingabe.c_str(), "rb");
cout << "Dos Header einlesen" << endl;
fread(&dosheader, sizeof(IMAGE_DOS_HEADER), 1, eingabedatei);
cout << "Dos Header eingelesen" << endl;
if(dosheader.e_magic != IMAGE_DOS_SIGNATURE) {
fclose(eingabedatei);
cout << "Fehler" << endl;
return 0;
}
cout << "PE Header einlesen" << endl;
fseek(eingabedatei, dosheader.e_lfanew, SEEK_SET);
fread(&peheader, sizeof(IMAGE_NT_HEADERS), 1, eingabedatei);
cout << "PE Header eingelesen" << endl;
cout << "Der Entry Point befindet sich bei 0x" << hex << peheader.OptionalHeader.AddressOfEntryPoint<< endl;
cout << "Section Headers einlesen" << endl;
sectionheaders = new IMAGE_SECTION_HEADER[peheader.FileHeader.NumberOfSections];
fread(sectionheaders, sizeof(IMAGE_SECTION_HEADER), peheader.FileHeader.NumberOfSections, eingabedatei);
cout << "Section Headers eingelesen" << endl << endl;
cout << "Sections ausgeben: " << endl << endl;
for(int i = 0; i < peheader.FileHeader.NumberOfSections; i++){
cout << "Name der Section: " << sectionheaders[i].Name << endl;
cout << "RawSize: 0x" << hex << sectionheaders[i].SizeOfRawData << endl;
cout << "VirtualSize: 0x" << hex << sectionheaders[i].Misc.VirtualSize << endl;
cout << "Differenz: 0x" << hex << sectionheaders[i].SizeOfRawData - sectionheaders[i].Misc.VirtualSize << endl << endl;
}
cout << "Section ausgaben ende" << endl;
cin >> ausgabe;
return 0;
}