From 82610397acf3e331d0ac6613a4b3a8dcda3b2ffe Mon Sep 17 00:00:00 2001 From: elicn Date: Thu, 30 Mar 2023 23:37:08 +0300 Subject: [PATCH] Avoid overwriting custom procfs mappings --- qiling/os/linux/linux.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/qiling/os/linux/linux.py b/qiling/os/linux/linux.py index 9f635933..7b706077 100644 --- a/qiling/os/linux/linux.py +++ b/qiling/os/linux/linux.py @@ -121,11 +121,18 @@ class QlOsLinux(QlOsPosix): self.fd[i] = None def setup_procfs(self): - self.fs_mapper.add_mapping(r'/proc/self/auxv', partial(QlProcFS.self_auxv, self), force=True) - self.fs_mapper.add_mapping(r'/proc/self/cmdline', partial(QlProcFS.self_cmdline, self), force=True) - self.fs_mapper.add_mapping(r'/proc/self/environ', partial(QlProcFS.self_environ, self), force=True) - self.fs_mapper.add_mapping(r'/proc/self/exe', partial(QlProcFS.self_exe, self), force=True) - self.fs_mapper.add_mapping(r'/proc/self/maps', partial(QlProcFS.self_map, self.ql.mem), force=True) + files = ( + (r'/proc/self/auxv', lambda: partial(QlProcFS.self_auxv, self)), + (r'/proc/self/cmdline', lambda: partial(QlProcFS.self_cmdline, self)), + (r'/proc/self/environ', lambda: partial(QlProcFS.self_environ, self)), + (r'/proc/self/exe', lambda: partial(QlProcFS.self_exe, self)), + (r'/proc/self/maps', lambda: partial(QlProcFS.self_map, self.ql.mem)) + ) + + for filename, wrapper in files: + # add mapping only if the user has not already mapped it + if not self.fs_mapper.has_mapping(filename): + self.fs_mapper.add_mapping(filename, wrapper()) def hook_syscall(self, ql, intno = None): return self.load_syscall()