mirror of
https://github.com/0xMohammedHassan/morphkatz
synced 2026-06-21 13:40:56 +00:00
The original schema doc drifted from the implementation. It used
key names the loader has never accepted (`op_index`, `reg_class`,
`imm_equals`) and omitted constraints rule authors actually need
(`flags_value_differs_in`, the raw-pair `from`/`to` form, weight,
size_delta).
This rewrite:
* Aligns every example with the real keys the loader parses:
`op`, `class`, `imm`, `register_blacklist`, `same_register`.
* Documents flag handling end-to-end: how `flags_effect` interacts
with the EFLAGS liveness pass, when to use
`equivalent_if_dead`, and the exact bit names accepted by
`flags_value_differs_in`.
* Documents the targeted raw-byte pack form (`raw: { from, to }`)
used by Sliver / Havoc / Meterpreter / UPX style packs.
* Adds a "Not yet supported" subsection enumerating grammar
extensions the loader does not yet implement (per-operand
imm_min/imm_max, size_bits override on copy_from) so authors
don't try them and silently get a no-op rule.
No code change.