Releases: CERT-Polska/malduck
Releases · CERT-Polska/malduck
v4.0.0
Breaking changes:
- Dropped support for Python 2
- Unified malduck interface:
- Dropped
malduck.short
module: all features are exposed directly bymalduck
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()
- Dropped
- Removed
length
argument fromaplib()
(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: useExtractor.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 inprocmem.yarap/yarav
methods andmalduck.yara.Yara.match
method - in place of
YaraRulesetOffsets
(YaraMatches
alias) andYaraRuleOffsets
(formerYaraMatch
), extended match uses more verbose structures:YaraRulesetMatch
,YaraRuleMatch
andYaraStringMatch
. 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.
- optional
bigint()
is deprecated in favor ofbigint.pack
andbigint.unpack
methods.bigint()
method was switching between string and integer representations which was unintuitive. Added big-endian variants:bigint.pack_be
andbigint.unpack_be
(#10)- Disassemble methods (
procmem.disasmv
,malduck.disasm
) are accepting additional argument:count
of instructions. - Added typings
- Various small bugfixes
v3.2.0
v3.2.x is planned to be the last minor release that supports Python 2
New features and improvements:
- Added
--version
switch to malduck CLI - Added
.encrypt()
methods to all supported ciphers incrypto
module malduck.short
module is deprecated, all components should be imported directly frommalduck
module. Elements that are not part of interface can be imported directly from subpackages.- Unified
crypto
module interface and deprecated shortcut variants due to inconsistency between various algorithms and modes. Changes can be found in documentation or #8 - cryptography is no longer used in malduck (in favor of PyCryptodome)
Bugfixes:
- Fixed extractor module loader in
extractor
module: some modules were not properly loaded fromsys.modules
cache so they were executed after each creation ofmalduck.extractor.ExtractorModules
object. - Tuples can be included in config - fixed
encode_for_json
- Fixed issues in documentation
v3.1.2
v3.1.1
v3.1.0
Small improvements related with Py3 support:
- Encoding text-typed (
str
) query argument viaensure_bytes
was counterintuitive forProcessMemory.regexp
andProcessMemory.regexv
. Ifquery
argument is not binary-typed, TypeError exception is raised. - Fixed issues related with
malduck.main
and configuration extraction engine
v3.0.2
v3.0.0
Breaking changes:
- Refactored
ProcessMemory
regions - part of internally used interface changed a bit.iter_regions
,readv_regions
have slightly different argument names and behavior. Lots of corner-cases related with cross-region access have been fixed. - Static configuration extraction engine has different strategy for processing binaries. Firstly it tries to find as many PE/ELF binaries as possible and extracts configuration using both memory- and file-alignment. Then the best config is chosen based on number of successfully ripped config keys.
- Improved logging (
malduck -v extract
) and exception handling (especially for PE/ELF parse errors)
New features:
- [beta] ProcessMemory interface for IDAPython (
IDAProcessMemory
oridamem
, tested in IDA Pro >7.0) - Added
malduck.crypto.aes.AES.encrypt
(but hey, we still need to refactor all thesecrypto
things later...)
Bugfixes:
malduck.crc32
is guaranteed to return unsigned value both in Py2/Py3