about summary refs log tree commit diff stats
path: root/example/test_jit_arm.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2014-10-07 19:43:18 +0200
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2014-10-07 19:43:18 +0200
commit12bedca7aa29490d62891b464c65bf29f2aa31e4 (patch)
tree2b1095f8e166917e28f60583cc9592c984b82bcd /example/test_jit_arm.py
parent17ffdf4c6b982f4762184a46f1ffbbb0cc36eed8 (diff)
downloadfocaccia-miasm-12bedca7aa29490d62891b464c65bf29f2aa31e4.tar.gz
focaccia-miasm-12bedca7aa29490d62891b464c65bf29f2aa31e4.zip
Sandbox: add arm arch
Diffstat (limited to 'example/test_jit_arm.py')
-rw-r--r--example/test_jit_arm.py72
1 files changed, 18 insertions, 54 deletions
diff --git a/example/test_jit_arm.py b/example/test_jit_arm.py
index 2e54ee58..da4a0e6d 100644
--- a/example/test_jit_arm.py
+++ b/example/test_jit_arm.py
@@ -1,70 +1,34 @@
 #!/usr/bin/env python
 #-*- coding:utf-8 -*-
-from argparse import ArgumentParser
 from miasm2.analysis import debugging, gdbserver
 
+from miasm2.analysis.sandbox import Sandbox_Linux_arml
 from miasm2.jitter.jitload import vm_load_elf, libimp, preload_elf
 from miasm2.analysis.machine import Machine
+import logging
 
 from pdb import pm
 
-parser = ArgumentParser(
-    description="""Sandbox an elf binary with arm engine
-(ex: test_jit_arm.py example/md5_arm A684)""")
-parser.add_argument("-r", "--log-regs",
-                    help="Log registers value for each instruction",
-                    action="store_true")
-parser.add_argument("-m", "--log-mn",
-                    help="Log desassembly conversion for each instruction",
-                    action="store_true")
-parser.add_argument("-n", "--log-newbloc",
-                    help="Log basic blocks processed by the Jitter",
-                    action="store_true")
-parser.add_argument("-j", "--jitter",
-                    help="Jitter engine. Possible values are : tcc (default), llvm",
-                    default="tcc")
-parser.add_argument("-d", "--debugging",
-                    help="Attach a CLI debugguer to the sandboxed programm",
-                    action="store_true")
-parser.add_argument("binary",
-                    help="binary to run")
-parser.add_argument("addr",
-                    help="start exec on addr")
+parser = Sandbox_Linux_arml.parser(description="""Sandbox an elf binary with arm engine
+(ex: test_jit_arm.py example/md5_arm -a A684)""")
+parser.add_argument("filename", help="PE Filename")
+parser.add_argument('-v', "--verbose",
+                    help="verbose mode", action="store_true")
 
-machine = Machine("arm")
+options = parser.parse_args()
+sb = Sandbox_Linux_arml(options.filename, options, globals())
 
-def jit_arm_binary(args):
-    filepath, entryp = args.binary, int(args.addr, 16)
-    myjit = machine.jitter(jit_type = args.jitter)
-    myjit.init_stack()
 
-    # Log level (if available with jitter engine)
-    myjit.jit.log_regs = args.log_regs
-    myjit.jit.log_mn = args.log_mn
-    myjit.jit.log_newbloc = args.log_newbloc
+if options.verbose is True:
+    logging.basicConfig(level=logging.INFO)
+else:
+    logging.basicConfig(level=logging.WARNING)
 
-    elf = vm_load_elf(myjit.vm, filepath)
-    libs = libimp()
-    preload_elf(myjit.vm, elf, libs)
-    myjit.add_lib_handler(libs)
-    myjit.add_breakpoint(0x1337BEEF, lambda _: exit(0))
-    regs = myjit.cpu.get_gpreg()
-    regs['LR'] = 0x1337BEEF
-    myjit.cpu.set_gpreg(regs)
-    myjit.init_run(entryp)
+if options.verbose is True:
+    sb.jitter.vm.dump_memory_page_pool()
 
+if options.address is None:
+    raise ValueError('invalid address')
 
+sb.run()
 
-    # Handle debugging
-    if args.debugging is True:
-        dbg = debugging.Debugguer(myjit)
-        cmd = debugging.DebugCmd(dbg)
-        cmd.cmdloop()
-
-    else:
-        print(myjit.continue_run())
-
-if __name__ == '__main__':
-    from sys import stderr
-    args = parser.parse_args()
-    jit_arm_binary(args)