Valery A. Ugrinovskii

164 papers B 2C 22Journal 85Unranked 55
YearRankTypeTitle / Venue / Authors
2024 J jnl
Autom.
Valery A. Ugrinovskii, Matthew R. James
2024 J jnl
IEEE Trans. Autom. Control.
Takashi Tanaka, Vrushabh Zinage, Valery A. Ugrinovskii, Mikael Skoglund
2024 J jnl
Autom.
Valery A. Ugrinovskii, Matthew R. James
2024 conf
CDC
Shuixin Xiao, Weichao Liang, Yuanlong Wang, Daoyi Dong, Ian R. Petersen, Valery A. Ugrinovskii
2023 J jnl
CoRR
Valery A. Ugrinovskii, Ian R. Petersen, Iman Shames
2022 J jnl
CoRR
Takashi Tanaka, Vrushabh Zinage, Valery A. Ugrinovskii, Mikael Skoglund
2022 J jnl
CoRR
Valery A. Ugrinovskii, Ian R. Petersen, Iman Shames
2021 conf
CDC
Yi Cheng, Valery A. Ugrinovskii
2020 conf
CDC
Ian R. Petersen, Matthew R. James, Valery A. Ugrinovskii, Naoki Yamamoto
2020 conf
CDC
Mohammad Zamani, Valery A. Ugrinovskii
2020 J jnl
IEEE Trans. Control. Netw. Syst.
Valery A. Ugrinovskii
2020 J jnl
IEEE Trans. Control. Syst. Technol.
Shibei Xue, Thien Nguyen, Matthew R. James, Alireza Shabani, Valery A. Ugrinovskii, Ian R. Petersen
2019 conf
CDC
Valery A. Ugrinovskii, Matthew R. James
2019 J jnl
Autom.
Mohammad Deghat, Valery A. Ugrinovskii, Iman Shames, Cédric Langbort
2019 J jnl
CoRR
Valery A. Ugrinovskii
2019 C conf
ACC
Valery A. Ugrinovskii, Matthew R. James
2019 J jnl
CoRR
Valery A. Ugrinovskii, Matthew R. James
2018 conf
ECC
Ian R. Petersen, Matthew R. James, Valery A. Ugrinovskii, Naoki Yamamoto
2018 J jnl
CoRR
Ian R. Petersen, Matthew R. James, Valery A. Ugrinovskii, Naoki Yamamoto
2018 J jnl
IEEE Trans. Control. Netw. Syst.
Jingbo Wu, Valery A. Ugrinovskii, Frank Allgöwer
2018 J jnl
CoRR
Mohammad Deghat, Valery A. Ugrinovskii, Iman Shames, Cedric Langbort
2018 J jnl
CoRR
Anna Skobeleva, Baris Fidan, Valery A. Ugrinovskii, Ian R. Petersen
2018 C conf
ACC
Valery A. Ugrinovskii
2018 J jnl
CoRR
Valery A. Ugrinovskii
2017 J jnl
Autom.
Valery A. Ugrinovskii, Cedric Langbort
2017 J jnl
CoRR
Valery A. Ugrinovskii, Cédric Langbort
2017 conf
ANZCC
Anna Skobeleva, Valery A. Ugrinovskii, Ian R. Petersen
2017 C conf
ACC
Yi Cheng, Valery A. Ugrinovskii
2017 J jnl
CoRR
Takashi Tanaka, Mikael Skoglund, Valery A. Ugrinovskii
2017 conf
CDC
Takashi Tanaka, Mikael Skoglund, Valery A. Ugrinovskii
2017 J jnl
CoRR
Thien Nguyen, Zibo Miao, Yu Pan, Nina H. Amini, Valery A. Ugrinovskii, Matthew R. James
2017 C conf
ACC
Thien Nguyen, Zibo Miao, Yu Pan, Nina H. Amini, Valery A. Ugrinovskii, Matthew R. James
2017 J jnl
CoRR
Valery A. Ugrinovskii
2017 conf
ASCC
Valery A. Ugrinovskii
2016 J jnl
CoRR
Mohammad Zamani, Valery A. Ugrinovskii
2016 C conf
ACC
Mohammad Zamani, Valery A. Ugrinovskii
2016 J jnl
CoRR
Mohammad Deghat, Valery A. Ugrinovskii, Iman Shames, Cedric Langbort
2016 conf
CDC
Mohammad Deghat, Valery A. Ugrinovskii, Iman Shames, Cedric Langbort
2016 J jnl
Autom.
Yi Cheng, Valery A. Ugrinovskii
2016 J jnl
CoRR
Yi Cheng, Valery A. Ugrinovskii
2016 conf
AuCC
Anna Skobeleva, Valery A. Ugrinovskii, Ian R. Petersen
2016 J jnl
Autom.
Yu Pan, Valery A. Ugrinovskii, Matthew R. James
2016 C conf
ACC
Shibei Xue, Matthew R. James, Valery A. Ugrinovskii, Ian R. Petersen
2016 conf
AuCC
Jingbo Wu, Valery A. Ugrinovskii, Frank Allgöwer
2016 J jnl
SIAM J. Control. Optim.
Luis A. Duffaut Espinosa, Zibo Miao, Ian R. Petersen, Valery A. Ugrinovskii, Matthew R. James
2015 J jnl
CoRR
Jingbo Wu, Valery A. Ugrinovskii, Frank Allgöwer
2015 J jnl
CoRR
Jingbo Wu, Valery A. Ugrinovskii, Frank Allgöwer
2015 C conf
ACC
Jingbo Wu, Valery A. Ugrinovskii, Frank Allgöwer
2015 J jnl
CoRR
Jingbo Wu, Li Li, Valery A. Ugrinovskii, Frank Allgöwer
2015 C conf
CCA
Jingbo Wu, Li Li, Valery A. Ugrinovskii, Frank Allgöwer
2015 J jnl
CoRR
Valery A. Ugrinovskii
2015 J jnl
CoRR
Yi Cheng, Valery A. Ugrinovskii
2015 J jnl
CoRR
Yi Cheng, Valery A. Ugrinovskii
2015 J jnl
Int. J. Control
Yi Cheng, Valery A. Ugrinovskii
2015 C conf
ACC
Yu Pan, Valery A. Ugrinovskii, Matthew R. James
2015 conf
CDC
Zibo Miao, Matthew R. James, Valery A. Ugrinovskii
2015 conf
CDC
Shibei Xue, Matthew R. James, Alireza Shabani, Valery A. Ugrinovskii, Ian R. Petersen
2015 C conf
CCA
Shibei Xue, Matthew R. James, Alireza Shabani, Valery A. Ugrinovskii, Ian R. Petersen
2014 J jnl
CoRR
Valery A. Ugrinovskii, Emilia Fridman
2014 J jnl
CoRR
Valery A. Ugrinovskii, Emilia Fridman
2014 J jnl
Syst. Control. Lett.
Valery A. Ugrinovskii, Emilia Fridman
2014 C conf
ACC
Valery A. Ugrinovskii, Cedric Langbort
2014 J jnl
CoRR
Valery A. Ugrinovskii, Cédric Langbort
2014 conf
AuCC
Valery A. Ugrinovskii
2014 J jnl
CoRR
Valery A. Ugrinovskii
2014 J jnl
CoRR
Guanghui Wen, Valery A. Ugrinovskii
2014 conf
AuCC
Guanghui Wen, Valery A. Ugrinovskii
2014 conf
CIHLI
Medria K. D. Hardhienata, Kathryn E. Merrick, Valery A. Ugrinovskii
2014 J jnl
Autom.
Valery A. Ugrinovskii
2014 J jnl
CoRR
Valery A. Ugrinovskii
2014 J jnl
CoRR
Mohammad Zamani, Iman Shames, Valery A. Ugrinovskii
2014 J jnl
CoRR
Mohammad Zamani, Valery A. Ugrinovskii
2014 conf
CDC
Mohammad Zamani, Iman Shames, Valery A. Ugrinovskii
2014 conf
CDC
Mohammad Zamani, Valery A. Ugrinovskii
2014 B conf
IEEE Congress on Evolutionary Computation
Medria K. D. Hardhienata, Valery A. Ugrinovskii, Kathryn E. Merrick
2013 J jnl
CoRR
Matthew R. James, Ian R. Petersen, Valery A. Ugrinovskii
2013 C conf
ACC
Matthew R. James, Ian R. Petersen, Valery A. Ugrinovskii
2013 conf
CDC
Valery A. Ugrinovskii, Emilia Fridman
2013 conf
AuCC
Zibo Miao, Luis A. Duffaut Espinosa, Ian R. Petersen, Valery A. Ugrinovskii, Matthew R. James
2013 J jnl
IEEE Trans. Autom. Control.
Valery A. Ugrinovskii
2013 J jnl
CoRR
Valery A. Ugrinovskii
2013 J jnl
Syst. Control. Lett.
Takashi Tanaka, Cédric Langbort, Valery A. Ugrinovskii
2013 J jnl
CoRR
Dabo Xu, Valery A. Ugrinovskii
2013 J jnl
Syst. Control. Lett.
Dabo Xu, Valery A. Ugrinovskii
2013 J jnl
CoRR
Guanghui Wen, Valery A. Ugrinovskii
2013 conf
CDC
Guanghui Wen, Valery A. Ugrinovskii
2013 J jnl
Autom.
Valery A. Ugrinovskii
2013 J jnl
CoRR
Yi Cheng, Valery A. Ugrinovskii, Guanghui Wen
2013 J jnl
CoRR
Yi Cheng, Valery A. Ugrinovskii
2013 conf
AuCC
Yi Cheng, Valery A. Ugrinovskii, Guanghui Wen
2013 C conf
ACC
Yi Cheng, Valery A. Ugrinovskii
2013 J jnl
CoRR
Luis A. Duffaut Espinosa, Zibo Miao, Ian R. Petersen, Valery A. Ugrinovskii, Matthew R. James
2013 C conf
ACC
Luis A. Duffaut Espinosa, Zibo Miao, Ian R. Petersen, Valery A. Ugrinovskii, Matthew R. James
2013 conf
CDC
Luis A. Duffaut Espinosa, Zibo Miao, Ian R. Petersen, Valery A. Ugrinovskii, Matthew R. James
2013 J jnl
CoRR
Shan Ma, Junlin Xiong, Valery A. Ugrinovskii, Ian R. Petersen
2013 J jnl
Autom.
Shan Ma, Junlin Xiong, Valery A. Ugrinovskii, Ian R. Petersen
2013 conf
AuCC
Yu Pan, Hadis Amini, Zibo Miao, John Edward Gough, Valery A. Ugrinovskii, Matthew R. James
2012 conf
CDC
Valery A. Ugrinovskii
2012 J jnl
IEEE Trans. Autom. Control.
Hua Ouyang, Ian R. Petersen, Valery A. Ugrinovskii
2012 C conf
ACC
Cédric Langbort, Valery A. Ugrinovskii
2012 conf
CDC
Luis A. Duffaut Espinosa, Zibo Miao, Ian R. Petersen, Valery A. Ugrinovskii, Matthew R. James
2012 J jnl
CoRR
Ian R. Petersen, Valery A. Ugrinovskii, Matthew R. James
2012 J jnl
CoRR
Ian R. Petersen, Valery A. Ugrinovskii, Matthew R. James
2012 conf
CDC
Ian R. Petersen, Valery A. Ugrinovskii, Matthew R. James
2012 C conf
ACC
Ian R. Petersen, Valery A. Ugrinovskii, Matthew R. James
2012 J jnl
Autom.
Hua Ouyang, Ian R. Petersen, Valery A. Ugrinovskii
2012 B conf
IEEE Congress on Evolutionary Computation
Medria K. D. Hardhienata, Kathryn E. Merrick, Valery A. Ugrinovskii
2011 conf
AuCC
Jason J. Ford, Valery A. Ugrinovskii, John Lai
2011 J jnl
Autom.
Cédric Langbort, Valery A. Ugrinovskii
2011 C conf
ACC
Valery A. Ugrinovskii
2011 J jnl
Autom.
Valery A. Ugrinovskii
2011 conf
CDC/ECC
Valery A. Ugrinovskii
2011 J jnl
CoRR
Hua Ouyang, Ian R. Petersen, Valery A. Ugrinovskii
2011 conf
AuCC
Dabo Xu, Valery A. Ugrinovskii
2010 C conf
ACC
Hua Ouyang, Ian R. Petersen, Valery A. Ugrinovskii
2010 conf
CDC
Valery A. Ugrinovskii, Cedric Langbort
2010 conf
CDC
Cedric Langbort, Valery A. Ugrinovskii
2010 C conf
ACC
Valery A. Ugrinovskii
2009 conf
CDC
Hua Ouyang, Ian R. Petersen, Valery A. Ugrinovskii
2009 conf
CDC
Md. Jahangir Hossain, Hemanshu Roy Pota, Valery A. Ugrinovskii, Rodrigo A. Ramos
2009 J jnl
Syst. Control. Lett.
Valery A. Ugrinovskii, Ian R. Petersen
2009 J jnl
IEEE Trans. Autom. Control.
Junlin Xiong, Valery A. Ugrinovskii, Ian R. Petersen
2009 C conf
ACC
Junlin Xiong, Valery A. Ugrinovskii, Ian R. Petersen
2009 J jnl
Autom.
Valery A. Ugrinovskii
2009 conf
CCA/ISIC
Md. Jahangir Hossain, Hemanshu Roy Pota, Valery A. Ugrinovskii, Rodrigo A. Ramos
2008 J jnl
SIAM J. Control. Optim.
Li Xie, Valery A. Ugrinovskii, Ian R. Petersen
2008 conf
CDC
Junlin Xiong, Valery A. Ugrinovskii, Ian R. Petersen
2008 conf
CDC
Xilin Yang, Hemanshu Roy Pota, Matthew Garratt, Valery A. Ugrinovskii
2008 J jnl
IEEE Trans. Autom. Control.
Jason J. Ford, Valery A. Ugrinovskii
2007 J jnl
IEEE Trans. Inf. Theory
Li Xie, Valery A. Ugrinovskii, Ian R. Petersen
2007 J jnl
Autom.
Li Li, Valery A. Ugrinovskii, Robert Orsi
2007 J jnl
IEEE Trans. Autom. Control.
Myung-Gon Yoon, Valery A. Ugrinovskii, Marek Pszczel
2007 J jnl
IEEE Trans. Autom. Control.
Li Li, Valery A. Ugrinovskii
2007 conf
CDC
Germane Xavier Athanasius, Hemanshu Roy Pota, P. V. Bala Subramanyam, Valery A. Ugrinovskii
2007 conf
CDC
Li Li, Valery A. Ugrinovskii
2006 C conf
ACC
Hemanshu R. Pota, Germane Xavier Athanasius, Valery A. Ugrinovskii, Li Li
2006 C conf
ACC
Li Li, Valery A. Ugrinovskii
2006 conf
CDC
Rodrigo A. Ramos, Li Li, Valery A. Ugrinovskii, Hemanshu Roy Pota
2006 conf
CDC
Li Li, Valery A. Ugrinovskii
2005 J jnl
Autom.
Myung-Gon Yoon, Valery A. Ugrinovskii, Ian R. Petersen
2005 J jnl
IEEE Trans. Autom. Control.
Li Xie, Valery A. Ugrinovskii, Ian R. Petersen
2005 J jnl
Autom.
Valery A. Ugrinovskii
2004 J jnl
Syst. Control. Lett.
Valery A. Ugrinovskii, Roberto Tempo, Yasumasa Fujisaki
2004 conf
CDC
Valery A. Ugrinovskii, Hemanshu Roy Pota
2004 conf
CDC
Li Xie, Valery A. Ugrinovskii, Ian R. Petersen
2004 J jnl
Syst. Control. Lett.
Myung-Gon Yoon, Valery A. Ugrinovskii, Ian R. Petersen
2003 conf
CDC
Myung-Gon Yoon, Valery A. Ugrinovskii, Marek Pszczel
2003 J jnl
IEEE Trans. Autom. Control.
Valery A. Ugrinovskii
2003 conf
CDC
Li Xie, Valery A. Ugrinovskii, Ian R. Petersen
2003 conf
CDC
Myung-Gon Yoon, Valery A. Ugrinovskii
2002 conf
CDC
Valery A. Ugrinovskii, Roberto Tempo, Yasumasa Fujisaki
2002 J jnl
SIAM J. Control. Optim.
Valery A. Ugrinovskii, Ian R. Petersen
2002 conf
CDC
Valery A. Ugrinovskii
2002 conf
CDC
Myung-Gon Yoon, Valery A. Ugrinovskii, Ian R. Petersen
2002 conf
CDC
Myung-Gon Yoon, Valery A. Ugrinovskii, Ian R. Petersen
2002 J jnl
Autom.
Valery A. Ugrinovskii, Ian R. Petersen
2001 conf
CDC
Valery A. Ugrinovskii
2001 J jnl
Syst. Control. Lett.
Valery A. Ugrinovskii, Ian R. Petersen
2000 J jnl
Autom.
Valery A. Ugrinovskii, Ian R. Petersen
2000 conf
CDC
Valery A. Ugrinovskii
2000 conf
CDC
Valery A. Ugrinovskii, Ian R. Petersen
1999 J jnl
Math. Control. Signals Syst.
Valery A. Ugrinovskii, Ian R. Petersen
1999 conf
ECC
Valery A. Ugrinovskii, Ian R. Petersen
1995 J jnl
Autom.
Vladimir A. Brusin, Valery A. Ugrinovskii
redb/extractors/elf_extractors/elf_relocations.py
← Index redb/extractors/elf_extractors/elf_relocations.py python
import inspect
from datetime import datetime, timezone
from typing import Any, List, Dict

