Venkatesh Akella

91 papers A* 7A 7B 5C 7Misc 6Journal 33Unranked 26
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Kaustav Goswami, Sean Peisert, Venkatesh Akella, Jason Lowe-Power
2025 A* conf
HPCA
Marjan Fariborz, Mahyar Samani, Austin York, S. J. Ben Yoo, Jason Lowe-Power, Venkatesh Akella
2025 conf
MEMSYS
Divyansh Maura, Venkatesh Akella
2025 conf
SC Workshops
William Shaddix, Mahyar Samani, Jason Lowe-Power, Venkatesh Akella
2024 A conf
IPDPS
Mark Hildebrand, Jason Lowe-Power, Venkatesh Akella
2024 J jnl
CoRR
William Shaddix, Mahyar Samani, Marjan Fariborz, S. J. Ben Yoo, Jason Lowe-Power, Venkatesh Akella
2023 C conf
ISC
Mark Hildebrand, Jason Lowe-Power, Venkatesh Akella
2023 Misc conf
PSC
Venkatesh Akella, Marjan Fariborz, Mahyar Samani, S. J. Ben Yoo, Jason Lowe-Power
2022 J jnl
IEEE Comput. Archit. Lett.
Marjan Fariborz, Mahyar Samani, Terry O'Neill, Jason Lowe-Power, S. J. Ben Yoo, Venkatesh Akella
2022 C conf
ISC
Marjan Fariborz, Mahyar Samani, Pouya Fotouhi, Roberto Proietti, Il-Min Yi, Venkatesh Akella, Jason Lowe-Power, Samuel Palermo, S. J. Ben Yoo
2022 conf
SEED
Ayaz Akram, Venkatesh Akella, Sean Peisert, Jason Lowe-Power
2021 B conf
ISPASS
Mark Hildebrand, Julian T. Angeles, Jason Lowe-Power, Venkatesh Akella
2021 C conf
ISC
Pouya Fotouhi, Marjan Fariborz, Roberto Proietti, Jason Lowe-Power, Venkatesh Akella, S. J. Ben Yoo
2021 A conf
IPDPS
Ayaz Akram, Anna Giannakou, Venkatesh Akella, Jason Lowe-Power, Sean Peisert
2020 A* conf
ASPLOS
Mark Hildebrand, Jawad Khan, Sanjeev Trika, Jason Lowe-Power, Venkatesh Akella
2020 J jnl
Integr.
Maxim Shepovalov, Venkatesh Akella
2020 B conf
ICPP
Kramer Straube, Jason Lowe-Power, Christopher Nitta, Matthew K. Farrens, Venkatesh Akella
2020 J jnl
CoRR
Ayaz Akram, Anna Giannakou, Venkatesh Akella, Jason Lowe-Power, Sean Peisert
2020 J jnl
Comput. Electron. Agric.
Andrew Margenot, Terry O'Neill, Rolf Sommer, Venkatesh Akella
2019 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Sree Balaji Girisankar, Mona Nasseri, Jennifer Priscilla, Shu Lin, Venkatesh Akella
2018 conf
HASP@ISCA
Jason Lowe-Power, Venkatesh Akella, Matthew K. Farrens, Samuel T. King, Christopher J. Nitta
2018 Misc conf
HiPC
Kramer Straube, Jason Lowe-Power, Christopher Nitta, Matthew K. Farrens, Venkatesh Akella
2018 conf
ACM Great Lakes Symposium on VLSI
Sandeep Rasoori, Venkatesh Akella
2017 A* conf
HPCA
Paolo Grani, Roberto Proietti, Venkatesh Akella, S. J. Ben Yoo
2017 C conf
ICCD
Kramer Straube, Christopher Nitta, Raj Amirtharajah, Matthew K. Farrens, Venkatesh Akella
2016 conf
ASP-DAC
Mohammad Motamedi, Philipp Gysel, Venkatesh Akella, Soheil Ghiasi
2016 A* conf
ICDM
Huan Zhang, Cho-Jui Hsieh, Venkatesh Akella
2016 conf
MEMSYS
Paolo Grani, Roberto Proietti, Venkatesh Akella, S. J. Ben Yoo
2014 J jnl
IEEE Trans. Computers
Kevin Macdonald, Christopher Nitta, Matthew K. Farrens, Venkatesh Akella
2014 J jnl
IEEE Embed. Syst. Lett.
Frank Maker III, Rajeevan Amirtharajah, Venkatesh Akella
2014 J jnl
IEEE/ACM Trans. Netw.
Paul Congdon, Prasant Mohapatra, Matthew K. Farrens, Venkatesh Akella
2013 J jnl
J. Syst. Archit.
Frank Maker III, Rajeevan Amirtharajah, Venkatesh Akella
2013 conf
OFC/NFOEC
Roberto Proietti, Christopher J. Nitta, Yawei Yin, Venkatesh Akella, S. J. Ben Yoo
2013 A conf
ISLPED
Frank Maker III, Rajeevan Amirtharajah, Venkatesh Akella
2012 J jnl
JOCN
Xiaohui Ye, S. J. Ben Yoo, Venkatesh Akella
2012 A conf
IPDPS
Christopher Nitta, Matthew K. Farrens, Venkatesh Akella
2012 J jnl
IEEE J. Emerg. Sel. Topics Circuits Syst.
Christopher Nitta, Matthew K. Farrens, Venkatesh Akella
2012 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Xiaoheng Chen, Shu Lin, Venkatesh Akella
2011 A* conf
HPCA
Christopher Nitta, Matthew K. Farrens, Venkatesh Akella
2011 J jnl
JOCN
Xiaohui Ye, Roberto Proietti, Yawei Yin, S. J. Ben Yoo, Venkatesh Akella
2011 J jnl
ACM Trans. Reconfigurable Technol. Syst.
Xiaoheng Chen, Venkatesh Akella
2011 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Xiaoheng Chen, Jingyu Kang, Shu Lin, Venkatesh Akella
2011 conf
NOCS
Christopher Nitta, Kevin Macdonald, Matthew K. Farrens, Venkatesh Akella
2011 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Xiaoheng Chen, Jingyu Kang, Shu Lin, Venkatesh Akella
2011 A* conf
MICRO
Christopher Nitta, Matthew K. Farrens, Venkatesh Akella
2010 conf
ANCS
Xiaohui Ye, Yawei Yin, S. J. Ben Yoo, Paul Vincent Mejia, Roberto Proietti, Venkatesh Akella
2010 J jnl
Des. Autom. Embed. Syst.
Eric Jung, Frank Maker III, Tang Lung Cheung, Xin Liu, Venkatesh Akella
2010 J jnl
JOCN
Haijun Yang, Zhong Pan, Venkatesh Akella, Chen-Nee Chuah, S. J. Ben Yoo
2010 conf
NOCS
Paul Vincent Mejia, Rajeevan Amirtharajah, Matthew K. Farrens, Venkatesh Akella
2010 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Xiaoheng Chen, Shu Lin, Venkatesh Akella
2009 A conf
DATE
Xiaoheng Chen, Jingyu Kang, Shu Lin, Venkatesh Akella
2009 conf
Allerton
Xiaoheng Chen, Qin Huang, Shu Lin, Venkatesh Akella
2009 Misc conf
EMSOFT
Tang Lung Cheung, Kari Okamoto, Frank Maker III, Xin Liu, Venkatesh Akella
2008 conf
Conf. Computing Frontiers
John Y. Oliver, Rajeevan Amirtharajah, Venkatesh Akella, Frederic T. Chong
2008 C conf
ICCD
Amit Hadke, Tony Benavides, Rajeevan Amirtharajah, Matthew K. Farrens, Venkatesh Akella
2008 conf
Hot Interconnects
Amit Hadke, Tony Benavides, S. J. Ben Yoo, Rajeevan Amirtharajah, Venkatesh Akella
2007 J jnl
Computer
John Y. Oliver, Rajeevan Amirtharajah, Venkatesh Akella, Roland Geyer, Frederic T. Chong
2007 J jnl
Trans. High Perform. Embed. Archit. Compil.
John Y. Oliver, Diana Franklin, Frederic T. Chong, Venkatesh Akella
2006 Misc conf
HiPC
Ravishankar Rao, Justin Wenck, Diana Franklin, Rajeevan Amirtharajah, Venkatesh Akella
2006 J jnl
J. Embed. Comput.
John Y. Oliver, Ravishankar Rao, Diana Franklin, Frederic T. Chong, Venkatesh Akella
2006 conf
Conf. Computing Frontiers
John Y. Oliver, Ravishankar Rao, Michael Brown, Jennifer Mankin, Diana Franklin, Frederic T. Chong, Venkatesh Akella
2005 conf
ICASSP (2)
Gouri Landge, Mihaela van der Schaar, Venkatesh Akella
2005 conf
Electronic Imaging: Image and Video Communications and Processing
Gouri Landge, Mihaela van der Schaar, Venkatesh Akella
2005 A conf
ICME
Venkatesh Akella, Mihaela van der Schaar, Wen-Fu Kao
2005 conf
ICC
Haijun Yang, Venkatesh Akella, Chen-Nee Chuah, S. J. Ben Yoo
2004 B conf
SPAA
John Y. Oliver, Venkatesh Akella, Frederic T. Chong
2004 B conf
ICIP
Mihaela van der Schaar, Deepak S. Turaga, Venkatesh Akella
2004 A* conf
ISCA
John Y. Oliver, Ravishankar Rao, Paul Sultana, Jedidiah R. Crandall, Erik Czernikowski, Leslie W. Jones IV, Diana Franklin, Venkatesh Akella, Frederic T. Chong
2003 J jnl
IEEE J. Sel. Areas Commun.
S. J. Ben Yoo, Fei Xue, Yash Bansal, Julie Taylor, Zhong Pan, Jing Cao, Min-Yong Jeon, Tony Nady, Gary Goncher, Kirk Boyer, Kari Okamoto, Shin Kamei, Venkatesh Akella
2003 B conf
FPL
John Y. Oliver, Venkatesh Akella
2003 conf
PACS
John Y. Oliver, Ravishankar Rao, Paul Sultana, Jedidiah R. Crandall, Erik Czernikowski, Leslie W. Jones IV, Dean Copsey, Diana Keen, Venkatesh Akella, Frederic T. Chong
2001 conf
ASYNC
Tony Werner, Venkatesh Akella
1999 Misc conf
VLSI Design
Nithya Raghavan, Venkatesh Akella, Smita Bakshi
1998 J jnl
IEEE Trans. Computers
Venkatesh Akella, Nitin H. Vaidya, G. Robert Redinbo
1998 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Dave Johnson, Venkatesh Akella, Bret Stott
1997 J jnl
Computer
Tony Werner, Venkatesh Akella
1996 conf
ASYNC
Tony Werner, Venkatesh Akella
1996 conf
FTCS
Venkatesh Akella, Nitin H. Vaidya, G. Robert Redinbo
1995 C conf
ICCD
Bret Stott, Dave Johnson, Venkatesh Akella
1994 conf
ASYNC
Prabhakar Kudva, Venkatesh Akella
1994 J jnl
Int. J. Comput. Simul.
Venkatesh Akella, Ganesh Gopalakrishnan
1994 J jnl
J. VLSI Signal Process.
Ganesh Gopalakrishnan, Venkatesh Akella
1994 C conf
ICCD
Prabhakar Kudva, Ganesh Gopalakrishnan, Erik Brunvand, Venkatesh Akella
1994 J jnl
IEEE Trans. Software Eng.
Venkatesh Akella, Ganesh Gopalakrishnan
1994 conf
HLSS
Prabhakar Kudva, Venkatesh Akella
1993 conf
VLSI
Ganesh Gopalakrishnan, Venkatesh Akella
1992 Misc conf
VLSI Design
Venkatesh Akella, Ganesh Gopalakrishnan
1992 A conf
ICCAD
Venkatesh Akella, Ganesh Gopalakrishnan
1992 J jnl
Microprocess. Microsystems
Ganesh Gopalakrishnan, Venkatesh Akella
1989 J jnl
Integr.
Ganesh Gopalakrishnan, Richard M. Fujimoto, Venkatesh Akella, Narayana Mani
1989 conf
Automatic Verification Methods for Finite State Systems
Ganesh Gopalakrishnan, Narayana Mani, Venkatesh Akella
redb/extractors/macho_extractors/macho_dylibs.py
← Index redb/extractors/macho_extractors/macho_dylibs.py python
import hashlib
import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.macho_extractor import MachOExtractor
from redb.models.dataclasses import MachODylib


