KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I would like to implement this in C# I have looked here: http://www.codeproject.com/KB/cpp/PEChecksum.aspx And am aware of the ImageHlp.dll MapFileAndCheckSum function. However, for various reasons, I would like to implement this myself. The best I have found is here: http://forum.sysinternals.com/optional-header-checksum-calculation_topic24214.html But, I don't understand the explanation. Can anyone clarify how the checksum is calculated? Thanks! Update I from the code example, I do not understand what this means, and how to translate it into C# sum -= sum < low 16 bits of CheckSum in file // 16-bit borrow sum -= low 16 bits of CheckSum in file sum -= sum < high 16 bits of CheckSum in file sum -= high 16 bits of CheckSum in file Update #2 Thanks, came across some Python code that does similar too here def generate_checksum(self): # This will make sure that the data representing the PE image # is updated with any changes that might have been made by # assigning values to header fields as those are not automatically # updated upon assignment. # self.__data__ = self.write() # Get the offset to the CheckSum field in the OptionalHeader # checksum_offset = self.OPTIONAL_HEADER.__file_offset__ + 0x40 # 64 checksum = 0 # Verify the data is dword-aligned. Add padding if needed # remainder = len(self.__data__) % 4 data = self.__data__ + ( '\0' * ((4-remainder) * ( remainder != 0 )) ) for i in range( len( data ) / 4 ): # Skip the checksum field # if i == checksum_offset / 4: continue dword = s
Tags (comma-separated)
Save Edits
Cancel