diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2015-08-03 12:38:39 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2015-08-08 23:45:57 +0200 |
| commit | fce9df699d49c5b0907e37d7da7eb30e623805b7 (patch) | |
| tree | 10b6bde5230da3ccba3a8f186d738b96ee3098e6 /miasm2/analysis/sandbox.py | |
| parent | 6278a910630e603a97b7e6d3d34a9780d86719cc (diff) | |
| download | miasm-fce9df699d49c5b0907e37d7da7eb30e623805b7.tar.gz miasm-fce9df699d49c5b0907e37d7da7eb30e623805b7.zip | |
Add arch aarch64
Diffstat (limited to 'miasm2/analysis/sandbox.py')
| -rw-r--r-- | miasm2/analysis/sandbox.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/miasm2/analysis/sandbox.py b/miasm2/analysis/sandbox.py index 3bacda5e..7dc5d76e 100644 --- a/miasm2/analysis/sandbox.py +++ b/miasm2/analysis/sandbox.py @@ -317,6 +317,29 @@ class Arch_armb(Arch): self.jitter.stack_size = self.STACK_SIZE self.jitter.init_stack() +class Arch_aarch64l(Arch): + _ARCH_ = "aarch64l" + STACK_SIZE = 0x100000 + + def __init__(self): + super(Arch_aarch64l, self).__init__() + + # Init stack + self.jitter.stack_size = self.STACK_SIZE + self.jitter.init_stack() + + +class Arch_aarch64b(Arch): + _ARCH_ = "aarch64b" + STACK_SIZE = 0x100000 + + def __init__(self): + super(Arch_aarch64b, self).__init__() + + # Init stack + self.jitter.stack_size = self.STACK_SIZE + self.jitter.init_stack() + class Sandbox_Win_x86_32(Sandbox, Arch_x86_32, OS_Win): @@ -465,3 +488,20 @@ class Sandbox_Linux_arml_str(Sandbox, Arch_arml, OS_Linux_str): if addr is None and self.options.address is not None: addr = int(self.options.address, 16) super(Sandbox_Linux_arml_str, self).run(addr) + + +class Sandbox_Linux_aarch64l(Sandbox, Arch_aarch64l, OS_Linux): + + def __init__(self, *args, **kwargs): + Sandbox.__init__(self, *args, **kwargs) + + self.jitter.cpu.LR = 0x1337beef + + # Set the runtime guard + self.jitter.add_breakpoint(0x1337beef, self.__class__.code_sentinelle) + + + def run(self, addr = None): + if addr is None and self.options.address is not None: + addr = int(self.options.address, 16) + super(Sandbox_Linux_aarch64l, self).run(addr) |