Anti-dump: fix SizeOfImage() modifying the wrong module and field #183
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.
SizeOfImage()
is supposed to increase the reported size of the EXE in the loader module list. However it was writing the new size value to theDllBase
field instead ofSizeOfImage
.Additionally, the function was using
InMemoryOrderModuleList
to find the EXE, but due to this list being in memory order as the name implies, it usually actually modified the wrong module. I changed this to useInLoadOrderModuleList
instead, in which the EXE is always the first entry.While this code works, it does contain some ugly pointer hackery which is needed because
winternl.h
is woefully inadequate and doesn't define the needed fields. I added comments for clarification of the fields, but if this is not enough I suggest replacingwinternl.h
with a header(s) containing the uncensored types such as the Process Hacker SDK orntdll.h
from ScyllaHide.