IDAPython 9.0
|
Proxy of C++ Hexrays_Hooks class.
Public Member Functions | |
__init__ (self, "uint32" _flags=0, "uint32" _hkcb_flags=0x0001) | |
init(self, _flags=0, _hkcb_flags=0x0001) -> Hexrays_Hooks | |
"bool" | hook (self) |
hook(self) -> bool | |
"bool" | unhook (self) |
unhook(self) -> bool | |
"int" | flowchart (self, "qflow_chart_t" fc, "mba_t" mba) |
flowchart(self, fc, mba) -> int Flowchart has been generated. | |
"int" | stkpnts (self, "mba_t" mba, "stkpnts_t *" _sps) |
stkpnts(self, mba, _sps) -> int SP change points have been calculated. | |
"int" | prolog (self, "mba_t" mba, "qflow_chart_t" fc, "bitset_t" reachable_blocks, "int" decomp_flags) |
prolog(self, mba, fc, reachable_blocks, decomp_flags) -> int Prolog analysis has been finished. | |
"int" | microcode (self, "mba_t" mba) |
microcode(self, mba) -> int Microcode has been generated. | |
"int" | preoptimized (self, "mba_t" mba) |
preoptimized(self, mba) -> int Microcode has been preoptimized. | |
"int" | locopt (self, "mba_t" mba) |
locopt(self, mba) -> int Basic block level optimization has been finished. | |
"int" | prealloc (self, "mba_t" mba) |
prealloc(self, mba) -> int Local variables: preallocation step begins. | |
"int" | glbopt (self, "mba_t" mba) |
glbopt(self, mba) -> int Global optimization has been finished. | |
"int" | pre_structural (self, "control_graph_t *" ct, "cfunc_t" cfunc, "simple_graph_t" g) |
pre_structural(self, ct, cfunc, g) -> int Structure analysis is starting. | |
"int" | structural (self, "control_graph_t *" ct) |
structural(self, ct) -> int Structural analysis has been finished. | |
"int" | maturity (self, "cfunc_t" cfunc, "ctree_maturity_t" new_maturity) |
maturity(self, cfunc, new_maturity) -> int Ctree maturity level is being changed. | |
"int" | interr (self, "int" errcode) |
interr(self, errcode) -> int Internal error has occurred. | |
"int" | combine (self, "mblock_t" blk, "minsn_t" insn) |
combine(self, blk, insn) -> int Trying to combine instructions of basic block. | |
"int" | print_func (self, "cfunc_t" cfunc, "vc_printer_t" vp) |
print_func(self, cfunc, vp) -> int Printing ctree and generating text. | |
"int" | func_printed (self, "cfunc_t" cfunc) |
func_printed(self, cfunc) -> int Function text has been generated. | |
"int" | resolve_stkaddrs (self, "mba_t" mba) |
resolve_stkaddrs(self, mba) -> int The optimizer is about to resolve stack addresses. | |
"PyObject *" | build_callinfo (self, "mblock_t" blk, "tinfo_t" type) |
build_callinfo(self, blk, type) -> PyObject * Analyzing a call instruction. | |
"int" | callinfo_built (self, "mblock_t" blk) |
callinfo_built(self, blk) -> int A call instruction has been anallyzed. | |
"int" | calls_done (self, "mba_t" mba) |
calls_done(self, mba) -> int All calls have been analyzed. | |
"int" | begin_inlining (self, "codegen_t" cdg, "int" decomp_flags) |
begin_inlining(self, cdg, decomp_flags) -> int Starting to inline outlined functions. | |
"int" | inlining_func (self, "codegen_t" cdg, "int" blk, "mba_ranges_t" mbr) |
inlining_func(self, cdg, blk, mbr) -> int A set of ranges is going to be inlined. | |
"int" | inlined_func (self, "codegen_t" cdg, "int" blk, "mba_ranges_t" mbr, "int" i1, "int" i2) |
inlined_func(self, cdg, blk, mbr, i1, i2) -> int A set of ranges got inlined. | |
"int" | collect_warnings (self, "cfunc_t" cfunc) |
collect_warnings(self, cfunc) -> int Collect warning messages from plugins. | |
"int" | open_pseudocode (self, "vdui_t" vu) |
open_pseudocode(self, vu) -> int New pseudocode view has been opened. | |
"int" | switch_pseudocode (self, "vdui_t" vu) |
switch_pseudocode(self, vu) -> int Existing pseudocode view has been reloaded with a new function. | |
"int" | refresh_pseudocode (self, "vdui_t" vu) |
refresh_pseudocode(self, vu) -> int Existing pseudocode text has been refreshed. | |
"int" | close_pseudocode (self, "vdui_t" vu) |
close_pseudocode(self, vu) -> int Pseudocode view is being closed. | |
"int" | keyboard (self, "vdui_t" vu, "int" key_code, "int" shift_state) |
keyboard(self, vu, key_code, shift_state) -> int Keyboard has been hit. | |
"int" | right_click (self, "vdui_t" vu) |
right_click(self, vu) -> int Mouse right click. | |
"int" | double_click (self, "vdui_t" vu, "int" shift_state) |
double_click(self, vu, shift_state) -> int Mouse double click. | |
"int" | curpos (self, "vdui_t" vu) |
curpos(self, vu) -> int Current cursor position has been changed. | |
"PyObject *" | create_hint (self, "vdui_t" vu) |
create_hint(self, vu) -> PyObject * Create a hint for the current item. | |
"int" | text_ready (self, "vdui_t" vu) |
text_ready(self, vu) -> int Decompiled text is ready. | |
"int" | populating_popup (self, "TWidget *" widget, "TPopupMenu *" popup_handle, "vdui_t" vu) |
populating_popup(self, widget, popup_handle, vu) -> int Populating popup menu. | |
"int" | lvar_name_changed (self, "vdui_t" vu, "lvar_t" v, "char const *" name, "bool" is_user_name) |
lvar_name_changed(self, vu, v, name, is_user_name) -> int Local variable got renamed. | |
"int" | lvar_type_changed (self, "vdui_t" vu, "lvar_t" v, "tinfo_t" tinfo) |
lvar_type_changed(self, vu, v, tinfo) -> int Local variable type got changed. | |
"int" | lvar_cmt_changed (self, "vdui_t" vu, "lvar_t" v, "char const *" cmt) |
lvar_cmt_changed(self, vu, v, cmt) -> int Local variable comment got changed. | |
"int" | lvar_mapping_changed (self, "vdui_t" vu, "lvar_t" frm, "lvar_t" to) |
lvar_mapping_changed(self, vu, frm, to) -> int Local variable mapping got changed. | |
"int" | cmt_changed (self, "cfunc_t" cfunc, "treeloc_t" loc, "char const *" cmt) |
cmt_changed(self, cfunc, loc, cmt) -> int Comment got changed. | |
__disown__ (self) | |
Properties | |
thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") | |
__init__ | ( | self, | |
"uint32" | _flags = 0, | ||
"uint32" | _hkcb_flags = 0x0001 ) |
_flags | uint32 |
_hkcb_flags | uint32 |
__disown__ | ( | self | ) |
"int" begin_inlining | ( | self, | |
"codegen_t" | cdg, | ||
"int" | decomp_flags ) |
cdg | (codegen_t *) |
decomp_flags | (int) |
"PyObject *" build_callinfo | ( | self, | |
"mblock_t" | blk, | ||
"tinfo_t" | type ) |
blk | (mblock_t *) blk->tail is the call. |
type | (tinfo_t *) buffer for the output type. |
"int" callinfo_built | ( | self, | |
"mblock_t" | blk ) |
blk | (mblock_t *) blk->tail is the call. |
"int" calls_done | ( | self, | |
"mba_t" | mba ) |
mba | (mba_t *) This event is generated immediately after analyzing all calls, before any optimizitions, call unmerging and block merging. |
"int" close_pseudocode | ( | self, | |
"vdui_t" | vu ) |
vu | (vdui_t *) |
"int" cmt_changed | ( | self, | |
"cfunc_t" | cfunc, | ||
"treeloc_t" | loc, | ||
"char const *" | cmt ) |
"int" collect_warnings | ( | self, | |
"cfunc_t" | cfunc ) |
These warnings will be displayed at the function header, after the user-defined comments.
cfunc | (cfunc_t *) |
"int" combine | ( | self, | |
"mblock_t" | blk, | ||
"minsn_t" | insn ) |
"PyObject *" create_hint | ( | self, | |
"vdui_t" | vu ) |
vu | (vdui_t *) |
0 | continue collecting hints with other subscribers |
1 | stop collecting hints |
"int" curpos | ( | self, | |
"vdui_t" | vu ) |
(for example, by left-clicking or using keyboard)
vu | (vdui_t *) |
"int" double_click | ( | self, | |
"vdui_t" | vu, | ||
"int" | shift_state ) |
vu | (vdui_t *) |
shift_state | (int) Should return: 1 if the event has been handled |
"int" flowchart | ( | self, | |
"qflow_chart_t" | fc, | ||
"mba_t" | mba ) |
fc | (qflow_chart_t *) |
mba | (mba_t *) |
"int" func_printed | ( | self, | |
"cfunc_t" | cfunc ) |
Plugins may modify the text in cfunc_t::sv. The text uses regular color codes (see lines.hpp) COLOR_ADDR is used to store pointers to ctree items.
cfunc | (cfunc_t *) |
"int" glbopt | ( | self, | |
"mba_t" | mba ) |
If microcode is modified, MERR_LOOP must be returned. It will cause a complete restart of the optimization.
mba | (mba_t *) |
"bool" hook | ( | self | ) |
"int" inlined_func | ( | self, | |
"codegen_t" | cdg, | ||
"int" | blk, | ||
"mba_ranges_t" | mbr, | ||
"int" | i1, | ||
"int" | i2 ) |
cdg | (codegen_t *) |
blk | (int) the block containing call/jump to inline |
mbr | (mba_ranges_t *) the range to inline |
i1 | (int) blknum of the first inlined block |
i2 | (int) blknum of the last inlined block (excluded) |
"int" inlining_func | ( | self, | |
"codegen_t" | cdg, | ||
"int" | blk, | ||
"mba_ranges_t" | mbr ) |
cdg | (codegen_t *) |
blk | (int) the block containing call/jump to inline |
mbr | (mba_ranges_t *) the range to inline |
"int" interr | ( | self, | |
"int" | errcode ) |
errcode | (int ) |
"int" keyboard | ( | self, | |
"vdui_t" | vu, | ||
"int" | key_code, | ||
"int" | shift_state ) |
vu | (vdui_t *) |
key_code | (int) VK_... |
shift_state | (int) Should return: 1 if the event has been handled |
"int" locopt | ( | self, | |
"mba_t" | mba ) |
mba | (mba_t *) |
"int" lvar_cmt_changed | ( | self, | |
"vdui_t" | vu, | ||
"lvar_t" | v, | ||
"char const *" | cmt ) |
"int" lvar_mapping_changed | ( | self, | |
"vdui_t" | vu, | ||
"lvar_t" | frm, | ||
"lvar_t" | to ) |
"int" lvar_name_changed | ( | self, | |
"vdui_t" | vu, | ||
"lvar_t" | v, | ||
"char const *" | name, | ||
"bool" | is_user_name ) |
"int" lvar_type_changed | ( | self, | |
"vdui_t" | vu, | ||
"lvar_t" | v, | ||
"tinfo_t" | tinfo ) |
"int" maturity | ( | self, | |
"cfunc_t" | cfunc, | ||
"ctree_maturity_t" | new_maturity ) |
cfunc | (cfunc_t *) |
new_maturity | (ctree_maturity_t) |
"int" microcode | ( | self, | |
"mba_t" | mba ) |
mba | (mba_t *) |
"int" open_pseudocode | ( | self, | |
"vdui_t" | vu ) |
vu | (vdui_t *) |
"int" populating_popup | ( | self, | |
"TWidget *" | widget, | ||
"TPopupMenu *" | popup_handle, | ||
"vdui_t" | vu ) |
We can add menu items now.
widget | (TWidget *) |
popup_handle | (TPopupMenu *) |
vu | (vdui_t *) |
"int" pre_structural | ( | self, | |
"control_graph_t *" | ct, | ||
"cfunc_t" | cfunc, | ||
"simple_graph_t" | g ) |
ct | (control_graph_t *) in/out: control graph |
cfunc | (cfunc_t *) in: the current function |
g | (const simple_graph_t *) in: control flow graph |
"int" prealloc | ( | self, | |
"mba_t" | mba ) |
mba | (mba_t *) This event may occur several times. Should return: 1 if modified microcode Negative values are Microcode error codes error codes |
"int" preoptimized | ( | self, | |
"mba_t" | mba ) |
mba | (mba_t *) |
"int" print_func | ( | self, | |
"cfunc_t" | cfunc, | ||
"vc_printer_t" | vp ) |
cfunc | (cfunc_t *) |
vp | (vc_printer_t *) Returns: 1 if text has been generated by the plugin It is forbidden to modify ctree at this event. |
"int" prolog | ( | self, | |
"mba_t" | mba, | ||
"qflow_chart_t" | fc, | ||
"bitset_t" | reachable_blocks, | ||
"int" | decomp_flags ) |
"int" refresh_pseudocode | ( | self, | |
"vdui_t" | vu ) |
Adding/removing pseudocode lines is forbidden in this event.
vu | (vdui_t *) See also hxe_text_ready, which happens earlier |
"int" resolve_stkaddrs | ( | self, | |
"mba_t" | mba ) |
mba | (mba_t *) |
"int" right_click | ( | self, | |
"vdui_t" | vu ) |
Use hxe_populating_popup instead, in case you want to add items in the popup menu.
vu | (vdui_t *) |
"int" stkpnts | ( | self, | |
"mba_t" | mba, | ||
"stkpnts_t *" | _sps ) |
mba | (mba_t *) |
_sps | stkpnts_t * |
"int" structural | ( | self, | |
"control_graph_t *" | ct ) |
ct | (control_graph_t *) |
"int" switch_pseudocode | ( | self, | |
"vdui_t" | vu ) |
Its text has not been refreshed yet, only cfunc and mba pointers are ready.
vu | (vdui_t *) |
"int" text_ready | ( | self, | |
"vdui_t" | vu ) |
vu | (vdui_t *) This event can be used to modify the output text (sv). Obsolete. Please use hxe_func_printed instead. |
"bool" unhook | ( | self | ) |
|
static |