diff --git a/dlinject.py b/dlinject.py index a826768..7bc8675 100755 --- a/dlinject.py +++ b/dlinject.py @@ -19,6 +19,7 @@ import signal import time import subprocess +import re from elftools.elf.elffile import ELFFile @@ -95,16 +96,16 @@ def locate_dl_open(process_maps, mod_name): fail = (False, None, None, None) with open(process_maps) as maps_file: for line in maps_file.readlines(): - mod_path = line.split()[-1] - if mod_name in mod_path: + mod_path = line.split(maxsplit=5)[-1].strip() + if re.match(f".*{mod_name}\..*", mod_path): mod_base = int(line.split("-")[0], 16) break else: return fail - if "libc" in mod_name: + if mod_name == "libc": dl_open_offset = lookup_elf_symbol(mod_path, "dlopen") - elif "ld-linux" in mod_name: + elif mod_name == "ld-linux": dl_open_offset = lookup_elf_symbol(mod_path, "_dl_open") else: return fail