예제 #1
0
    def __init__(self, module, address, symbol, recentOnEnter, recentOnLeave):
        Form.__init__(
            self, r"""STARTITEM {id:script_enter}
BUTTON YES* Save
BUTTON CANCEL Cancel
Function Hook

{segment}  {address}:  {symbol} 

<Once:{set_once}>
<Permanent:{set_perm}>{trigger}>

Recent onEnter script file:{src_file_enter}
<##onEnter script\::{script_enter}>
<##Load from file:{loadfile_enter}><##Update from file:{update_enter}>
Recent onLeave script file:{src_file_leave}
<##onLeave script\::{script_leave}>
<##Load from file:{loadfile_leave}><##Update from file:{update_leave}>
""", {
                'segment':
                Form.StringLabel("[" + module + "]", tp='F'),
                'address':
                Form.StringLabel(address, tp='A'),
                'symbol':
                Form.StringLabel(symbol, tp='X'),
                'trigger':
                Form.RadGroupControl(("set_once", "set_perm")),
                'src_file_enter':
                Form.StringLabel(
                    recentOnEnter if recentOnEnter is not None else "",
                    tp='f'),
                'script_enter':
                Form.MultiLineTextControl(flags=self.textFlags,
                                          tabsize=self.textTab,
                                          width=200,
                                          swidth=200),
                'loadfile_enter':
                Form.ButtonInput(self.onLoadEnter),
                'update_enter':
                Form.ButtonInput(self.onUpdateEnter),
                'src_file_leave':
                Form.StringLabel(
                    recentOnLeave if recentOnLeave is not None else "",
                    tp='f'),
                'script_leave':
                Form.MultiLineTextControl(flags=self.textFlags,
                                          tabsize=self.textTab,
                                          width=200,
                                          swidth=200),
                'loadfile_leave':
                Form.ButtonInput(self.onLoadLeave),
                'update_leave':
                Form.ButtonInput(self.onUpdateLeave),
            })
        self.recentScriptFileEnter = recentOnEnter
        self.recentScriptFileLeave = recentOnLeave
예제 #2
0
    def __init__(self, start_ea, end_ea):
        Form.__init__(
            self, r"""BUTTON YES* Import
Import data

{FormChangeCb}
<##Start EA   :{intStartEA}>
<##End EA     :{intEndEA}>

Import type:                    Patching options:
<hex string:{rHex}><##Trim to selection:{cSize}>{cGroup}>
<string literal:{rString}>
<binary file:{rFile}>{rGroup}>

<:{strPatch}>
<##Import BIN file:{impFile}>
""", {
                'intStartEA':
                Form.NumericInput(swidth=40, tp=Form.FT_ADDR, value=start_ea),
                'intEndEA':
                Form.NumericInput(swidth=40, tp=Form.FT_ADDR, value=end_ea),
                'cGroup':
                Form.ChkGroupControl(("cSize", )),
                'rGroup':
                Form.RadGroupControl(("rHex", "rString", "rFile")),
                'strPatch':
                Form.MultiLineTextControl(
                    swidth=80, flags=Form.MultiLineTextControl.TXTF_FIXEDFONT),
                'impFile':
                Form.FileInput(swidth=50, open=True),
                'FormChangeCb':
                Form.FormChangeCb(self.OnFormChange),
            })

        self.Compile()
예제 #3
0
    def __init__(self):
        Form.__init__(self, r"""STARTITEM 0
BUTTON YES* Yeah
BUTTON NO Nope
BUTTON CANCEL NONE
Form Test

{FormChangeCb}
<Multilinetext:{txtMultiLineText}>
""", {
            'txtMultiLineText': Form.MultiLineTextControl(text="Hello"),
            'FormChangeCb': Form.FormChangeCb(self.OnFormChange),
        })
