Hanqi Zhuang

111 papers A* 14A 2B 2Misc 5Journal 70Unranked 18
YearRankTypeTitle / Venue / Authors
2026 J jnl
PLoS Comput. Biol.
Richard Acs, Ali Ibrahim, Hanqi Zhuang, Laurent M. Chérubin
2026 J jnl
Biomed. Signal Process. Control.
Tuan Vo, Ali K. Ibrahim, Hanqi Zhuang, Chiron Bang
2025 J jnl
CoRR
Paulina DeVito, Akhil Vallala, Sean Mcmahon, Yaroslav Hinda, Benjamin Thaw, Hanqi Zhuang, Hari Kalva
2024 J jnl
Multim. Tools Appl.
Mostapha Alsaidi, Muhammad Tanveer Jan, Ahmed Altaher, Hanqi Zhuang, Xingquan Zhu
2023 J jnl
IEEE Access
Matthew Acs, Richard Acs, Charles Briandi, Eyan Eubanks, Oneeb Rehman, Hanqi Zhuang
2022 J jnl
Frontiers Artif. Intell.
Ali Muhamed Ali, Hanqi Zhuang, Ali K. Ibrahim, Justin L. Wang, Laurent M. Chérubin
2022 J jnl
Sensors
Rajesh Baliram Singh, Hanqi Zhuang
2022 J jnl
IEEE Access
Yu Huang, Yufei Tang, Xingquan Zhu, Hanqi Zhuang, Laurent M. Chérubin
2021 J jnl
Sensors
Lauran R. Brewster, Ali K. Ibrahim, Breanna C. DeGroot, Thomas J. Ostendorf, Hanqi Zhuang, Laurent M. Chérubin, Matthew J. Ajemian
2021 conf
CCNC
Paul Gorday, Nurgün Erdöl, Hanqi Zhuang
2021 J jnl
Sensors
Rajesh Baliram Singh, Hanqi Zhuang, Jeet Kiran Pawani
2021 J jnl
CoRR
Yu Huang, Yufei Tang, Xingquan Zhu, Min Shi, Ali Muhamed Ali, Hanqi Zhuang, Laurent M. Chérubin
2021 J jnl
Frontiers Artif. Intell.
Yu Huang, Yufei Tang, Hanqi Zhuang, James H. VanZwieten, Laurent M. Chérubin
2021 J jnl
CoRR
Yu Huang, James Li, Min Shi, Hanqi Zhuang, Xingquan Zhu, Laurent M. Chérubin, James H. VanZwieten, Yufei Tang
2020 conf
UEMCON
Paul Gorday, Nurgün Erdöl, Hanqi Zhuang
2020 J jnl
IEEE Open J. Commun. Soc.
Paul Gorday, Nurgün Erdöl, Hanqi Zhuang
2020 conf
EMBC
Ali J. Abidalkareem, Moaed A. Abd, Ali K. Ibrahim, Hanqi Zhuang, Ali Salem Altaher, Ali Muhamed Ali
2020 conf
CCWC
Paul Gorday, Nurgün Erdöl, Hanqi Zhuang
2020 J jnl
Int. J. Biom.
Ali Muhamed Ali, Hanqi Zhuang, Ali K. Ibrahim
2020 J jnl
CoRR
Ali K. Ibrahim, Hanqi Zhuang, Laurent M. Chérubin, Nurgun Erdol, Gregory O. Corry-Crowe, Ali Muhamed Ali
2020 J jnl
CoRR
Yu Huang, Yufei Tang, Hanqi Zhuang, James H. VanZwieten, Laurent M. Chérubin
2019 Misc conf
ICASSP
Paul Gorday, Nurgün Erdöl, Hanqi Zhuang
2018 conf
ISSPIT
Justin L. Wang, Anthony Y. Li, Michelle Huang, Ali K. Ibrahim, Hanqi Zhuang, Ali Muhamed Ali
2018 conf
ISSPIT
Ali K. Ibrahim, Hanqi Zhuang, Ali Muhamed Ali, Nurgun Erdol
2018 conf
UEMCON
Paul Gorday, Nurgün Erdöl, Hanqi Zhuang
2018 conf
ISSPIT
Ali Muhamed Ali, Hanqi Zhuang, Ali K. Ibrahim, Justin L. Wang
2017 J jnl
Int. J. Biom.
Ali Muhamed Ali, Hanqi Zhuang, Ali K. Ibrahim
2017 conf
EUSIPCO
Ali K. Ibrahim, Hanqi Zhuang, Nurgun Erdol, Ali Muhamed Ali
2016 J jnl
CoRR
Mahdi Esfahanian, Hanqi Zhuang, Nurgun Erdol, Edmund Gerstein
2015 conf
EUSIPCO
Mahdi Esfahanian, Hanqi Zhuang, Nurgun Erdol, Edmund Gerstein
2014 Misc conf
ICASSP
Mahdi Esfahanian, Hanqi Zhuang, Nurgun Erdol
2012 J jnl
Int. J. Knowl. Based Intell. Eng. Syst.
Lin Huang, Chenxi Yu, Hanqi Zhuang, Salvatore D. Morgera
2011 J jnl
Int. J. Biom.
Xin Guan, Hanqi Zhuang
2011 J jnl
Int. J. Bioinform. Res. Appl.
Mirjana Pavlovic, Michelle Cavallo, Anna Kats, Alex Kotlarchyk, Hanqi Zhuang, Yehuda Shoenfeld
2011 J jnl
J. Comput. Methods Sci. Eng.
Alex Kotlarchyk, Taghi M. Khoshgoftaar, Mirjana Pavlovic, Hanqi Zhuang, Abhijit S. Pandya
2010 J jnl
IEEE J. Sel. Areas Commun.
Xin Wang, Di Wang, Hanqi Zhuang, Salvatore D. Morgera
2009 J jnl
Int. J. Biom.
Lin Huang, Hanqi Zhuang, Salvatore D. Morgera
2009 J jnl
Int. J. Intell. Syst. Technol. Appl.
Lin Huang, Hanqi Zhuang, Salvatore D. Morgera
2009 B conf
GLOBECOM
Xin Wang, Di Wang, Hanqi Zhuang, Salvatore D. Morgera
2009 J jnl
IEEE Trans. Veh. Technol.
Xin Wang, Irena Li, Di Wang, Hanqi Zhuang, Salvatore D. Morgera
2009 Misc conf
CISS
Irena Li, Xin Wang, Hanqi Zhuang, Salvatore D. Morgera
2008 J jnl
Intell. Autom. Soft Comput.
Songwut Wongsoontorn, Hanqi Zhuang
2008 Misc conf
CISS
Xin Wang, Di Wang, Irena Li, Hanqi Zhuang, Salvatore D. Morgera
2007 conf
Artificial Intelligence and Pattern Recognition
Xin Guan, Hanqi Zhuang
2007 conf
Artificial Intelligence and Pattern Recognition
Lin Huang, Hanqi Zhuang, Salvatore D. Morgera
2007 J jnl
Comput. Educ.
Hanqi Zhuang, Salvatore D. Morgera
2005 B conf
SMC
Hanqi Zhuang, Songwut Wongsoontorn
2005 J jnl
IEEE Trans. Control. Syst. Technol.
Ying Bai, Hanqi Zhuang, Zvi S. Roth
2005 J jnl
IEEE Trans. Instrum. Meas.
Ying Bai, Hanqi Zhuang
2004 conf
SMC (6)
Ying Bai, Hanqi Zhuang
2004 Misc conf
ICIG
Lin Huang, Hanqi Zhuang, Salvatore D. Morgera, Wenjing Zhang
2004 conf
RAM
Yin Bai, Hanqi Zhuang
2004 J jnl
IEEE Robotics Autom. Mag.
Yan Meng, Hanqi Zhuang
2002 J jnl
Intell. Autom. Soft Comput.
Hanqi Zhuang, Yingli Wang
2001 J jnl
IEEE Trans. Syst. Man Cybern. Part B
Hanqi Zhuang, Xiaomin Wu
2001 J jnl
Int. J. Robotics Res.
Yan Meng, Hanqi Zhuang
2001 A* conf
ICRA
Hanqi Zhuang, Yan Meng
1999 A* conf
ICRA
Hanqi Zhuang, Shui H. Motaghedi, Zvi S. Roth
1998 J jnl
IEEE Trans. Syst. Man Cybern. Part A
Xangdong Xie, Raghavan Sudhakar, Hanqi Zhuang
1998 J jnl
IEEE Trans. Syst. Man Cybern. Part B
Hanqi Zhuang
1998 J jnl
IEEE Trans. Syst. Man Cybern. Part A
Hanqi Zhuang, A. E. Melchinger
1998 J jnl
J. Field Robotics
Hanqi Zhuang, Jiahua Yan, Oren Masory
1997 J jnl
Int. J. Robotics Res.
Hanqi Zhuang
1997 A* conf
ICRA
Hanqi Zhuang, Yingli Wang
1997 A* conf
ICRA
Hanqi Zhuang, Andreas Melchinger
1997 A* conf
ICRA
Hanqi Zhuang
1997 J jnl
J. Field Robotics
Hanqi Zhuang, Jie Wu, Weizhen Huang
1997 J jnl
IEEE Trans. Robotics Autom.
Hanqi Zhuang
1997 J jnl
IEEE Trans. Syst. Man Cybern. Part B
Hanqi Zhuang, Raghavan Sudhakar
1996 A* conf
ICRA
Hanqi Zhuang, Raghavan Sudhakar, Zvi S. Roth
1996 J jnl
IEEE Robotics Autom. Mag.
Hanqi Zhuang, Wen-Chiang Wu, Zvi S. Roth
1996 J jnl
IEEE Trans. Robotics Autom.
Hanqi Zhuang, Wen-Chiang Wu
1996 J jnl
Adv. Robotics
Oren Masory, Jian Wang, Hanqi Zhuang
1996 A* conf
ICRA
Hanqi Zhuang, Jie Wu, Weizhen Huang
1996 A* conf
ICRA
Hanqi Zhuang, Lixin Liu
1995 J jnl
Int. J. Robotics Res.
Hanqi Zhuang
1995 J jnl
Intell. Autom. Soft Comput.
Hanqi Zhuang, Zvi S. Roth
1995 J jnl
IEEE Trans. Robotics Autom.
Hanqi Zhuang, Radu Horaud
1995 J jnl
IEEE Trans. Robotics Autom.
Hanqi Zhuang, Zvi S. Roth
1995 J jnl
Robotics Auton. Syst.
Hanqi Zhuang
1995 conf
IROS (1)
Hanqi Zhuang, Wen-Chiang Wu, Zvi S. Roth
1995 conf
IROS (2)
Hanqi Zhuang, Oren Masory, Jiahua Yan
1995 J jnl
Int. J. Robotics Res.
Hanqi Zhuang, Zvi S. Roth
1995 J jnl
IEEE Trans. Syst. Man Cybern.
Xangdong Xie, Raghavan Sudhakar, Hanqi Zhuang
1995 J jnl
IEEE Trans. Robotics Autom.
Hanqi Zhuang, Kuanchih Wang, Zvi S. Roth
1994 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Hanqi Zhuang, Zhihua Qu
1994 A* conf
ICRA
Hanqi Zhuang
1994 J jnl
Robotics Auton. Syst.
Hanqi Zhuang, Raghavan Sudhakar, Jen-yu Shieh
1994 A* conf
ICRA
Hanqi Zhuang, Zvi S. Roth
1994 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Jen-yu Shieh, Hanqi Zhuang, Raghavan Sudhakar
1994 J jnl
Pattern Recognit.
Xangdong Xie, Raghavan Sudhakar, Hanqi Zhuang
1994 A* conf
ICRA
Hanqi Zhuang, Kuanchih Wang, Zvi S. Roth
1994 J jnl
J. Field Robotics
Hanqi Zhuang, Zvi S. Roth, Kuanchih Wang
1994 J jnl
IEEE Trans. Robotics Autom.
Hanqi Zhuang, Zvi S. Roth, Raghavan Sudhakar
1993 J jnl
IEEE Trans. Robotics Autom.
Hanqi Zhuang, Zvi S. Roth
1993 J jnl
IEEE Trans. Syst. Man Cybern.
Hanqi Zhuang, Yiu Cheung Shiu
1993 J jnl
Pattern Recognit.
Xangdong Xie, Raghavan Sudhakar, Hanqi Zhuang
1993 J jnl
J. Field Robotics
Hanqi Zhuang, Zvi S. Roth
1993 conf
ICRA (1)
Oren Masory, Jian Wang, Hanqi Zhuang
1993 J jnl
IEEE Trans. Robotics Autom.
Hanqi Zhuang, Zvi S. Roth, Fumio Hamano
1993 conf
ICRA (2)
Zvi S. Roth, Hanqi Zhuang, Luke Wang
1992 A conf
IROS
Hanqi Zhuang, Yiu Cheung Shiu
1992 J jnl
IEEE Trans. Robotics Autom.
Hanqi Zhuang, Zvi S. Roth, Fumio Hamano
1992 J jnl
IEEE Trans. Robotics Autom.
Homer H. Chen, Hanqi Zhuang, Zvi S. Roth
1992 J jnl
J. Field Robotics
Hanqi Zhuang, Zvi S. Roth, Raghavan Sudhakar
1992 J jnl
Robotics Auton. Syst.
Hanqi Zhuang, Baiyuan Li, Zvi S. Roth, Xangdong Xie
1992 A conf
IROS
Hanqi Zhuang, Zvi S. Roth, Raghavan Sudhakar
1991 A* conf
ICRA
Hanqi Zhuang, Zvi S. Roth
1991 J jnl
IEEE Trans. Robotics Autom.
Hanqi Zhuang, Zvi S. Roth, Yiu Cheung Shiu, Shaheen Ahmad
1990 A* conf
ICRA
Hanqi Zhuang, Zvi S. Roth, Fumio Hamano
1989 A* conf
ICRA
Hanqi Zhuang, Fumio Hamano, Zvi S. Roth
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"