def _fake_elffile_extract(self, path): name = os.path.basename(path) if name in [ 'fake_elf-2.26', 'fake_elf-bad-ldd', 'fake_elf-with-core-libs', 'fake_elf-bad-patchelf' ]: glibc = elf.NeededLibrary(name='libc.so.6') glibc.add_version('GLIBC_2.2.5') glibc.add_version('GLIBC_2.26') return '/lib64/ld-linux-x86-64.so.2', '', {glibc.name: glibc} elif name == 'fake_elf-2.23': glibc = elf.NeededLibrary(name='libc.so.6') glibc.add_version('GLIBC_2.2.5') glibc.add_version('GLIBC_2.23') return '/lib64/ld-linux-x86-64.so.2', '', {glibc.name: glibc} elif name == 'fake_elf-1.1': glibc = elf.NeededLibrary(name='libc.so.6') glibc.add_version('GLIBC_1.1') glibc.add_version('GLIBC_0.1') return '/lib64/ld-linux-x86-64.so.2', '', {glibc.name: glibc} elif name == 'fake_elf-static': return '', '', {} elif name == 'fake_elf-shared-object': openssl = elf.NeededLibrary(name='libssl.so.1.0.0') openssl.add_version('OPENSSL_1.0.0') return '', 'libfake_elf.so.0', {openssl.name: openssl}
def _fake_elffile_extract(self, path): arch = ("ELFCLASS64", "ELFDATA2LSB", "EM_X86_64") name = os.path.basename(path) if name in [ "fake_elf-2.26", "fake_elf-bad-ldd", "fake_elf-with-core-libs", "fake_elf-bad-patchelf", ]: glibc = elf.NeededLibrary(name="libc.so.6") glibc.add_version("GLIBC_2.2.5") glibc.add_version("GLIBC_2.26") return (arch, "/lib64/ld-linux-x86-64.so.2", "", { glibc.name: glibc }, False) elif name == "fake_elf-2.23": glibc = elf.NeededLibrary(name="libc.so.6") glibc.add_version("GLIBC_2.2.5") glibc.add_version("GLIBC_2.23") return (arch, "/lib64/ld-linux-x86-64.so.2", "", { glibc.name: glibc }, False) elif name == "fake_elf-1.1": glibc = elf.NeededLibrary(name="libc.so.6") glibc.add_version("GLIBC_1.1") glibc.add_version("GLIBC_0.1") return (arch, "/lib64/ld-linux-x86-64.so.2", "", { glibc.name: glibc }, False) elif name == "fake_elf-static": return arch, "", "", {}, False elif name == "fake_elf-shared-object": openssl = elf.NeededLibrary(name="libssl.so.1.0.0") openssl.add_version("OPENSSL_1.0.0") return arch, "", "libfake_elf.so.0", {openssl.name: openssl}, False elif name == "fake_elf-with-execstack": glibc = elf.NeededLibrary(name="libc.so.6") glibc.add_version("GLIBC_2.23") return (arch, "/lib64/ld-linux-x86-64.so.2", "", { glibc.name: glibc }, True) elif name == "fake_elf-with-bad-execstack": glibc = elf.NeededLibrary(name="libc.so.6") glibc.add_version("GLIBC_2.23") return (arch, "/lib64/ld-linux-x86-64.so.2", "", { glibc.name: glibc }, True) elif name == "libc.so.6": return arch, "", "libc.so.6", {}, False elif name == "libssl.so.1.0.0": return arch, "", "libssl.so.1.0.0", {}, False else: return arch, "", "", {}, False
def _fake_elffile_extract(self, path): arch = ('ELFCLASS64', 'ELFDATA2LSB', 'EM_X86_64') name = os.path.basename(path) if name in [ 'fake_elf-2.26', 'fake_elf-bad-ldd', 'fake_elf-with-core-libs', 'fake_elf-bad-patchelf' ]: glibc = elf.NeededLibrary(name='libc.so.6') glibc.add_version('GLIBC_2.2.5') glibc.add_version('GLIBC_2.26') return (arch, '/lib64/ld-linux-x86-64.so.2', '', { glibc.name: glibc }, False) elif name == 'fake_elf-2.23': glibc = elf.NeededLibrary(name='libc.so.6') glibc.add_version('GLIBC_2.2.5') glibc.add_version('GLIBC_2.23') return (arch, '/lib64/ld-linux-x86-64.so.2', '', { glibc.name: glibc }, False) elif name == 'fake_elf-1.1': glibc = elf.NeededLibrary(name='libc.so.6') glibc.add_version('GLIBC_1.1') glibc.add_version('GLIBC_0.1') return (arch, '/lib64/ld-linux-x86-64.so.2', '', { glibc.name: glibc }, False) elif name == 'fake_elf-static': return arch, '', '', {}, False elif name == 'fake_elf-shared-object': openssl = elf.NeededLibrary(name='libssl.so.1.0.0') openssl.add_version('OPENSSL_1.0.0') return arch, '', 'libfake_elf.so.0', {openssl.name: openssl}, False elif name == 'fake_elf-with-execstack': glibc = elf.NeededLibrary(name='libc.so.6') glibc.add_version('GLIBC_2.23') return (arch, '/lib64/ld-linux-x86-64.so.2', '', { glibc.name: glibc }, True) elif name == 'fake_elf-with-bad-execstack': glibc = elf.NeededLibrary(name='libc.so.6') glibc.add_version('GLIBC_2.23') return (arch, '/lib64/ld-linux-x86-64.so.2', '', { glibc.name: glibc }, True) elif name == 'libc.so.6': return arch, '', 'libc.so.6', {}, False elif name == 'libssl.so.1.0.0': return arch, '', 'libssl.so.1.0.0', {}, False else: return arch, '', '', {}, False
def _fake_elffile_extract_attributes(self): name = os.path.basename(self.path) self.arch = ("ELFCLASS64", "ELFDATA2LSB", "EM_X86_64") self.build_id = "build-id-{}".format(name) if name in [ "fake_elf-2.26", "fake_elf-bad-ldd", "fake_elf-with-core-libs", "fake_elf-with-missing-libs", "fake_elf-bad-patchelf", ]: glibc = elf.NeededLibrary(name="libc.so.6") glibc.add_version("GLIBC_2.2.5") glibc.add_version("GLIBC_2.26") self.interp = "/lib64/ld-linux-x86-64.so.2" self.soname = "" self.needed = {glibc.name: glibc} self.execstack_set = False self.is_dynamic = True self.has_debug_info = False elif name == "fake_elf-2.23": glibc = elf.NeededLibrary(name="libc.so.6") glibc.add_version("GLIBC_2.2.5") glibc.add_version("GLIBC_2.23") self.interp = "/lib64/ld-linux-x86-64.so.2" self.soname = "" self.needed = {glibc.name: glibc} self.execstack_set = False self.is_dynamic = True self.has_debug_info = False elif name == "fake_elf-1.1": glibc = elf.NeededLibrary(name="libc.so.6") glibc.add_version("GLIBC_1.1") glibc.add_version("GLIBC_0.1") self.interp = "/lib64/ld-linux-x86-64.so.2" self.soname = "" self.needed = {glibc.name: glibc} self.execstack_set = False self.is_dynamic = True self.has_debug_info = False elif name == "fake_elf-static": self.interp = "/lib64/ld-linux-x86-64.so.2" self.soname = "" self.needed = dict() self.execstack_set = False self.is_dynamic = False self.has_debug_info = False elif name == "fake_elf-shared-object": openssl = elf.NeededLibrary(name="libssl.so.1.0.0") openssl.add_version("OPENSSL_1.0.0") self.interp = "" self.soname = "libfake_elf.so.0" self.needed = {openssl.name: openssl} self.execstack_set = False self.is_dynamic = True self.has_debug_info = False elif name == "fake_elf-with-execstack": glibc = elf.NeededLibrary(name="libc.so.6") glibc.add_version("GLIBC_2.23") self.interp = "/lib64/ld-linux-x86-64.so.2" self.soname = "" self.needed = {glibc.name: glibc} self.execstack_set = True self.is_dynamic = True self.has_debug_info = False elif name == "fake_elf-with-bad-execstack": glibc = elf.NeededLibrary(name="libc.so.6") glibc.add_version("GLIBC_2.23") self.interp = "/lib64/ld-linux-x86-64.so.2" self.soname = "" self.needed = {glibc.name: glibc} self.execstack_set = True self.is_dynamic = True self.has_debug_info = False elif name == "libc.so.6": self.interp = "" self.soname = "libc.so.6" self.needed = {} self.execstack_set = False self.is_dynamic = True self.has_debug_info = False elif name == "libssl.so.1.0.0": self.interp = "" self.soname = "libssl.so.1.0.0" self.needed = {} self.execstack_set = False self.is_dynamic = True self.has_debug_info = False else: self.interp = "" self.soname = "" self.needed = {} self.execstack_set = False self.is_dynamic = True self.has_debug_info = False