diff options
| -rw-r--r-- | example/ida/symbol_exec.py | 60 | ||||
| -rw-r--r-- | example/ida/utils.py | 56 |
2 files changed, 58 insertions, 58 deletions
diff --git a/example/ida/symbol_exec.py b/example/ida/symbol_exec.py index 1ff75f41..b1601cef 100644 --- a/example/ida/symbol_exec.py +++ b/example/ida/symbol_exec.py @@ -4,64 +4,8 @@ import idaapi import idc from miasm2.expression.expression_helper import Variables_Identifier from miasm2.expression.expression import ExprAff -from miasm2.ir.translators import Translator - -from utils import expr2colorstr - - -class translatorForm(Form): - """Translator Form. - - Offer a ComboBox with available languages (ie. IR translators) and the - corresponding translation.""" - - flags = (Form.MultiLineTextControl.TXTF_FIXEDFONT | \ - Form.MultiLineTextControl.TXTF_READONLY) - - def __init__(self, expr): - "@expr: Expr instance" - - # Init - self.languages = list(Translator.available_languages()) - self.expr = expr - - # Initial translation - text = Translator.to_language(self.languages[0]).from_expr(self.expr) - - # Create the Form - Form.__init__(self, r"""STARTITEM 0 -Python Expression -{FormChangeCb} -<Language:{cbLanguage}> -<Translation:{result}> -""", { - 'result': Form.MultiLineTextControl(text=text, - flags=translatorForm.flags), - 'cbLanguage': Form.DropdownListControl( - items=self.languages, - readonly=True, - selval=0), - 'FormChangeCb': Form.FormChangeCb(self.OnFormChange), - }) - - def OnFormChange(self, fid): - if fid == self.cbLanguage.id: - # Display the Field (may be hide) - self.ShowField(self.result, True) - - # Translate the expression - dest_lang = self.languages[self.GetControlValue(self.cbLanguage)] - try: - text = Translator.to_language(dest_lang).from_expr(self.expr) - except Exception, error: - self.ShowField(self.result, False) - return -1 - - # Update the form - self.SetControlValue(self.result, - textctrl_info_t(text=str(text), - flags=translatorForm.flags)) - return 1 + +from utils import expr2colorstr, translatorForm class symbolicexec_t(idaapi.simplecustviewer_t): diff --git a/example/ida/utils.py b/example/ida/utils.py index 6b42cd83..8b9dcf6a 100644 --- a/example/ida/utils.py +++ b/example/ida/utils.py @@ -2,6 +2,7 @@ import idaapi from idc import * from miasm2.analysis.machine import Machine +from miasm2.ir.translators import Translator import miasm2.expression.expression as m2_expr @@ -111,3 +112,58 @@ def expr2colorstr(regs_ids, expr): s = str(expr) return s + + +class translatorForm(idaapi.Form): + """Translator Form. + + Offer a ComboBox with available languages (ie. IR translators) and the + corresponding translation.""" + + flags = (idaapi.Form.MultiLineTextControl.TXTF_FIXEDFONT | \ + idaapi.Form.MultiLineTextControl.TXTF_READONLY) + + def __init__(self, expr): + "@expr: Expr instance" + + # Init + self.languages = list(Translator.available_languages()) + self.expr = expr + + # Initial translation + text = Translator.to_language(self.languages[0]).from_expr(self.expr) + + # Create the Form + idaapi.Form.__init__(self, r"""STARTITEM 0 +Python Expression +{FormChangeCb} +<Language:{cbLanguage}> +<Translation:{result}> +""", { + 'result': idaapi.Form.MultiLineTextControl(text=text, + flags=translatorForm.flags), + 'cbLanguage': idaapi.Form.DropdownListControl( + items=self.languages, + readonly=True, + selval=0), + 'FormChangeCb': idaapi.Form.FormChangeCb(self.OnFormChange), + }) + + def OnFormChange(self, fid): + if fid == self.cbLanguage.id: + # Display the Field (may be hide) + self.ShowField(self.result, True) + + # Translate the expression + dest_lang = self.languages[self.GetControlValue(self.cbLanguage)] + try: + text = Translator.to_language(dest_lang).from_expr(self.expr) + except Exception, error: + self.ShowField(self.result, False) + return -1 + + # Update the form + self.SetControlValue(self.result, + idaapi.textctrl_info_t(text=str(text), + flags=translatorForm.flags)) + return 1 |