Skip to content

5.3.0

Compare
Choose a tag to compare
@Washi1337 Washi1337 released this 13 May 16:39
· 242 commits to master since this release
9d0fe83

This version is mostly a maintenance version with performance improvements and bug fixes. Developers of .NET obfsucators and deobfuscators will also be happy to know that ManagedPEImageBuilder now accepts any IErrorListener. This should make it easier to ignore any invalid metadata that is introduced to the assembly model (e.g., by passing in an EmptyErrorListener). Finally, a migration from readthedocs to DocFX was made, giving a new home and look to the documentation. Let us know what you think of it!

New Features

  • Add support for arbitrary IErrorListener objects as opposed to just DiagnosticBags in ManagedPEImageBuilder (#367, thanks @ds5678 for the help!).
  • Add LazyVariable<TOwner, TValue>, reducing the number of allocations made by AsmResolver's internals significantly for larger binaries (#428)
  • Add Platform::Is32Bit, Platform::Is64Bit and Platform::PointerSize (#430)
  • Add ZeroesSegment and ZeroesDataSource for creating, reading and writing memory-efficient segments containing only zero bytes (#430).
  • Migrate documentation to DocFX with full API reference (2545e1a).

Bug Fixes

  • Fixed an issue where SignatureComparer::GetHashCode for assembly descriptors did not respect the configuration flags passed into the constructor (#427, #429).
  • Field RVA reader now correctly supports reading the data for IntPtr and UIntPtr typed fields (#430).
  • Fixed an issue where reading from a section that is empty on the disk would throw even if the section has a non-zero virtual size (#430).
  • Fixed an issue where entries in an import descriptor were not read correctly if OriginalFirstThunk = 0. This is the case for many packed executables such as UPX packed binaries (#431, #432)

Deprecations

  • PEImageBuildContext::DiagnosticBag is superseded by PEImageBuildContext::IErrorListener.
  • The constructor PEImageBuildResult taking a DiagnosticBag is superseded by the one taking an IErrorListener.

Minor Breaking Changes

  • The signature for IFieldRvaDataReader::ResolveFieldData has changed slightly. See the documentation for how to use the new interface (#430).