You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The inquiry stems from an observation that, with single-step enabled (where one TB represents a single guest instruction), conditional branch TBs (jb, ja, je, jne, etc.) were never marked as tainted.
Here's a concrete example of what I mean:
cmpedx,ebx ; Marked as tainted.jae0xdeadbeef ; Not marked as tainted.
As the jae uses flags based on the tainted cmp, logically jae should be tainted as well.
In root causing, the situation seems related to the fact that the various virtual CPU registers responsible for tracking flag status (e.g., CPUX86State::cc_src) are blacklisted, or removed from the taint equation.
Hi @likebreath ,
I'm curious what is the purpose of the
Analyzer::guest_vcpu_regs_black_list_
? Defined here https://github.com/SVL-PSU/crete-dev/blob/master/front-end/qemu-2.3/runtime-dump/tci_analyzer.cpp#L854The inquiry stems from an observation that, with single-step enabled (where one TB represents a single guest instruction), conditional branch TBs (jb, ja, je, jne, etc.) were never marked as tainted.
Here's a concrete example of what I mean:
As the
jae
uses flags based on the taintedcmp
, logicallyjae
should be tainted as well.In root causing, the situation seems related to the fact that the various virtual CPU registers responsible for tracking flag status (e.g., CPUX86State::cc_src) are blacklisted, or removed from the taint equation.
PS.
Unsurprisingly, disabling the blacklist lead to an assertion: https://github.com/SVL-PSU/crete-dev/blob/master/front-end/qemu-2.3/runtime-dump/runtime-dump.cpp#L118
Thanks,
The text was updated successfully, but these errors were encountered: