Parser pentru fișiere executabile Windows – Portable Executable Files (MZ -PE) [631976]

Parser pentru fișiere executabile Windows – Portable Executable Files (MZ -PE)

Să se scrie un program care să parseze un executabil Windows în format MZ -PE, și să afișeze diverse informații
utile din s tructura și conținutul acestuia.
Aplicația p rimește cel puțin un argument pozițional (obl igatoriu) din linia de comandă, path -ul fișierului MZ -PE
pe care să îl parseze . În plus puteți introduce alte argumente opțional e.
Pentru accesul la conținutul fișierului se vor folosi obiecte de tip File Mapping din Win32 API.
Se va folosi un stil de programare defensiv pentru a mări robustețea aplicației în fața acțiunilor impre dictibile
ale utilizatorilor și a interacțiunii incorecte dintre componentele programului .
Programul trebuie să afi șeze următoarele informații:
1. Informații din header -ele de fișier:
File Header:
 Machine
 NumberOfSections
 Characteristics

Optional Header:
 AddressOfEntryPoint
 ImageBase
 SectionAlignment
 FileAlignment
 Subsystem
 NumberOfRvaAndSizes 2. Informații din header -ele de secțiuni:
 Name
 Address
 Size

3. Lista funcțiilor exportate, dacă există.
 Name
 Ordinal
 Address

4. Lista funcțiilor importate, per modul.
 Name

Reguli generale de afișare a informațiilor:
 Adrese le se afișează în baza 16 – RVA (Relative Virtual Address ) și FA (File Alignment )
 Flag-urile și Enumerări le se afișează în b aza 16 și cu nume textual – pentru cele mai relevante
 Alte valori numberice se afișează în b aza 10.
Structuri folosite:
IMAGE_DOS_HEADER
IMAGE_NT_HEADERS
IMAGE_FILE_HEADER
IMAGE_OPTIONAL_HEADER
IMAGE_SECTION_HEADER
IMAGE_DATA_DIRECTORY
IMAGE_EXPORT_DIRECTORY
IMAGE_IMPORT_DESCRIPTOR etc.

Observații
 NU se vor folosi funcții Win32 API pentru parsarea fișierului , precum ImageNtHeader, ImageRvaToVa,
etc. Funcții echivalente pot fi implementate, dacă este nevoie.
 Pentru verifica rea informațiilor afișate, se pot compara valorile cu cele furnizate de tool-ul gratuit CFF
Explorer (h ttp://www.ntcore.com/exsuite.php).

Similar Posts