예제 #4
0
    def __init__(self, addr_str, fpos_str, patch_str, org_str):
        Form.__init__(self,
r"""Edit patch bytes
Address        {strAddr}
File offset    {strFpos}
<:{strPatch}>
""", {
        'strAddr':  Form.StringLabel(addr_str),
        'strFpos':  Form.StringLabel(fpos_str),
        'strPatch': Form.MultiLineTextControl(text=patch_str, flags = Form.MultiLineTextControl.TXTF_FIXEDFONT),
        })

        self.Compile()
예제 #5
0
    def __init__(self, addr_str, fpos_str, patch_str, org_str):
        Form.__init__(self, 
r"""BUTTON YES* Restore
BUTTON CANCEL Cancel
Restore patch bytes
Address        {strAddr}
File offset    {strFpos}
<:{strOrg}>
""", {
        'strAddr': Form.StringLabel(addr_str),
        'strFpos': Form.StringLabel(fpos_str),
        'strOrg': Form.MultiLineTextControl(text=org_str, flags = Form.MultiLineTextControl.TXTF_FIXEDFONT | Form.MultiLineTextControl.TXTF_READONLY),

        })

        self.Compile()
예제 #6
0
    def __init__(self, db_list):
        Form.__init__(self, r"""STARTITEM {id:db_id}
BUTTON YES* Exec
BUTTON CANCEL Cancel
Execute Query

<##DB ID\::{db_id}>
<##Query\::{db_query}>
""", {
        'db_id': Form.DropdownListControl(
                        items=db_list,
                        readonly=True,
                        selval=0,
                        swidth=20,
                        width=20),
        'db_query': Form.MultiLineTextControl(flags=self.textFlags, tabsize=self.textTab, width=200, swidth=200),
        })
    def __init__(self, engine, recentFile):
        Form.__init__(self, r"""STARTITEM {id:script}
BUTTON YES* Save
BUTTON CANCEL Close
Execute Custom Frida Script

Recent source file:{src_file}
<##Script source code\::{script}>
<##Load from file:{loadfile}><##Update from file:{update}><##Execute:{execute}>
""", {
        'src_file': Form.StringLabel(recentFile if recentFile is not None else "", tp='f'),
        'script': Form.MultiLineTextControl(flags=self.textFlags, tabsize=self.textTab, width=200, swidth=200),
        'loadfile': Form.ButtonInput(self.onLoad),
        'update': Form.ButtonInput(self.onUpdate),
        'execute': Form.ButtonInput(self.onExecute),
        })
        self.engine = engine
        self.recentScriptFile = recentFile
예제 #8
0
    def __init__(self, module, address, symbol, recent):
        Form.__init__(
            self, r"""STARTITEM {id:ret_type}
BUTTON YES* Save
BUTTON CANCEL Cancel
Function Implementation Replace

{segment}  {address}:  {symbol} 

<##return type\::{ret_type}>   <##arguments\::{args}>

{orig_call}
Recent source file:{src_file}
<##Script source code\::{script}>
<##Load from file:{loadfile}><##Update from file:{update}>
""", {
                'segment':
                Form.StringLabel("[" + module + "]", tp='F'),
                'address':
                Form.StringLabel(address, tp='A'),
                'symbol':
                Form.StringLabel(symbol, tp='X'),
                'ret_type':
                Form.StringInput(swidth=10),
                'args':
                Form.StringInput(swidth=40),
                'orig_call':
                Form.StringLabel(
                    "NOTE: Original implementation can be called using `frlOriginalImpl()`"
                ),
                'src_file':
                Form.StringLabel(recent if recent is not None else "", tp='f'),
                'script':
                Form.MultiLineTextControl(flags=self.textFlags,
                                          tabsize=self.textTab,
                                          width=200,
                                          swidth=200),
                'loadfile':
                Form.ButtonInput(self.onLoadScript),
                'update':
                Form.ButtonInput(self.onUpdateScript),
            })
        self.recentScriptFile = recent
