def onUpdate(self, code=0):
     if self.recentScriptFile is None:
         return
     with open(self.recentScriptFile, 'r') as file:
         text_info = textctrl_info_t(text=file.read(), flags=self.textFlags, tabsize=self.textTab)
         self.SetControlValue(self.script, text_info)
         file.close()
Exemplo n.º 2
0
    def __init__(self):
        form = r"""STARTITEM {id:mstr_query}
BUTTON YES NONE
BUTTON NO NONE
BUTTON CANCEL NONE
%s
{FormChangeCb}
<##~N~ew:{btn_new}><##~O~pen:{btn_load}><##~S~ave as...:{btn_save}>

<:{str_help}>
<Query (function or expression)\::{mstr_query}>

<##Above code is a##Function:{rOptionFunction}>
<Lambda expression (f=cfunc_t and i=citem_t):{rOptionExpression}>{rad_qtype}>

<##Process AST elements##cot (faster):{rASTExpr}>
<cit and cot:{rASTStmt}>{rad_ast_type}>

<##Scope##Database:{rScopeIDB}>
<Current function:{rScopeCurFunc}>
<Xrefs to current item:{rScopeXrefItem}>
<Defined by query:{rScopeQuery}>{rad_qscope}>     

<##~R~un:{btn_runq}>
""" % SCRIPT_NAME
        self._qs = QuerySettings()
        s = self._get_settings()
        F = idaapi.Form
        t = idaapi.textctrl_info_t()
        controls = {
            "mstr_query":
            F.MultiLineTextControl(text=s.query,
                                   flags=t.TXTF_AUTOINDENT | t.TXTF_ACCEPTTABS
                                   | t.TXTF_FIXEDFONT | t.TXTF_MODIFIED,
                                   tabsize=2,
                                   width=90,
                                   swidth=90),
            "str_help":
            F.StringInput(swidth=90, value=s.help),
            "rad_qscope":
            F.RadGroupControl(("rScopeIDB", "rScopeCurFunc", "rScopeXrefItem",
                               "rScopeQuery"),
                              value=s.scope),
            "rad_qtype":
            F.RadGroupControl(("rOptionFunction", "rOptionExpression"),
                              value=s.query_type),
            "rad_ast_type":
            F.RadGroupControl(("rASTExpr", "rASTStmt"), value=s.ast_type),
            "btn_load":
            F.ButtonInput(self.OnButtonPress, code=0),
            "btn_save":
            F.ButtonInput(self.OnButtonPress, code=1),
            "btn_runq":
            F.ButtonInput(self.OnButtonPress, code=2),
            "btn_new":
            F.ButtonInput(self.OnButtonPress, code=3),
            'FormChangeCb':
            F.FormChangeCb(self.OnFormChange)
        }
        F.__init__(self, form, controls)
 def onLoad(self, code=0):
     filePath = AskFile(0, "*.js", "Load Frida script")
     if filePath is None:
         return
     self.recentScriptFile = filePath
     with open(self.recentScriptFile, 'r') as file:
         text_info = textctrl_info_t(text=file.read(), flags=self.textFlags, tabsize=self.textTab)
         self.SetControlValue(self.src_file, filePath)
         self.SetControlValue(self.script, text_info)
         file.close()
Exemplo n.º 4
0
    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))
Exemplo n.º 5
0
Arquivo: utils.py Projeto: roytu/miasm
    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))
Exemplo n.º 6
0
    def activate(self, ctx):
        if regFu.isHighlightedEffective():
            addr = regFu.getOffset()
            simicsString = gdbProt.Evalx(
                'SendGDBMonitor("@cgc.getMemoryValue(0x%x)");' % addr)
            print('effective addr 0x%x value %s' % (addr, simicsString))
            value = simicsString
        else:
            highlighted = idaapi.get_highlighted_identifier()
            addr = getHex(highlighted)
            if addr is None:
                print('ModMemoryHandler unable to parse hex from %s' %
                      highlighted)
                return
            simicsString = gdbProt.Evalx(
                'SendGDBMonitor("@cgc.getMemoryValue(0x%x)");' % addr)
            print('addr 0x%x value %s' % (addr, simicsString))
            value = simicsString

        # Sample form from kernwin.hpp
        s = """Modify memory
            Address: %$
            <~E~nter value:t40:80:50::>
            """
        ti = idaapi.textctrl_info_t(value)
        ok = idaapi.AskUsingForm(
            s,
            Form.NumericArgument('$', addr).arg,
            idaapi.pointer(idaapi.c_void_p.from_address(ti.clink_ptr)))
        '''
            string = Form.StringArgument(value)
            ok = idaapi.AskUsingForm(s,
                    Form.NumericArgument('$', addr).arg,
                    string.arg)
            '''
        if ok == 1:
            arg = "'%s'" % ti.text.strip()
            print("You entered: %s <%s>" % (ti.text, arg))
            cmd = "@cgc.writeString(0x%x, %s)" % (addr, arg)
            print cmd
            simicsString = gdbProt.Evalx('SendGDBMonitor("%s");' % (cmd))
            time.sleep(1)
            idc.RefreshDebuggerMemory()