diff options
| author | Ajax <commial@gmail.com> | 2017-04-05 16:28:54 +0200 |
|---|---|---|
| committer | Ajax <commial@gmail.com> | 2017-04-06 14:26:50 +0200 |
| commit | b535f6e26e354ca61307f8153b862385ba9d2a04 (patch) | |
| tree | 419067643408bed0acc81529791f714150ddf644 /example/jitter/sandbox_call.py | |
| parent | dc3a57fd1f0df922056edf087a9ac94c0005cd15 (diff) | |
| download | miasm-b535f6e26e354ca61307f8153b862385ba9d2a04.tar.gz miasm-b535f6e26e354ca61307f8153b862385ba9d2a04.zip | |
Introduce Sandbox.call, for direct function calling
Diffstat (limited to 'example/jitter/sandbox_call.py')
| -rw-r--r-- | example/jitter/sandbox_call.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/example/jitter/sandbox_call.py b/example/jitter/sandbox_call.py new file mode 100644 index 00000000..49365004 --- /dev/null +++ b/example/jitter/sandbox_call.py @@ -0,0 +1,23 @@ +"""This example illustrate the Sandbox.call API, for direct call of a given +function""" + +from miasm2.analysis.sandbox import Sandbox_Linux_arml +from miasm2.analysis.binary import Container +from miasm2.os_dep.linux_stdlib import linobjs +from miasm2.core.utils import hexdump + +# Parse arguments +parser = Sandbox_Linux_arml.parser(description="ELF sandboxer") +parser.add_argument("filename", help="ELF Filename") +options = parser.parse_args() + +sb = Sandbox_Linux_arml(options.filename, options, globals()) + +with open(options.filename) as fdesc: + cont = Container.from_stream(fdesc) + addr_to_call = cont.symbol_pool.getby_name("md5_starts").offset + +# Calling md5_starts(malloc(0x64)) +addr = linobjs.heap.alloc(sb.jitter, 0x64) +sb.call(addr_to_call, addr) +hexdump(sb.jitter.vm.get_mem(addr, 0x64)) |