5.3.0
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 justDiagnosticBag
s inManagedPEImageBuilder
(#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
andPlatform::PointerSize
(#430) - Add
ZeroesSegment
andZeroesDataSource
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
andUIntPtr
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 byPEImageBuildContext::IErrorListener
.- The constructor
PEImageBuildResult
taking aDiagnosticBag
is superseded by the one taking anIErrorListener
.
Minor Breaking Changes
- The signature for
IFieldRvaDataReader::ResolveFieldData
has changed slightly. See the documentation for how to use the new interface (#430).