I am writing an IDA python plugin to identify the operands that are defined and used by every instruction. For now, I am using the canonical feature for an instruction to identify if an operand to the instruction is being used or defined.
While it works for the most part, I'm not sure how to extract information for the following cases
- Push/Pop/Retn/Call instructions that modify/use
esp
- Compare and branching instructions that modify the
eflags
registers
I could write "if" conditions to handle these cases but I'm wondering if there is a better way to extract information.
Thanks
if
. Personally me have some private IDA plugins for catching execution events (including memory or register modifications),and IDA doesn't have powerful enough command parser for that. IDA has not to have it actually.Capstone
will unlikely help much here.if
is your friend for this very specific tasks (i. e. detection of command that modifies anything as "side effect" not obvious from operands and opcode).