Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 7th, 2012  |  syntax: None  |  size: 1.78 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <iostream>
  2. #include <string>
  3. #include <windows.h>
  4.  
  5. using namespace std;
  6.  
  7. int main() {
  8.   string eingabe,ausgabe;
  9.   IMAGE_DOS_HEADER dosheader;
  10.   IMAGE_NT_HEADERS peheader;
  11.   IMAGE_SECTION_HEADER *sectionheaders;
  12.  
  13.   cout << "Bitte die zu verschlüsselnde Datei eigeben" << endl;
  14.   cin >> eingabe;
  15.   FILE *eingabedatei = fopen(eingabe.c_str(), "rb");
  16.  
  17.   cout << "Dos Header einlesen" << endl;
  18.   fread(&dosheader, sizeof(IMAGE_DOS_HEADER), 1, eingabedatei);
  19.   cout << "Dos Header eingelesen" << endl;
  20.  
  21.   if(dosheader.e_magic != IMAGE_DOS_SIGNATURE) {
  22.     fclose(eingabedatei);
  23.     cout << "Fehler" << endl;
  24.     return 0;
  25.   }
  26.  
  27.   cout << "PE Header einlesen" << endl;
  28.   fseek(eingabedatei, dosheader.e_lfanew, SEEK_SET);
  29.   fread(&peheader, sizeof(IMAGE_NT_HEADERS), 1, eingabedatei);
  30.   cout << "PE Header eingelesen" << endl;
  31.  
  32.   cout << "Der Entry Point befindet sich bei 0x" << hex << peheader.OptionalHeader.AddressOfEntryPoint<< endl;
  33.  
  34.   cout << "Section Headers einlesen" << endl;
  35.   sectionheaders = new IMAGE_SECTION_HEADER[peheader.FileHeader.NumberOfSections];
  36.   fread(sectionheaders, sizeof(IMAGE_SECTION_HEADER), peheader.FileHeader.NumberOfSections, eingabedatei);
  37.   cout << "Section Headers eingelesen" << endl << endl;
  38.  
  39.   cout << "Sections ausgeben: " << endl << endl;
  40.   for(int i = 0; i < peheader.FileHeader.NumberOfSections; i++){
  41.           cout << "Name der Section: " << sectionheaders[i].Name << endl;
  42.           cout << "RawSize: 0x" << hex << sectionheaders[i].SizeOfRawData << endl;
  43.           cout << "VirtualSize: 0x" << hex << sectionheaders[i].Misc.VirtualSize << endl;
  44.           cout << "Differenz: 0x" << hex << sectionheaders[i].SizeOfRawData - sectionheaders[i].Misc.VirtualSize << endl << endl;
  45.   }
  46.   cout << "Section ausgaben ende" << endl;
  47.  
  48.   cin >> ausgabe;
  49.   return 0;
  50. }