예제 #9
0
    def __init__(self):
        Form.__init__(
            self, r"""STARTITEM {id:db_id}
BUTTON YES* Save
BUTTON CANCEL Cancel
Create New DB

<##DB ID\:  :{db_id}>
<##DB File\::{db_path}>
<##First Table Query\::{db_table}>
""", {
                'db_id':
                Form.StringInput(swidth=15),
                'db_path':
                Form.FileInput(save=True),
                'db_table':
                Form.MultiLineTextControl(flags=self.textFlags,
                                          tabsize=self.textTab,
                                          width=200,
                                          swidth=200),
            })
    def __init__(self, module, address, mnemonic, recentFile):
        Form.__init__(
            self, r"""STARTITEM {id:script}
BUTTON YES* Save
BUTTON CANCEL Cancel
Instruction Hook

{segment}  {address}:  {mnemonic} 

<Once:{set_once}>
<Permanent:{set_perm}>{trigger}>

Recent source file:{src_file}
<##Script source code\::{script}>
<##Load from file:{loadfile}><##Update from file:{update}>
""", {
                'segment':
                Form.StringLabel("[" + module + "]", tp='F'),
                'address':
                Form.StringLabel(address, tp='A'),
                'mnemonic':
                Form.StringLabel(mnemonic, tp='X'),
                'trigger':
                Form.RadGroupControl(("set_once", "set_perm")),
                'src_file':
                Form.StringLabel(recentFile if recentFile is not None else "",
                                 tp='f'),
                'script':
                Form.MultiLineTextControl(flags=self.textFlags,
                                          tabsize=self.textTab,
                                          width=200,
                                          swidth=200),
                'loadfile':
                Form.ButtonInput(self.onLoad),
                'update':
                Form.ButtonInput(self.onUpdate),
            })
        self.recentScriptFile = recentFile
예제 #11
0
    def __init__(self, modules, recentOnEnter, recentOnLeave):
        Form.__init__(
            self, r"""STARTITEM {id:module}
BUTTON YES* Save
BUTTON CANCEL Cancel
Arbitrary Hook

                        !!! MAKE SURE YOU KNOW WHAT YOU ARE DOING HERE !!!

<Module\: :{module}> <##Address\::{address}>
<##Comment\::{comment}>

<Instruction:{set_inst}><Function:{set_func}>{hook_type}><Once:{set_once}><Permanent:{set_perm}>{trigger}>

Recent onEnter script file:{src_file_enter}
<##onEnter script\::{script_enter}>
<##Load from file:{loadfile_enter}><##Update from file:{update_enter}>
Recent onLeave script file:{src_file_leave}
<##onLeave script\::{script_leave}>
<##Load from file:{loadfile_leave}><##Update from file:{update_leave}>
""", {
                'module':
                Form.DropdownListControl(items=modules,
                                         readonly=True,
                                         selval=0,
                                         swidth=20,
                                         width=20),
                'address':
                Form.NumericInput(swidth=20, tp=Form.FT_HEX),
                'comment':
                Form.StringInput(swidth=60),
                'hook_type':
                Form.RadGroupControl(
                    ("set_inst", "set_func"), secondary=False),
                'trigger':
                Form.RadGroupControl(("set_once", "set_perm"), secondary=True),
                'src_file_enter':
                Form.StringLabel(
                    recentOnEnter if recentOnEnter is not None else "",
                    tp='f'),
                'script_enter':
                Form.MultiLineTextControl(flags=self.textFlags,
                                          tabsize=self.textTab,
                                          width=200,
                                          swidth=200),
                'loadfile_enter':
                Form.ButtonInput(self.onLoadEnter),
                'update_enter':
                Form.ButtonInput(self.onUpdateEnter),
                'src_file_leave':
                Form.StringLabel(
                    recentOnLeave if recentOnLeave is not None else "",
                    tp='f'),
                'script_leave':
                Form.MultiLineTextControl(flags=self.textFlags,
                                          tabsize=self.textTab,
                                          width=200,
                                          swidth=200),
                'loadfile_leave':
                Form.ButtonInput(self.onLoadLeave),
                'update_leave':
                Form.ButtonInput(self.onUpdateLeave),
            })
        self.recentScriptFileEnter = recentOnEnter
        self.recentScriptFileLeave = recentOnLeave