Ohad Fried

81 papers A* 16A 3Journal 50Unranked 11
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Rotem Gatenyo, Ohad Fried
2025 J jnl
Comput. Graph. Forum
Eran Levin, Ohad Fried
2025 conf
ICCVW
Yaron Aloni, Rotem Shalev-Arkushin, Yonatan Shafir, Guy Tevet, Ohad Fried, Amit Haim Bermano
2025 J jnl
CoRR
Yaron Aloni, Rotem Shalev-Arkushin, Yonatan Shafir, Guy Tevet, Ohad Fried, Amit Haim Bermano
2025 J jnl
CoRR
Rotem Shalev-Arkushin, Rinon Gal, Amit H. Bermano, Ohad Fried
2025 A* conf
CVPR
Matan Rusanovsky, Shimon Malnick, Amir Jevnisek, Ohad Fried, Shai Avidan
2025 J jnl
Comput. Vis. Media
Or Nachmias, Ohad Fried, Ariel Shamir
2025 J jnl
Comput. Graph. Forum
Gal Almog, Ariel Shamir, Ohad Fried
2025 J jnl
CoRR
Gal Almog, Ariel Shamir, Ohad Fried
2025 A* conf
CVPR
Omri Avrahami, Or Patashnik, Ohad Fried, Egor Nemchinov, Kfir Aberman, Dani Lischinski, Daniel Cohen-Or
2025 A* conf
CVPR
Or Madar, Ohad Fried
2024 A* conf
NeurIPS
Eyal Michaeli, Ohad Fried
2024 J jnl
CoRR
Eyal Michaeli, Ohad Fried
2024 A conf
WACV
Sergey Sinitsa, Ohad Fried
2024 A* conf
SIGGRAPH Asia
Omri Avrahami, Rinon Gal, Gal Chechik, Ohad Fried, Dani Lischinski, Arash Vahdat, Weili Nie
2024 J jnl
CoRR
Omri Avrahami, Rinon Gal, Gal Chechik, Ohad Fried, Dani Lischinski, Arash Vahdat, Weili Nie
2024 conf
WACV (Workshops)
Daniel Arkushin, Bar Cohen, Shmuel Peleg, Ohad Fried
2024 J jnl
CoRR
Matan Rusanovsky, Shimon Malnick, Amir Jevnisek, Ohad Fried, Shai Avidan
2024 A* conf
SIGGRAPH Asia
Sigal Raab, Inbar Gat, Nathan Sala, Guy Tevet, Rotem Shalev-Arkushin, Ohad Fried, Amit Haim Bermano, Daniel Cohen-Or
2024 J jnl
CoRR
Sigal Raab, Inbar Gat, Nathan Sala, Guy Tevet, Rotem Shalev-Arkushin, Ohad Fried, Amit H. Bermano, Daniel Cohen-Or
2024 J jnl
CoRR
Omri Avrahami, Or Patashnik, Ohad Fried, Egor Nemchinov, Kfir Aberman, Dani Lischinski, Daniel Cohen-Or
2024 A conf
WACV
Shimon Malnick, Shai Avidan, Ohad Fried
2024 conf
SIGGRAPH (Conference Paper Track)
Omri Avrahami, Amir Hertz, Yael Vinker, Moab Arar, Shlomi Fruchter, Ohad Fried, Daniel Cohen-Or, Dani Lischinski
2024 J jnl
CoRR
Or Madar, Ohad Fried
2024 J jnl
CoRR
Rotem Shalev-Arkushin, Aharon Azulay, Tavi Halperin, Eitan Richardson, Amit H. Bermano, Ohad Fried
2023 J jnl
ACM Trans. Graph.
Omri Avrahami, Ohad Fried, Dani Lischinski
2023 A* conf
SIGGRAPH Asia
Omri Avrahami, Kfir Aberman, Ohad Fried, Daniel Cohen-Or, Dani Lischinski
2023 J jnl
CoRR
Omri Avrahami, Kfir Aberman, Ohad Fried, Daniel Cohen-Or, Dani Lischinski
2023 A conf
WACV
David Dadon, Ohad Fried, Yacov Hel-Or
2023 J jnl
CoRR
Sergey Sinitsa, Ohad Fried
2023 J jnl
CoRR
Eran Levin, Ohad Fried
2023 A* conf
SIGGRAPH Asia
Nir Zabari, Aharon Azulay, Alexey Gorkor, Tavi Halperin, Ohad Fried
2023 J jnl
CoRR
Nir Zabari, Aharon Azulay, Alexey Gorkor, Tavi Halperin, Ohad Fried
2023 A* conf
CVPR
Rotem Shalev-Arkushin, Amit Moryossef, Ohad Fried
2023 A* conf
CVPR
Omri Avrahami, Thomas Hayes, Oran Gafni, Sonal Gupta, Yaniv Taigman, Devi Parikh, Dani Lischinski, Ohad Fried, Xi Yin
2023 J jnl
CoRR
Omri Avrahami, Amir Hertz, Yael Vinker, Moab Arar, Shlomi Fruchter, Ohad Fried, Daniel Cohen-Or, Dani Lischinski
2022 A* conf
CVPR
Omri Avrahami, Dani Lischinski, Ohad Fried
2022 J jnl
CoRR
Omri Avrahami, Ohad Fried, Dani Lischinski
2022 J jnl
CoRR
David Dadon, Ohad Fried, Yacov Hel-Or
2022 conf
ECCV (2)
Asaf Karnieli, Ohad Fried, Yacov Hel-Or
2022 J jnl
CoRR
Asaf Karnieli, Ohad Fried, Yacov Hel-Or
2022 A* conf
CVPR
Ayush Tewari, Mallikarjun B. R., Xingang Pan, Ohad Fried, Maneesh Agrawala, Christian Theobalt
2022 J jnl
CoRR
Ayush Tewari, Mallikarjun B. R., Xingang Pan, Ohad Fried, Maneesh Agrawala, Christian Theobalt
2022 J jnl
CoRR
Gil Knafo, Ohad Fried
2022 conf
ECCV (23)
Omri Avrahami, Dani Lischinski, Ohad Fried
2022 J jnl
CoRR
Rotem Shalev-Arkushin, Amit Moryossef, Ohad Fried
2022 J jnl
CoRR
Daniel Anderson, Ariel Shamir, Ohad Fried
2022 J jnl
CoRR
Or Nachmias, Ohad Fried, Ariel Shamir
2022 J jnl
CoRR
Daniel Arkushin, Bar Cohen, Shmuel Peleg, Ohad Fried
2022 J jnl
CoRR
Omri Avrahami, Thomas Hayes, Oran Gafni, Sonal Gupta, Yaniv Taigman, Devi Parikh, Dani Lischinski, Ohad Fried, Xi Yin
2022 J jnl
CoRR
Shimon Malnick, Shai Avidan, Ohad Fried
2021 conf
SIGGRAPH Courses
Ayush Tewari, Ohad Fried, Justus Thies, Vincent Sitzmann, Stephen Lombardi, Zexiang Xu, Tomas Simon, Matthias Nießner, Edgar Tretschk, Lingjie Liu, Ben Mildenhall, Pratul P. Srinivasan, Rohit Pandey, Sergio Orts-Escolano, Sean Ryan Fanello, Michelle Guo, Gordon Wetzstein, Jun-Yan Zhu, Christian Theobalt, Maneesh Agrawala, Daniel B. Goldman, Michael Zollhöfer
2021 J jnl
CoRR
Omri Avrahami, Dani Lischinski, Ohad Fried
2021 A* conf
UIST
Jane L., Kevin Y. Zhai, Jose Echevarria, Ohad Fried, Pat Hanrahan, James A. Landay
2021 J jnl
CoRR
Tavi Halperin, Hanit Hakim, Orestis Vantzos, Gershon Hochman, Netai Benaim, Lior Sassy, Michael Kupchik, Ofir Bibi, Ohad Fried
2021 J jnl
ACM Trans. Graph.
Tavi Halperin, Hanit Hakim, Orestis Vantzos, Gershon Hochman, Netai Benaim, Lior Sassy, Michael Kupchik, Ofir Bibi, Ohad Fried
2021 J jnl
CoRR
Omri Avrahami, Dani Lischinski, Ohad Fried
2021 J jnl
ACM Trans. Graph.
Xinwei Yao, Ohad Fried, Kayvon Fatahalian, Maneesh Agrawala
2020 A* conf
CHI
Jane L. E, Ohad Fried, Jingwan Lu, Jianming Zhang, Radomír Mech, Jose Echevarria, Pat Hanrahan, James A. Landay
2020 conf
CVPR Workshops
Shruti Agarwal, Hany Farid, Ohad Fried, Maneesh Agrawala
2020 J jnl
Commun. ACM
Ohad Fried, Jennifer Jacobs, Adam Finkelstein, Maneesh Agrawala
2020 J jnl
CoRR
Xinwei Yao, Ohad Fried, Kayvon Fatahalian, Maneesh Agrawala
2020 conf
ECCV (6)
Roy Or-El, Soumyadip Sengupta, Ohad Fried, Eli Shechtman, Ira Kemelmacher-Shlizerman
2020 J jnl
CoRR
Roy Or-El, Soumyadip Sengupta, Ohad Fried, Eli Shechtman, Ira Kemelmacher-Shlizerman
2020 J jnl
Comput. Graph. Forum
Ayush Tewari, Ohad Fried, Justus Thies, Vincent Sitzmann, Stephen Lombardi, Kalyan Sunkavalli, Ricardo Martin-Brualla, Tomas Simon, Jason M. Saragih, Matthias Nießner, Rohit Pandey, Sean Ryan Fanello, Gordon Wetzstein, Jun-Yan Zhu, Christian Theobalt, Maneesh Agrawala, Eli Shechtman, Dan B. Goldman, Michael Zollhöfer
2020 J jnl
CoRR
Ayush Tewari, Ohad Fried, Justus Thies, Vincent Sitzmann, Stephen Lombardi, Kalyan Sunkavalli, Ricardo Martin-Brualla, Tomas Simon, Jason M. Saragih, Matthias Nießner, Rohit Pandey, Sean Ryan Fanello, Gordon Wetzstein, Jun-Yan Zhu, Christian Theobalt, Maneesh Agrawala, Eli Shechtman, Dan B. Goldman, Michael Zollhöfer
2019 A* conf
UIST
Jane L. E, Ohad Fried, Maneesh Agrawala
2019 conf
EGSR (DL/I)
Ohad Fried, Maneesh Agrawala
2019 J jnl
CoRR
Ohad Fried, Maneesh Agrawala
2019 J jnl
CoRR
Ohad Fried, Ayush Tewari, Michael Zollhöfer, Adam Finkelstein, Eli Shechtman, Dan B. Goldman, Kyle Genova, Zeyu Jin, Christian Theobalt, Maneesh Agrawala
2019 J jnl
ACM Trans. Graph.
Ohad Fried, Ayush Tewari, Michael Zollhöfer, Adam Finkelstein, Eli Shechtman, Dan B. Goldman, Kyle Genova, Zeyu Jin, Christian Theobalt, Maneesh Agrawala
2019 J jnl
Comput. Vis. Media
Dov Danon, Hadar Averbuch-Elor, Ohad Fried, Daniel Cohen-Or
2018 J jnl
CoRR
Dov Danon, Hadar Averbuch-Elor, Ohad Fried, Daniel Cohen-Or
2017 J jnl
Comput. Graph. Forum
Ohad Fried, Shai Avidan, Daniel Cohen-Or
2017
Ohad Fried
2016 J jnl
ACM Trans. Graph.
Ohad Fried, Eli Shechtman, Dan B. Goldman, Adam Finkelstein
2015 A* conf
CVPR
Ohad Fried, Eli Shechtman, Dan B. Goldman, Adam Finkelstein
2015 J jnl
Comput. Graph. Forum
Ohad Fried, Stephen DiVerdi, Maciej Halber, Elena Sizikova, Adam Finkelstein
2015 J jnl
ACM Trans. Graph.
Huiwen Chang, Ohad Fried, Yiming Liu, Stephen DiVerdi, Adam Finkelstein
2014 conf
NIME
Ohad Fried, Zeyu Jin, Reid Oda, Adam Finkelstein
2013 conf
NIME
Ohad Fried, Rebecca Fiebrink
redb/extractors/elf_extractors/elf_imports.py
← Index redb/extractors/elf_extractors/elf_imports.py python
import inspect
from datetime import datetime, timezone
from typing import Any, List, Set

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 ELFImport


