Breaking changes:
- Dropped support for Python 2
- Unified malduck interface:
- Dropped `malduck.short` module: all features are exposed directly by `malduck` module
- Unified `crypto` interface - the only allowed variants are listed below:
- `aes.<mode>.encrypt()`, `aes.<mode>.decrypt()`
- `blowfish.ecb.encrypt()`, `blowfish.ecb.decrypt()`
- `des3.cbc.encrypt()`, `des3.cbc.decrypt()`
- `serpent.cbc.encrypt()`, `serpent.cbc.decrypt()`
- `rabbit()`
- `rc4()`
- `xor()`
- Removed `length` argument from `aplib()` (deprecated from 2.x)
- Removed `pe2cuckoo` function (orphaned long time ago)
- `Extractor.handle_yara` is deprecated. If you want to customize ripping process and `Extractor.*` decorators doesn't cover your needs: use `Extractor.handle_match` which is providing extended Yara match information.
- Disassemble methods are returning iterator instead of list (`procmem.disasmv`, `malduck.disasm`)
New features and improvements:
- Added `Extractor.rule` and `Extractor.string` decorators (5 and 6)
- Added opt-in extended Yara match structures:
- optional `extended` argument in `procmem.yarap/yarav` methods and `malduck.yara.Yara.match` method
- in place of `YaraRulesetOffsets` (`YaraMatches` alias) and `YaraRuleOffsets` (former `YaraMatch`), extended match uses more verbose structures: `YaraRulesetMatch`, `YaraRuleMatch` and `YaraStringMatch`. They're provided via new extractor methods: `handle_match`, `rule` and `string` decorated
- everything is opt-in: `handle_yara`, `extractor` and `final` are unaffected, so modules should stay compatible.
- `bigint()` is deprecated in favor of `bigint.pack` and `bigint.unpack` methods. `bigint()` method was switching between string and integer representations which was unintuitive. Added big-endian variants: `bigint.pack_be` and `bigint.unpack_be` (https://github.com/CERT-Polska/malduck/issues/10)
- Disassemble methods (`procmem.disasmv`, `malduck.disasm`) are accepting additional argument: `count` of instructions.
- Added typings
- Various small bugfixes