Fixed PE export table enumeration logic #129
Open
+12
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The code for recovering the PE export entries previously assumed that every function/symbol exported into the PE export table had a given name. However, this is a false assumption, as some functions can be exported just by their ordinal and without a name.
In practice, the previous code was flawed as it might've reported garbage data if the number of named functions and the number of globally exported functions did not match.
This PR fixes this issue by checking the name ordinals array, reading the index
iof the corresponding ordinal and using it to recover the correct index into into the function address array.