class ELFImportExtractor(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_imports = None
        self.elastic_index = self.index_prefix + "-elf_imports"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _get_import_libraries(self, elf) -> List[str]:
        """Extract imported libraries from dynamic section."""
        libraries = []

        try:
            # Get the dynamic section
            dynamic_section = elf.get_section_by_name('.dynamic')
            if not dynamic_section:
                return libraries

            # Extract DT_NEEDED entries (required libraries)
            for tag in dynamic_section.iter_tags():
                if tag.entry.d_tag == 'DT_NEEDED':
                    libraries.append(tag.needed)

        except Exception as e:
            self.log.error(f"Error extracting import libraries: {e}")

        return libraries

    def _get_imported_functions_from_symbols(self, elf) -> Set[str]:
        """Extract imported functions from dynamic symbol table."""
        imported_functions = set()

        try:
            # Get the dynamic symbol table
            dynsym_section = elf.get_section_by_name('.dynsym')
            if not dynsym_section or not hasattr(dynsym_section, 'iter_symbols'):
                return imported_functions

            # Look for undefined symbols (imports)
            for symbol in dynsym_section.iter_symbols():
                # Check if symbol is undefined (imported)
                if (symbol.entry.get('st_shndx', 0) == 'SHN_UNDEF' and
                    symbol.name and
                    symbol.entry.get('st_info', {}).get('bind') in ['STB_GLOBAL', 'STB_WEAK']):
                    imported_functions.add(symbol.name)

        except Exception as e:
            self.log.error(f"Error extracting imported functions from symbols: {e}")

        return imported_functions

    def _get_imported_functions_from_relocations(self, elf) -> Set[str]:
        """Extract imported functions from relocation sections."""
        imported_functions = set()

        try:
            # Look through relocation sections
            for section in elf.iter_sections():
                if hasattr(section, 'iter_relocations'):
                    try:
                        for relocation in section.iter_relocations():
                            # Get symbol associated with relocation
                            if hasattr(relocation, 'symbol') and relocation.symbol:
                                symbol_name = relocation.symbol.name
                                if symbol_name:
                                    imported_functions.add(symbol_name)
                    except Exception as e:
                        self.log.debug(f"Could not process relocations in section {section.name}: {e}")

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

        return imported_functions

    def _get_plt_functions(self, elf) -> Set[str]:
        """Extract functions from PLT (Procedure Linkage Table) sections."""
        plt_functions = set()

        try:
            # Look for PLT-related sections
            plt_sections = ['.plt', '.plt.got', '.plt.sec']

            for section_name in plt_sections:
                section = elf.get_section_by_name(section_name)
                if section:
                    # PLT functions are typically associated with relocations
                    # We'll get them from the relocation analysis
                    pass

        except Exception as e:
            self.log.error(f"Error extracting PLT functions: {e}")

        return plt_functions

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

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

            def extract_data(elf):
                # Extract import libraries
                import_libraries = self._get_import_libraries(elf)

                # Extract imported functions from multiple sources
                imported_functions = set()

                # From dynamic symbols
                symbol_imports = self._get_imported_functions_from_symbols(elf)
                imported_functions.update(symbol_imports)

                # From relocations
                relocation_imports = self._get_imported_functions_from_relocations(elf)
                imported_functions.update(relocation_imports)

                # From PLT
                plt_imports = self._get_plt_functions(elf)
                imported_functions.update(plt_imports)

                # Convert to sorted lists for consistent output
                import_libraries_list = sorted(list(set(import_libraries)))
                import_functions_list = sorted(list(imported_functions))

                # Return ELFImport dataclass
                return ELFImport(
                    elf_imports_total=len(import_functions_list),
                    elf_import_libraries=import_libraries_list,
                    elf_import_functions=import_functions_list,
                )

            if not self._is_elf_file():
                return None

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

            self.elf_imports = result
            return self.elf_imports

        except Exception as e:
            self.log.error(f"Error extracting ELF imports {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_imports
        elif exporter_type == "ClickHouseExporter":
            try:
                if not self.elf_imports:
                    return None

                # Prepare data array
                data = [[
                    self.sha256,
                    self.md5,
                    self.sha1,
                    self.elf_imports.elf_imports_total,
                    self.elf_imports.elf_import_libraries,
                    self.elf_imports.elf_import_functions,
                    datetime.now(timezone.utc)
                ]]

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'elf_imports_total',
                    'elf_import_libraries',
                    'elf_import_functions',
                    'analysis_date'
                ]

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

                if not data:
                    return None

                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_imports"