-------------------------------------------------------------------- pefile - Portable Executable reader module -------------------------------------------------------------------- INTRODUCTION pefile will allow to access from any Python script all (or most) of the contents of a given PE file. The structures defined in the Windows header files will be accessible as the PE instance attributes and will have the same names as defined there. (The main structures will have the standard capitalized names and will be attributes of the PE instance. Their members will be attributes.) Other attributes and data, which require further processing but are very useful will be available as lowercase attributes. Some of those are, the imported and exported symbols and the sections, with direct access to their data (if any) and convenient methods to retrieve data based on the address as if the file were loaded, instead of needing to dig the offsets into the file. WRITTING SUPPORT Starting from pefile 1.2 it's possible to write back any changes done to the PE file. One has to be careful with this functionality as it will not be very intelligent reconstructing the PE file. That is, it will not handle displacing structures if that would be needed because a new section has been added. The rule of thumb is, if there's room for an additional header/structure to fit then there'll be no problem and pefile will write it. All other modifications, i.e. changing individual values in header/structure members should work well. One possible useful application of this could be to correct malformed headers used by some malware in order to cause certain analysis tools to malfunction. AVAILABILITY Last versions are available at: http://dkbza.org/pefile.html INSTALLATION/USAGE Just importing it should suffice. The module should be endianness independent and it's known to work on OS X, Windows, and Linux. TODO There might be some obscure info which is not readily accessible, this may be due to my ignorance or laziness. Patches or suggestions are, as usual, welcomed. Thinks known to be missing so far: -Reading and processing the exceptions directory entry. (Architecture dependent info) BUGS Given the amount of information embedded in the PE file format it is difficult to test all the data retrieved thoroughly. I did my best trying and verifying the accuracy of all the parsing. Most of the basic data has been tested by using this module, so no outrageously obvious problems should exist. Any feedback on inconsistent or faulty behavior will be welcome. ------------------------------------------------------------------------- Copyright (c) 2005-2013 Ero Carrera <ero@dkbza.org>. All rights reserved. -------------------------------------------------------------------------