tree 4ffb25d7e115a895007f3575533bc4fffb520657
parent c5f52b55175174ee63a3971e4df15526bc9938c4
author ero.carrera@gmail.com <ero.carrera@gmail.com@8842bc4e-7134-0410-8230-5dc5194fb5c1> 1222731344 +0000
committer ero.carrera@gmail.com <ero.carrera@gmail.com@8842bc4e-7134-0410-8230-5dc5194fb5c1> 1222731344 +0000

-Whitespace clean-up
-Version number set to 1.2.9.2
-get_memory_mapped_image() can now properly return rebased images. The rebased image data is temporary and will be discarded (won't be saved in the instance). To achieve this one should call relocate_image() which will make the changes permanent
-Improved parsing of import table for PEI-format DLLs (http://www.google.com/codesearch?q=show:Wtes7TbvpLo:co7CX9I5Z0E:YjjyzLSVues)
-Added methods to handle the updating of the section's data upon modification of values in the image's data. (Section's and image's data are kept separately)
-generate_checksum() now makes sure it processes the image with all modifications made to it
-The write() method now only returns the file data if no filename is provided, which is a more intuitive behavior
-'parse_data_directories()' now supports an optional argument to specify with directories to parse. For instance:

# 'fast_load' makes pefile to not load any directory
#
pe = pefile.PE(filepath, fast_load=True)

# the following line will tell pefile to only process the
# resource directory, where the version information is located
#
pe.parse_data_directories( directories=[ DIRECTORY_ENTRY['IMAGE_DIRECTORY_ENTRY_RESOURCE'] ] )


git-svn-id: http://pefile.googlecode.com/svn/trunk@50 8842bc4e-7134-0410-8230-5dc5194fb5c1
