Exemple #1
0
    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),
            })
Exemple #2
0
    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),
        })
Exemple #3
0
        2: [
            "<<",
            ">>",
        ],
        "2+": ["+", "*", "&", "|", "^"],
    }


print("[+] Compute a random expression:")
expr = ExprRandom_OpSubRange.get(depth=8)
print("-> %s" % expr)
print()

target_exprs = {
    lang: Translator.to_language(lang).from_expr(expr)
    for lang in Translator.available_languages()
}
for target_lang, target_expr in viewitems(target_exprs):
    print("[+] Translate in %s:" % target_lang)
    print(target_expr)
    print()

print("[+] Eval in Python:")


def memory(addr, size):
    ret = random.randint(0, (1 << size) - 1)
    print("Memory access: @0x%x -> 0x%x" % (addr, ret))
    return ret

Exemple #4
0
random.seed(0)

class ExprRandom_OpSubRange(ExprRandom):
    operations_by_args_number = {1: ["-"],
                                 2: ["<<", ">>",],
                                 "2+": ["+", "*", "&", "|", "^"],
                                 }


print("[+] Compute a random expression:")
expr = ExprRandom_OpSubRange.get(depth=8)
print("-> %s" % expr)
print()

target_exprs = {lang:Translator.to_language(lang).from_expr(expr)
                for lang in Translator.available_languages()}
for target_lang, target_expr in viewitems(target_exprs):
    print("[+] Translate in %s:" % target_lang)
    print(target_expr)
    print()

print("[+] Eval in Python:")
def memory(addr, size):
    ret = random.randint(0, (1 << size) - 1)
    print("Memory access: @0x%x -> 0x%x" % (addr, ret))
    return ret

for expr_id in expr.get_r(mem_read=True):
    if isinstance(expr_id, ExprId):
        value = random.randint(0, (1 << expr_id.size) - 1)
        print("Declare var: %s = 0x%x" % (expr_id.name, value))