class MachODylibExtractor(MachOExtractor):

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

    def tag(self):
        return Tag.MACHO_DYLIB.value

    def _extract_dylibs(self):
        """Extract dynamic library information from all architectures in the MachO binary."""
        self.log.debug(inspect.currentframe().f_code.co_name)
        dylibs = []

        if not self.macho:
            return dylibs

        try:
            # Get architectures using new API (already parsed in base class)
            architectures = self.macho.get_architectures()
            if not architectures:
                return dylibs

            # Process each architecture
            for arch_name in architectures:
                # Get dylib commands using new API with architecture parameter
                dylib_commands = self.macho.get_dylib_commands(arch=arch_name)
                if not dylib_commands:
                    continue

                # Extract dylib commands for this architecture
                for dylib_cmd in dylib_commands:
                    try:
                        dylib_name = dylib_cmd.get('dylib_name', 'Unknown')
                        if isinstance(dylib_name, bytes):
                            dylib_name = dylib_name.decode('utf-8', errors='replace')

                        # Create dylib dataclass with architecture info
                        macho_dylib = MachODylib(
                            dylib_name=dylib_name,
                            dylib_timestamp=dylib_cmd.get('dylib_timestamp', 0),
                            dylib_current_version=dylib_cmd.get('dylib_current_version', 0),
                            dylib_compat_version=dylib_cmd.get('dylib_compat_version', 0),
                        )
                        # Add architecture info to the dylib
                        macho_dylib.architecture = arch_name
                        dylibs.append(macho_dylib)

                    except Exception as e:
                        self.log.warning(
                            f'Unable to process dylib "{dylib_cmd.get("dylib_name", "Unknown")}" for architecture {arch_name} in {self.hash.sha256}: {e}'
                        )
                        continue

            return dylibs

        except Exception as e:
            self.log.error(f"Error extracting MachO dylibs: {e}")
            return dylibs

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            dylibs = self._extract_dylibs()
            return dylibs
        except Exception as e:
            self.log.error(f"Error extracting MachO dylibs: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            if not self.macho:
                return None

            # Get architectures (macho is already parsed in base class)
            try:
                architectures = self.macho.get_architectures()
                is_fat = len(architectures) > 1
            except Exception as e:
                self.log.error(f"Could not get architectures: {e}")
                return None

            data = []
            current_time = datetime.now(timezone.utc)

            # Loop through each architecture (1 for single, multiple for FAT)
            for arch_name in architectures:
                # Get architecture-specific sha256
                try:
                    arch_general_info = self.macho.get_general_info(arch=arch_name)
                    arch_header_raw = self.macho.get_macho_header(arch=arch_name)
                    arch_sha256 = arch_general_info.get('SHA256', self.sha256)
                    arch_cputype_raw = arch_header_raw.get('cputype', 0) if arch_header_raw else 0
                except Exception as e:
                    self.log.warning(f"Could not get arch-specific data for {arch_name}: {e}")
                    arch_sha256 = self.sha256
                    arch_cputype_raw = 0

                # Get dylib commands for this architecture
                dylib_commands = self.macho.get_dylib_commands(arch=arch_name)
                if not dylib_commands:
                    continue

                # Process each dylib for this architecture
                for dylib_cmd in dylib_commands:
                    try:
                        dylib_name = dylib_cmd.get('dylib_name', 'Unknown')
                        if isinstance(dylib_name, bytes):
                            dylib_name = dylib_name.decode('utf-8', errors='replace')

                        data.append([
                            arch_sha256,                          # sha256 (architecture-specific)
                            dylib_name,                           # dylib_name
                            dylib_cmd.get('dylib_timestamp', 0), # dylib_timestamp
                            dylib_cmd.get('dylib_current_version', 0), # dylib_current_version
                            dylib_cmd.get('dylib_compat_version', 0),  # dylib_compat_version
                            current_time,                         # analysis_date
                        ])
                    except Exception as e:
                        self.log.warning(
                            f'Unable to process dylib "{dylib_cmd.get("dylib_name", "Unknown")}" for architecture {arch_name}: {e}'
                        )
                        continue

            column_names = [
                'sha256',
                'dylib_name', 'dylib_timestamp', 'dylib_current_version',
                'dylib_compat_version', 'analysis_date'
            ]

            if not data:
                return None

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

            return (data, column_names, column_type_names)

        return None

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