from elftools.elf.elffile import ELFFile
from elftools.common.exceptions import ELFError

from redb.extractors.enum import Tag
from redb.extractors.elf_extractor import ELFExtractor
from redb.models.dataclasses import ELFRelocation


class ELFRelocationExtractor(ELFExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        elf=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            elf,
        )
        self.elf_relocations = []
        self.elastic_index = self.index_prefix + "-elf_relocations"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _get_relocation_type_string(self, reloc_type: int, machine_arch: str) -> str:
        """Convert relocation type number to human-readable string based on architecture."""
        # This is a simplified mapping - real implementation would need comprehensive
        # architecture-specific relocation type mappings

        common_types = {
            0: "R_NONE",
            1: "R_DIRECT",
            2: "R_PC_RELATIVE",
            3: "R_GOT",
            4: "R_PLT",
            5: "R_COPY",
            6: "R_GLOB_DAT",
            7: "R_JMP_SLOT",
            8: "R_RELATIVE"
        }

        # Architecture-specific mappings could be added here
        if machine_arch == "x86_64":
            x86_64_types = {
                1: "R_X86_64_64",
                2: "R_X86_64_PC32",
                3: "R_X86_64_GOT32",
                4: "R_X86_64_PLT32",
                5: "R_X86_64_COPY",
                6: "R_X86_64_GLOB_DAT",
                7: "R_X86_64_JUMP_SLOT",
                8: "R_X86_64_RELATIVE"
            }
            return x86_64_types.get(reloc_type, f"R_X86_64_{reloc_type}")
        elif machine_arch == "x86":
            i386_types = {
                1: "R_386_32",
                2: "R_386_PC32",
                3: "R_386_GOT32",
                4: "R_386_PLT32",
                5: "R_386_COPY",
                6: "R_386_GLOB_DAT",
                7: "R_386_JMP_SLOT",
                8: "R_386_RELATIVE"
            }
            return i386_types.get(reloc_type, f"R_386_{reloc_type}")

        return common_types.get(reloc_type, f"R_UNKNOWN_{reloc_type}")

    def _extract_relocation_data(self, relocation, section_name: str, machine_arch: str) -> Dict:
        """Extract data from a single relocation entry."""
        try:
            # Get relocation offset
            relocation_offset = relocation.entry.get('r_offset', 0)

            # Get relocation type
            relocation_type = relocation.entry.get('r_info_type', 0)

            # Get symbol index
            relocation_symbol_index = relocation.entry.get('r_info_sym', 0)

            # Get addend (only present in RELA sections)
            relocation_addend = None
            if hasattr(relocation.entry, 'r_addend'):
                relocation_addend = relocation.entry.get('r_addend', 0)

            # Get symbol name if available
            relocation_symbol_name = ""
            if hasattr(relocation, 'symbol') and relocation.symbol:
                relocation_symbol_name = relocation.symbol.name or f"<symbol_{relocation_symbol_index}>"
            else:
                relocation_symbol_name = f"<symbol_{relocation_symbol_index}>"

            # Get type string mapping
            relocation_type_str = self._get_relocation_type_string(relocation_type, machine_arch)

            return ELFRelocation(
                relocation_offset=relocation_offset,
                relocation_type=relocation_type,
                relocation_type_str=relocation_type_str,
                relocation_symbol_index=relocation_symbol_index,
                relocation_symbol_name=relocation_symbol_name,
                relocation_section=section_name,
                relocation_addend=relocation_addend
            )

        except Exception as e:
            self.log.error(f"Error extracting relocation data: {e}")
            return None

    def _extract_relocations_from_section(self, section, machine_arch: str) -> List[Dict]:
        """Extract all relocations from a relocation section."""
        relocations = []

        try:
            if not hasattr(section, 'iter_relocations'):
                return relocations

            section_name = section.name or f"<unnamed_section>"

            for relocation in section.iter_relocations():
                reloc_data = self._extract_relocation_data(relocation, section_name, machine_arch)
                if reloc_data:
                    relocations.append(reloc_data)

        except Exception as e:
            self.log.error(f"Error extracting relocations from section {section.name}: {e}")

        return relocations

    def tag(self):
        return Tag.ELF_RELOCATIONS.value if hasattr(Tag, 'ELF_RELOCATIONS') else "elf_relocations"

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)

            def extract_data(elf):
                # Get architecture for relocation type mapping
                machine_arch = self._get_architecture()
                all_relocations = []

                # Iterate through all sections looking for relocation sections with per-section error handling
                for section_index, section in enumerate(elf.iter_sections()):
                    try:
                        # Check if this is a relocation section (.rel or .rela)
                        if (section.name and
                            (section.name.startswith('.rel') or section.name.startswith('.rela')) and
                            hasattr(section, 'iter_relocations')):

                            section_relocations = self._extract_relocations_from_section(section, machine_arch)
                            all_relocations.extend(section_relocations)
                            self.log.debug(f"Extracted {len(section_relocations)} relocations from section {section.name}")
                    except Exception as e:
                        section_name = getattr(section, 'name', f'section_{section_index}')
                        self.log.warning(f"Error processing relocation section {section_name}: {e}")
                        # Continue processing other sections

                return all_relocations

            if not self._is_elf_file():
                return None

            result = self._with_elf_file(extract_data)
            if result is None:
                return None

            self.elf_relocations = result
            return self.elf_relocations

        except Exception as e:
            self.log.error(f"Error extracting ELF relocations {self.hash.sha256}: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        self.log.debug(inspect.currentframe().f_code.co_name)

        if exporter_type == "ElasticsearchExporter":
            return self.elf_relocations
        elif exporter_type == "ClickHouseExporter":
            try:
                # Return valid empty structure if no relocations (e.g., statically linked binary)
                # None is reserved for actual errors

                # Prepare data arrays for all relocations
                data = []
                current_time = datetime.now(timezone.utc)
                for reloc in self.elf_relocations:
                    row = [
                        self.sha256,
                        self.md5,
                        self.sha1,
                        reloc.relocation_offset,
                        reloc.relocation_type,
                        reloc.relocation_type_str,
                        reloc.relocation_symbol_index,
                        reloc.relocation_symbol_name,
                        reloc.relocation_addend,
                        reloc.relocation_section,
                        current_time
                    ]
                    data.append(row)

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'relocation_offset', 'relocation_type', 'relocation_type_str',
                    'relocation_symbol_index', 'relocation_symbol_name',
                    'relocation_addend', 'relocation_section',
                    'analysis_date'
                ]

                if not data:
                    return None

                column_type_names = [
                    'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                    'UInt64', 'UInt32', 'LowCardinality(String)',
                    'UInt32', 'LowCardinality(String)',
                    'Nullable(Int64)', 'LowCardinality(String)',
                    'DateTime64(3, \'UTC\')'
                ]

                return (data, column_names, column_type_names)

            except Exception as e:
                self.log.error(f"Error preparing export data: {e}")
                raise

    def get_clickhouse_table(self) -> str:
        return "redb_elf_relocations"