github.com/saferwall/pe@v1.5.2/CHANGELOG.md (about) 1 # Changelog 2 3 All notable changes to this project will be documented in this file. 4 5 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 8 ## [1.4.0] - Unreleased 9 10 ### Added 11 12 - Permit more granular control over which data directories are parsed by [rabbitstack](https://github.com/rabbitstack) [#72](https://github.com/saferwall/pe/pull/72). 13 - Support parsing the different `retpoline` types: Imported Address, Indirect Branch and Switchable retpoline [#70](https://github.com/saferwall/pe/pull/70). 14 - Unit tests for load config directory [#70](https://github.com/saferwall/pe/pull/69). 15 - Unit tests for TLS directory [#69](https://github.com/saferwall/pe/pull/69). 16 - Unit tests for debug directory [#68](https://github.com/saferwall/pe/pull/68). 17 - Unit tests for resource directory and add functions to prettify resource (sub)languages [#66](https://github.com/saferwall/pe/pull/66). 18 - Annotate PE structures with JSON tags during JSON encoding [#64](https://github.com/saferwall/pe/pull/64), [#65](https://github.com/saferwall/pe/pull/65) and [#67](https://github.com/saferwall/pe/pull/67). 19 - Improve PE dumper to print imports and unit test parsing imports data directory[#63](https://github.com/saferwall/pe/pull/63). 20 - Improve PE dumper to print section headers [#62](https://github.com/saferwall/pe/pull/62). 21 - Improve PE dumper to print PE headers [#61](https://github.com/saferwall/pe/pull/61). 22 - Add `SerialNumber`, `SignatureAlgorithm` and `PubKeyAlgorithm` to the `CertInfo` [#60](https://github.com/saferwall/pe/pull/60). 23 - Option to disable certificate validation [#59](https://github.com/saferwall/pe/pull/59). 24 - Improve PE dumper to print exceptions [#57](https://github.com/saferwall/pe/pull/57). 25 - Unit tests for debug directory [#49](https://github.com/saferwall/pe/pull/49). 26 27 ### Fixed 28 29 - Bug while iterating over VolatileInfoRangeTable entries [#70](https://github.com/saferwall/pe/pull/70). 30 - Bug while iterating (additional padding and loop condition) over DVRT relocation block entries [#70](https://github.com/saferwall/pe/pull/70). 31 - Bug while appending (twice) Control Flow Guard IAT entries [#70](https://github.com/saferwall/pe/pull/70). 32 - Bug while parsing `POGO` debug entry types [#68](https://github.com/saferwall/pe/pull/68). 33 - `Authentihash()` for instances w/o fd thanks to [flanfly](https://github.com/flanfly) [#47](https://github.com/saferwall/pe/pull/47). 34 35 ### Changed 36 37 - Some fields has been renamed for consistency: 38 - `RichHeader.XorKey` -> `RichHeader.XORKey`. 39 - Any `Rva` substring -> `RVA` and any `Iat` substring -> `IAT`. 40 - And many more. 41 - Some fields used internally in imports parsing were changed from a slice of pointers to a simple slice. 42 - Certificate.Content changed from `*pkcs7.PKCS7` to `pkcs7.PKCS7`. 43 - `Section.Entropy` changed from `float64` to `float64*` to distinguish between the case when the section entropy is equal to zero and the case when the entropy is equal to nil - meaning that it was never calculated. 44 - Remove `cobra` dependency from `cmd/pedumper` [#56](https://github.com/saferwall/pe/pull/56). 45 46 ## [1.3.0] - 2022-08-04 47 48 ## Added 49 50 - Authenticode signature validation in Windows [#43](https://github.com/saferwall/pe/pull/43). 51 - File information structure that helps to identify what parts of the PE file we have, such as `HasImports()` [#42](https://github.com/saferwall/pe/pull/42).. 52 - Calculate Rich header hash thanks to [wanglei-coder](https://github.com/wanglei-coder) [#38](https://github.com/saferwall/pe/pull/38). 53 - PE Overlay thanks to [wanglei-coder](https://github.com/wanglei-coder) [#37](https://github.com/saferwall/pe/pull/37). 54 - Unit tests for DOS header parsing. 55 - Unit tests for CLR directory [#34](https://github.com/saferwall/pe/pull/28). 56 - Unit tests for Rich header [#33](https://github.com/saferwall/pe/pull/33). 57 58 ## Changed 59 60 - Do not return an error when parsing a data directory fails [#45](https://github.com/saferwall/pe/pull/45). 61 - Remove pointers from fields in the main `File` structure [#44](https://github.com/saferwall/pe/pull/44). 62 63 ### Fixed 64 65 - Fix getting section data repeatedly thanks to [wanglei-coder](https://github.com/wanglei-coder) [#41](https://github.com/saferwall/pe/pull/41). 66 - Fix `adjustSectionAlignment()` thanks to [wanglei-coder](https://github.com/wanglei-coder) [#40](https://github.com/saferwall/pe/pull/40). 67 - Fix authentihash calculation thanks to [wanglei-coder](https://github.com/wanglei-coder) [#38](https://github.com/saferwall/pe/pull/38). 68 - Memory leak in `Close()` function that missed a call to `unmap()` thanks to [Mamba24L8](https://github.com/Mamba24L8). 69 70 ## [1.2.0] - 2022-06-12 71 72 ## Added 73 74 - Unit tests for export directory [#28](https://github.com/saferwall/pe/pull/28). 75 - Add a new option to allow usage of a custom logger [#24](https://github.com/saferwall/pe/pull/24). 76 - Unit tests for delay imports directory [#23](https://github.com/saferwall/pe/pull/23). 77 - Allow access to the raw certificates content [#22](https://github.com/saferwall/pe/pull/22). 78 - Unit tests for security directory [#19](https://github.com/saferwall/pe/pull/19). 79 - Unit tests for bound imports directory [#18](https://github.com/saferwall/pe/pull/18). 80 81 ## Changed 82 83 - Make `GetData()` and `GetRVAFromOffset()` and `GetOffsetFromRva()` helper routines public. 84 - Keep parsing in exports directories even when anomalies are found [#26](https://github.com/saferwall/pe/pull/26). 85 86 ## Fixed 87 88 - Incorrect check for `skipCertVerification` in security directory. 89 - Null pointer dereference in `GetExportFunctionByRVA()` and out of bounds when calculating `symbolAddress` in export directory [#28](https://github.com/saferwall/pe/pull/28). 90 - Reading unicode string from resource directory `readUnicodeStringAtRVA()` [#26](https://github.com/saferwall/pe/pull/26). 91 - Null pointer dereference in resource directory parsing [#25](https://github.com/saferwall/pe/pull/25). 92 - Imphash calculation [#17](https://github.com/saferwall/pe/pull/17) thanks to [@secDre4mer](https://github.com/secDre4mer). 93 - Null certificate header in security directory [#19](https://github.com/saferwall/pe/pull/19) 94 95 ## [1.1.0] - 2021-12-20 96 97 ### Added 98 99 - Add .editorconfig and .vscode config. 100 - Add github action CI workflow to test the package. 101 - Add few badges for the README.md to track build status, coverage and code quality. 102 - Introduce a new API to parse a file from a byte array. 103 - Parse .net metadata Module table. 104 - Parse .net metadata stream headers and metadata tables stream header. 105 - Add cmd/pedumper to illustrate how to use the library. 106 - Add unit test for relocation, exception, security, symbol, file, nt header, section and helper files. 107 - Add an option `New()` to customize max of relocations entries and COFF symbols to parse. 108 109 ### Changed 110 111 - Remove uneeded break statements & lowercase error messages and anomalies. 112 - Make COFF entry in File struct a pointer. 113 - Remove unsafe pointer usage from resource directory. 114 - Do not return an error when COFF symbol table is not found. 115 - License from Apache 2 to MIT. 116 117 ### Fixed 118 119 - Probe for invalid Nt Header offset. 120 - Fix authenticode hash calculation. 121 - Compile correctly on 32 bit thnkas to @Max Altgelt. 122 - COFF symbol table `readASCIIStringAtOffset()` out of bounds exception. 123 - Probe for optional header section alignment != 0. 124 - Fix infinite loop in exception unwind code parsing. 125 - Fix last data directory entry is reserved and must be zero. 126 - Safe ready of global pointer register 127 128 ## [1.0.0] - 2021-03-04 (Initial Release) 129 130 - Works with PE32/PE32+ file fomat. 131 - Supports Intel x86/AMD64/ARM7ARM7 Thumb/ARM8-64/IA64/CHPE architectures. 132 - MS DOS header. 133 - Rich Header (calculate checksum). 134 - NT Header (file header + optional header). 135 - COFF symbol table and string table. 136 - Sections headers + entropy calculation. 137 - Data directories: 138 - Import Table + ImpHash calculation. 139 - Export Table. 140 - Resource Table. 141 - Exceptions Table. 142 - Security Table + Authentihash calculation. 143 - Relocations Table. 144 - Debug Table (CODEVIEW, POGO, VC FEATURE, REPRO, FPO, EXDLL CHARACTERISTICS debug types). 145 - TLS Table. 146 - Load Config Directory (SEH, GFID, GIAT, Guard LongJumps, CHPE, Dynamic Value Reloc Table, Enclave Configuration, Volatile Metadata tables). 147 - Bound Import Table. 148 - Delay Import Table. 149 - COM Table (CLR Metadata Header, Metadata Table Streams). 150 - Report several anomalies.