Ifeoma Nwogu

87 papers A* 4A 7B 21C 3Misc 2Journal 26Unranked 23
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Lu Dong, Xiao Wang, Mark Frank, Srirangaraj Setlur, Venu Govindaraju, Ifeoma Nwogu
2026 J jnl
CoRR
Xiao Wang, Lu Dong, Ifeoma Nwogu, Srirangaraj Setlur, Venu Govindaraju
2026 J jnl
CoRR
Xiao Wang, Lu Dong, Jingchen Sun, Ifeoma Nwogu, Srirangaraj Setlur, Venu Govindaraju
2025 A conf
IROS
Xiao Wang, Lu Dong, Sahana Rangasrinivasan, Ifeoma Nwogu, Srirangaraj Setlur, Venugopal Govindaraju
2025 J jnl
CoRR
Xiao Wang, Lu Dong, Sahana Rangasrinivasan, Ifeoma Nwogu, Srirangaraj Setlur, Venugopal Govindaraju
2025 Misc conf
ICASSP
Enjamamul Hoq, Ifeoma Nwogu
2025 A conf
INTERSPEECH
Enjamamul Hoq, Nikhil Gupta, Danielle Omondi, Ifeoma Nwogu
2025 J jnl
CoRR
Lipisha Chaudhary, Trisha Mittal, Subhadra Gopalakrishnan, Ifeoma Nwogu, Jaclyn Pytlarz
2025 C conf
ISM
Lipisha Chaudhary, Trisha Mittal, Subhadra Gopalakrishnan, Ifeoma Nwogu, Jaclyn Pytlarz
2024 B conf
FG
Fei Xu, Lipisha Chaudhary, Lu Dong, Srirangaraj Setlur, Venu Govindaraju, Ifeoma Nwogu
2024 conf
ICPR (21)
Lipisha Chaudhary, Fei Xu, Ifeoma Nwogu
2024 J jnl
CoRR
Lipisha Chaudhary, Fei Xu, Ifeoma Nwogu
2024 B conf
FG
Mason Lary, Matthew Klawonn, Daniel S. Messinger, Ifeoma Nwogu
2024 conf
ECCV Workshops (15)
Lu Dong, Xiao Wang, Srirangaraj Setlur, Venu Govindaraju, Ifeoma Nwogu
2024 J jnl
CoRR
Lu Dong, Xiao Wang, Srirangaraj Setlur, Venu Govindaraju, Ifeoma Nwogu
2024 B conf
FG
Lu Dong, Lipisha Chaudhary, Fei Xu, Xiao Wang, Mason Lary, Ifeoma Nwogu
2024 J jnl
CoRR
Lu Dong, Lipisha Chaudhary, Fei Xu, Xiao Wang, Mason Lary, Ifeoma Nwogu
2024 J jnl
CoRR
Mengyi Shan, Lu Dong, Yutao Han, Yuan Yao, Tao Liu, Ifeoma Nwogu, Guo-Jun Qi, Mitch Hill
2024 conf
ECCV (65)
Mengyi Shan, Lu Dong, Yutao Han, Yuan Yao, Tao Liu, Ifeoma Nwogu, Guo-Jun Qi, Mitch Hill
2024 J jnl
CoRR
Enjamamul Hoq, Ifeoma Nwogu
2024 conf
EMNLP (Findings)
Lu Dong, Xiao Wang, Ifeoma Nwogu
2023 J jnl
Trans. Mach. Learn. Res.
Timothy Zee, Alexander Ororbia, Ankur Mali, Ifeoma Nwogu
2023 A* conf
IJCAI
Ifeoma Nwogu, Roshan L. Peiris, Karthik Dantu, Ruchi Gamta, Emma Asonye
2023 B conf
FG
Ajeeta Khatri, Zachary Butler, Ifeoma Nwogu
2023 A* conf
ACM Multimedia
Yuanhao Zhai, Mingzhen Huang, Tianyu Luan, Lu Dong, Ifeoma Nwogu, Siwei Lyu, David S. Doermann, Junsong Yuan
2023 J jnl
CoRR
Yuanhao Zhai, Mingzhen Huang, Tianyu Luan, Lu Dong, Ifeoma Nwogu, Siwei Lyu, David S. Doermann, Junsong Yuan
2023 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Lipisha Chaudhary, Tejaswini Ananthanarayana, Enjamamul Hoq, Ifeoma Nwogu
2023 B conf
FG
Tejaswini Ananthanarayana, Lipisha Chaudhary, Ifeoma Nwogu
2022 J jnl
CoRR
Renke Wang, Ifeoma Nwogu
2022 J jnl
CoRR
Timothy Zee, Alexander G. Ororbia II, Ankur Mali, Ifeoma Nwogu
2022 conf
ICPR Workshops (1)
Bhavin Jethra, Rahul Golhar, Ifeoma Nwogu
2022 B conf
SMC
Nicholas Wilkins, Michael Johnson, Ifeoma Nwogu
2022 J jnl
CoRR
Tejaswini Ananthanarayana, Lipisha Chaudhary, Ifeoma Nwogu
2022 B conf
ICPR
Timothy Zee, Manohar Lakshmana, Ifeoma Nwogu
2021 B conf
FG
Srijan Sharma, Kantha Girish Gangadhara, Fei Xu, Anne Solbu Slowe, Mark G. Frank, Ifeoma Nwogu
2021 J jnl
ACM Trans. Access. Comput.
Tejaswini Ananthanarayana, Priyanshu Srivastava, Akash Chintha, Akhil Santha, Brian P. Landy, Joseph Panaro, Andre Webster, Nikunj R. Kotecha, Shagan Sah, Thomastine Sarchet, Raymond W. Ptucha, Ifeoma Nwogu
2021 B conf
FG
Tejaswini Ananthanarayana, Nikunj R. Kotecha, Priyanshu Srivastava, Lipisha Chaudhary, Nicholas Wilkins, Ifeoma Nwogu
2021 A conf
Interspeech
Tejaswini Ananthanarayana, Lipisha Chaudhary, Ifeoma Nwogu
2021 conf
WACV (Workshops)
William Carver, Ifeoma Nwogu
2021 B conf
FG
Renke Wang, Amy Yeo-jin Ahn, Daniel S. Messinger, Ifeoma Nwogu
2020 B conf
FG
Vidhathri Kota, Geeta Madhav Gali, Ifeoma Nwogu
2020 B conf
SMC
Nicholas Wilkins, Ifeoma Nwogu
2020 B conf
ICPR
Manasi Gund, Abhiram Ravi Bharadwaj, Ifeoma Nwogu
2020 A conf
INTERSPEECH
Nicholas Wilkins, Max Cordes Galbraith, Ifeoma Nwogu
2020 J jnl
CoRR
Nicholas Wilkins, Beck Cordes Galbraith, Ifeoma Nwogu
2020 conf
FIRE (Working Notes)
Tharindu Ranasinghe, Sarthak Gupte, Marcos Zampieri, Ifeoma Nwogu
2020 J jnl
CoRR
Tharindu Ranasinghe, Sarthak Gupte, Marcos Zampieri, Ifeoma Nwogu
2019 conf
ICCV Workshops
Timothy Zee, Geeta Gali, Ifeoma Nwogu
2019 J jnl
CoRR
Nicholas Wilkins, Michael Johnson, Ifeoma Nwogu
2018 B conf
FG
Ifeoma Nwogu, Bryan Passino, Reynold Bailey
2018 B conf
SMC
Vatsala Singh, Ifeoma Nwogu
2018 J jnl
CoRR
Nicholas Watkins, Ifeoma Nwogu
2018 conf
PerCom Workshops
Nse Obot, Laura OrMalley, Ifeoma Nwogu, Qi Yu, Weishi Shi, Xuan Guo
2018 conf
BTAS
Wei-yao Ku, Nicholas Conn, David A. Borkholder, Ifeoma Nwogu
2018 conf
PerCom Workshops
Yancarlos Diaz, Cecilia O. Alm, Ifeoma Nwogu, Reynold Bailey
2017 conf
AAAI Workshops
Ifeoma Nwogu, Smriti Jha, Lora Cavuoto, Heamchand Subryan, Jeanne Langan
2017 J jnl
IEEE Trans. Inf. Forensics Secur.
Neeti Pokhriyal, Kshitij Tayal, Ifeoma Nwogu, Venu Govindaraju
2017 ch.
Gesture Recognition
Manavender R. Malgireddy, Ifeoma Nwogu, Venu Govindaraju
2017 conf
ICAIP
Yingbo Zhou, Ifeoma Nwogu
2016 conf
Wireless Health
Feng Lin, Jerry Antony Ajay, Jeanne Langan, Lora Cavuoto, Ifeoma Nwogu, Heamchand Subryan, Wenyao Xu
2016 B conf
ICPR
Rathin Radhakrishnan Nair, Bhargava Urala Kota, Ifeoma Nwogu, Venu Govindaraju
2016 B conf
DAS
Rathin Radhakrishnan Nair, Nishant Sankaran, Ifeoma Nwogu, Venu Govindaraju
2015 A conf
ICDAR
Rathin Radhakrishnan Nair, Nishant Sankaran, Ifeoma Nwogu, Venu Govindaraju
2015 conf
CASE
G. Ganesh Sundarkumar, Vadlamani Ravi, Ifeoma Nwogu, Venu Govindaraju
2014 J jnl
CoRR
Ifeoma Nwogu, Goker Erdogan, Ilker Yildirim, Robert A. Jacobs
2014 conf
NIPS
Devansh Arpit, Ifeoma Nwogu, Venu Govindaraju
2014 J jnl
CoRR
Devansh Arpit, Ifeoma Nwogu, Venu Govindaraju
2014 B conf
SMC
Ifeoma Nwogu, Yingbo Zhou
2014 B conf
IJCB
Neeti Pokhriyal, Ifeoma Nwogu, Venugopal Govindaraju
2013 J jnl
IEEE Trans. Image Process.
Yingbo Zhou, Ifeoma Nwogu, Venu Govindaraju
2013 J jnl
J. Mach. Learn. Res.
Manavender R. Malgireddy, Ifeoma Nwogu, Venu Govindaraju
2012 conf
CVPR Workshops
Manavender R. Malgireddy, Ifeoma Nwogu, Venu Govindaraju
2011 C conf
IWCIA
Manavender R. Malgireddy, Ifeoma Nwogu, Subarna Ghosh, Venu Govindaraju
2011 conf
ICCV Workshops
Manavender R. Malgireddy, Ifeoma Nwogu, Venu Govindaraju
2011 conf
ICCV Workshops
Ifeoma Nwogu, Yingbo Zhou, Christopher Brown
2011 A* conf
AAAI
Ifeoma Nwogu, Yingbo Zhou, Christopher Brown
2011 Misc conf
SAC
Nisha Bhaskaran, Ifeoma Nwogu, Mark G. Frank, Venu Govindaraju
2011 conf
IWCIA Special Track on Applications
Yingbo Zhou, Ifeoma Nwogu, Venu Govindaraju
2011 B conf
FG
Nisha Bhaskaran, Ifeoma Nwogu, Mark G. Frank, Venu Govindaraju
2010 conf
CVPR Workshops
Ifeoma Nwogu, Venu Govindaraju, Christopher Brown
2008 A* conf
CVPR
Ifeoma Nwogu, Jason J. Corso
2008 B conf
Image Processing
Ifeoma Nwogu, Vipin Chaudhary
2008 conf
MICCAI (1)
Ifeoma Nwogu, Jason J. Corso
2008 C conf
IWCIA
Ifeoma Nwogu, Jason J. Corso
2007 conf
ICIP (5)
Ifeoma Nwogu, Liana M. Lorigo
2007 A conf
ICDAR
Ifeoma Nwogu, Zhixin Shi, Venu Govindaraju
2005 A conf
ICDAR
Ifeoma Nwogu, Gyeonghwan Kim
redb/extractors/elf_extractors/elf_exports.py
← Index redb/extractors/elf_extractors/elf_exports.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 ELFExport


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

    def _get_exported_functions_from_symbols(self, elf) -> Set[str]:
        """Extract exported functions from symbol tables."""
        exported_functions = set()

        try:
            # Check both static (.symtab) and dynamic (.dynsym) symbol tables
            symbol_sections = ['.symtab', '.dynsym']

            for section_name in symbol_sections:
                section = elf.get_section_by_name(section_name)
                if not section or not hasattr(section, 'iter_symbols'):
                    continue

                for symbol in section.iter_symbols():
                    # Check if symbol is exported (defined and globally visible)
                    if (symbol.name and
                        symbol.entry.get('st_shndx', 0) != 'SHN_UNDEF' and  # Not undefined
                        symbol.entry.get('st_info', {}).get('bind') in ['STB_GLOBAL', 'STB_WEAK'] and  # Global or weak binding
                        symbol.entry.get('st_info', {}).get('type') in ['STT_FUNC', 'STT_OBJECT']):  # Function or object

                        # Additional checks for meaningful exports
                        if (symbol.entry.get('st_value', 0) > 0 or  # Has a value
                            symbol.entry.get('st_size', 0) > 0):    # Has a size
                            exported_functions.add(symbol.name)

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

        return exported_functions

    def _get_exported_functions_from_dynamic_section(self, elf) -> Set[str]:
        """Extract exported functions information from dynamic section."""
        exported_functions = set()

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

            # Look for version definition sections that might indicate exports
            # This is complementary to symbol table analysis
            for tag in dynamic_section.iter_tags():
                if tag.entry.d_tag == 'DT_SONAME':
                    # If it has a SONAME, it's likely a shared library with exports
                    # The actual exports are still found in symbol tables
                    pass

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

        return exported_functions

    def _filter_meaningful_exports(self, exports: Set[str]) -> Set[str]:
        """Filter out compiler-generated and internal symbols to focus on meaningful exports."""
        filtered_exports = set()

        # Common patterns to exclude (compiler-generated, internal symbols)
        exclude_patterns = [
            '_start',
            '_init',
            '_fini',
            '__libc_',
            '__gmon_start__',
            '_IO_stdin_used',
            '__data_start',
            '__bss_start',
            '_edata',
            '_end',
            '__TMC_END__',
            '_ITM_deregisterTMCloneTable',
            '_ITM_registerTMCloneTable',
            '__cxa_finalize',
            '__gxx_personality_v0',
            '_Jv_RegisterClasses'
        ]

        for export in exports:
            # Skip empty or very short names
            if not export or len(export) < 2:
                continue

            # Skip symbols that match exclude patterns
            skip = False
            for pattern in exclude_patterns:
                if export.startswith(pattern):
                    skip = True
                    break

            # Skip symbols that look like internal mangled names (but keep reasonable C++ names)
            if export.startswith('_Z') and len(export) > 50:  # Very long mangled names
                skip = True

            if not skip:
                filtered_exports.add(export)

        return filtered_exports

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

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

            def extract_data(elf):
                # Extract exported functions from multiple sources
                exported_functions = set()

                # From symbol tables (primary source)
                symbol_exports = self._get_exported_functions_from_symbols(elf)
                exported_functions.update(symbol_exports)

                # From dynamic section (supplementary)
                dynamic_exports = self._get_exported_functions_from_dynamic_section(elf)
                exported_functions.update(dynamic_exports)

                # Filter out compiler-generated and internal symbols
                meaningful_exports = self._filter_meaningful_exports(exported_functions)

                # Convert to sorted list for consistent output
                export_functions_list = sorted(list(meaningful_exports))

                # Return ELFExport dataclass
                return ELFExport(
                    elf_exports_total=len(export_functions_list),
                    elf_export_functions=export_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_exports = result
            return self.elf_exports

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

                # Prepare data array
                data = [[
                    self.sha256,
                    self.md5,
                    self.sha1,
                    self.elf_exports.elf_exports_total,
                    self.elf_exports.elf_export_functions,
                    datetime.now(timezone.utc)
                ]]

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'elf_exports_total',
                    'elf_export_functions',
                    'analysis_date'
                ]

                if not data:
                    return None

                column_type_names = [
                    'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                    'UInt32',
                    'Array(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_exports"