v4.0.0
- Added encoding functionality, allowing users to use Zydis for code generation and rewriting
- A huge thanks goes to @mappzor, who contributed pretty much the entire implementation by himself
- Split instruction and operand decoding, allowing users to decode only the data they actually need
- Added support for creating amalgamized builds, essentially combining all of Zydis and the required Zycore source code files and headers into a single header and source file, greatly simplifying linking against Zydis on the quick
- Improved and automatically built documentation for all recent versions of Zydis
- Added maximally simplified all-in-one disassembler function (see #379 for details)
Check out our corresponding blog article for details and examples!
Porting Guide
We offer a porting guide for the breaking changes from v3
to v4
.
Important Changes
Decoder
- Fix general address-width handling by @flobernd in #238
- Fix register constraints of certain
AMX
instructions by @flobernd in #271 - Fixed constraint enforcement for AMX instructions by @mappzor in #276
- Decouple operand decoding by @flobernd in #278
- Remove deprecated
accessed_flags
flags field fromZydisDecodedInstruction
by @flobernd in #262 - Add unions in decoded instruction and operands by @athre0z in #326
- Declare structs as anonymous within anonymous unions by @ZehMatt in #329
- Change
st0
operand visibility as specified by SDM by @athre0z in #331 - Improved signedness data accuracy and consistency (Fixes #327) by @mappzor in #336
Encoder
- Implemented instruction encoder by @mappzor in #254
- Added
ZydisEncoderNopFill
by @mappzor in #376 - Added function to calculate and encode relative operands by @mappzor in #368
Build
- Add option to use system installed Zycore by @Tachi107 in #250
- Fix build on macOS 12 by @athre0z in #259
- Get rid of ZydisExportConfig.h by @athre0z in #301
- Add script for generating an amalgamated distribution by @athre0z in #302
- Add WebAssembly support by @williballenthin in #277
- Improve LTO support by @athre0z in #333
- Add Makefile for quick access to various operations by @athre0z in #346
Misc
- Zycore: updated to v1.4.1
- Utils: remove ZydisPE by @athre0z in #257
- Docs: add man pages by @Tachi107 in #267
- Registers: add lookup tables for
ZydisRegister
andZydisRegisterClass
by @flobernd in #283 - Tools: improve
ZydisInfo
by @flobernd in #285 - Formatter: fix
MASM
style disassembly by @flobernd in #298 - Segments: move segment functions into a separate, optional header by @athre0z in #348
- Formatter: simplify formatter interface by @athre0z in #361
- Doc: switch Doxygen theme by @athre0z in #373
- CI: add automated documentation builds by @athre0z in #374
Full Changelog: v3.2.1...v4.0.0