From 5d91dfd00b68e4886c776ceff1f10784cf8ecb3a Mon Sep 17 00:00:00 2001 From: ggrieco-tob Date: Wed, 11 Jul 2018 10:24:18 -0300 Subject: [PATCH] improved selection of base address in case of executables and shared objects --- bin/deepstate/main_manticore.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/bin/deepstate/main_manticore.py b/bin/deepstate/main_manticore.py index 9aa4bbd..8aa6861 100644 --- a/bin/deepstate/main_manticore.py +++ b/bin/deepstate/main_manticore.py @@ -372,10 +372,17 @@ def run_tests(args, state, apis): exit(0) def get_base(m): - if m.initial_state.cpu.address_bit_size == 32: - return 0x56555000 + e_type = m.initial_state.platform.elf['e_type'] + if e_type == 'ET_EXEC': + return 0x0 + elif e_type == 'ET_DYN': + if m.initial_state.cpu.address_bit_size == 32: + return 0x56555000 + else: + return 0x555555554000 else: - return 0x555555554000 + L.critical("Invalid binary type `{}`".format(e_type)) + exit(1) def main_takeover(m, args, takeover_symbol): takeover_ea = find_symbol_ea(m, takeover_symbol)